@blade-hq/agent-react 2612.0.0-beta.5 → 2612.0.0-beta.7

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 (1150) hide show
  1. package/README.md +8 -0
  2. package/dist/chat/ChatPanel.d.ts +1 -3
  3. package/dist/chat/LightComposer.d.ts +1 -1
  4. package/dist/chat/LiteMessageList.d.ts +1 -1
  5. package/dist/chat/ai-elements/reasoning.d.ts +4 -4
  6. package/dist/chat/customization.d.ts +1 -5
  7. package/dist/chat/index.d.ts +1 -4
  8. package/dist/chat/lib/citations.d.ts +5 -22
  9. package/dist/chat/runtime/actions.d.ts +1 -1
  10. package/dist/chat/runtime/input-cache-reset.d.ts +1 -1
  11. package/dist/chat/runtime/input-history-storage.d.ts +2 -0
  12. package/dist/chat/runtime/input-services.d.ts +0 -6
  13. package/dist/{chunk-T5WGKZN4.js → chunk-67GHJQK5.js} +724 -575
  14. package/dist/chunk-67GHJQK5.js.map +1 -0
  15. package/dist/{chunk-7IPINZHT.js → chunk-DPDXGYGM.js} +2 -2
  16. package/dist/{chunk-XULCQP3Q.js → chunk-MERN5XEM.js} +636 -704
  17. package/dist/chunk-MERN5XEM.js.map +1 -0
  18. package/dist/components/ChatInput.d.ts +3 -1
  19. package/dist/components/plugin-connector.d.ts +1 -0
  20. package/dist/embed/entry.d.ts +1 -0
  21. package/dist/host.d.ts +0 -4
  22. package/dist/index.js +2 -2
  23. package/dist/internal.js +3 -3
  24. package/dist/internal.js.map +1 -1
  25. package/dist/lib/agent-computer-command.d.ts +1 -3
  26. package/dist/rich-input/ChatInput.d.ts +1 -1
  27. package/dist/rich-input/FileCompletionMenu.d.ts +5 -9
  28. package/dist/rich-input/SkillStatusBar.d.ts +2 -4
  29. package/dist/rich-input/extensions/plugin-mention.d.ts +15 -0
  30. package/dist/rich-input/extensions/skill-mention.d.ts +0 -1
  31. package/dist/rich-input/index.d.ts +4 -2
  32. package/dist/rich-input/lib/composer-content.d.ts +7 -22
  33. package/dist/rich-input/lib/input-history-document.d.ts +3 -0
  34. package/dist/rich-input/lib/plugin-suggestions.d.ts +7 -0
  35. package/dist/rich-input/lib/reference-candidates.d.ts +27 -0
  36. package/dist/rich-input/services.d.ts +2 -3
  37. package/dist/rich-input/use-input-history.d.ts +8 -10
  38. package/dist/rich-input/use-reference-candidates.d.ts +8 -0
  39. package/dist/rich-input.js +491 -472
  40. package/dist/rich-input.js.map +1 -1
  41. package/dist/style.full.css +1 -1
  42. package/node_modules/@floating-ui/core/LICENSE +20 -0
  43. package/node_modules/@floating-ui/core/README.md +4 -0
  44. package/node_modules/@floating-ui/core/dist/floating-ui.core.browser.min.mjs +1 -0
  45. package/node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs +1184 -0
  46. package/node_modules/@floating-ui/core/dist/floating-ui.core.d.mts +531 -0
  47. package/node_modules/@floating-ui/core/dist/floating-ui.core.d.ts +531 -0
  48. package/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js +1058 -0
  49. package/node_modules/@floating-ui/core/dist/floating-ui.core.mjs +1058 -0
  50. package/node_modules/@floating-ui/core/dist/floating-ui.core.umd.js +1203 -0
  51. package/node_modules/@floating-ui/core/dist/floating-ui.core.umd.min.js +1 -0
  52. package/node_modules/@floating-ui/core/package.json +63 -0
  53. package/node_modules/@floating-ui/dom/LICENSE +20 -0
  54. package/node_modules/@floating-ui/dom/README.md +4 -0
  55. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs +1 -0
  56. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs +956 -0
  57. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.d.mts +358 -0
  58. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.d.ts +358 -0
  59. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js +781 -0
  60. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +781 -0
  61. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.umd.js +975 -0
  62. package/node_modules/@floating-ui/dom/dist/floating-ui.dom.umd.min.js +1 -0
  63. package/node_modules/@floating-ui/dom/package.json +71 -0
  64. package/node_modules/@floating-ui/utils/LICENSE +20 -0
  65. package/node_modules/@floating-ui/utils/README.md +4 -0
  66. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.d.mts +103 -0
  67. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.d.ts +103 -0
  68. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.d.mts +47 -0
  69. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.d.ts +47 -0
  70. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.esm.js +165 -0
  71. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs +165 -0
  72. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.umd.js +192 -0
  73. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.umd.min.js +1 -0
  74. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.esm.js +136 -0
  75. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs +136 -0
  76. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.umd.js +167 -0
  77. package/node_modules/@floating-ui/utils/dist/floating-ui.utils.umd.min.js +1 -0
  78. package/node_modules/@floating-ui/utils/dom/floating-ui.utils.dom.d.ts +47 -0
  79. package/node_modules/@floating-ui/utils/dom/floating-ui.utils.dom.esm.js +165 -0
  80. package/node_modules/@floating-ui/utils/dom/floating-ui.utils.dom.umd.js +192 -0
  81. package/node_modules/@floating-ui/utils/dom/package.json +6 -0
  82. package/node_modules/@floating-ui/utils/package.json +70 -0
  83. package/node_modules/@radix-ui/primitive/LICENSE +21 -0
  84. package/node_modules/@radix-ui/primitive/README.md +3 -0
  85. package/node_modules/@radix-ui/primitive/dist/index.d.mts +20 -0
  86. package/node_modules/@radix-ui/primitive/dist/index.d.ts +20 -0
  87. package/node_modules/@radix-ui/primitive/dist/index.js +76 -0
  88. package/node_modules/@radix-ui/primitive/dist/index.js.map +7 -0
  89. package/node_modules/@radix-ui/primitive/dist/index.mjs +53 -0
  90. package/node_modules/@radix-ui/primitive/dist/index.mjs.map +7 -0
  91. package/node_modules/@radix-ui/primitive/package.json +47 -0
  92. package/node_modules/@radix-ui/react-collapsible/LICENSE +21 -0
  93. package/node_modules/@radix-ui/react-collapsible/README.md +3 -0
  94. package/node_modules/@radix-ui/react-collapsible/dist/index.d.mts +33 -0
  95. package/node_modules/@radix-ui/react-collapsible/dist/index.d.ts +33 -0
  96. package/node_modules/@radix-ui/react-collapsible/dist/index.js +187 -0
  97. package/node_modules/@radix-ui/react-collapsible/dist/index.js.map +7 -0
  98. package/node_modules/@radix-ui/react-collapsible/dist/index.mjs +155 -0
  99. package/node_modules/@radix-ui/react-collapsible/dist/index.mjs.map +7 -0
  100. package/node_modules/@radix-ui/react-collapsible/package.json +75 -0
  101. package/node_modules/@radix-ui/react-compose-refs/README.md +13 -0
  102. package/node_modules/@radix-ui/react-compose-refs/dist/index.d.mts +15 -0
  103. package/node_modules/@radix-ui/react-compose-refs/dist/index.d.ts +15 -0
  104. package/node_modules/@radix-ui/react-compose-refs/dist/index.js +74 -0
  105. package/node_modules/@radix-ui/react-compose-refs/dist/index.js.map +7 -0
  106. package/node_modules/@radix-ui/react-compose-refs/dist/index.mjs +41 -0
  107. package/node_modules/@radix-ui/react-compose-refs/dist/index.mjs.map +7 -0
  108. package/node_modules/@radix-ui/react-compose-refs/package.json +75 -0
  109. package/node_modules/@radix-ui/react-context/README.md +13 -0
  110. package/node_modules/@radix-ui/react-context/dist/index.d.mts +21 -0
  111. package/node_modules/@radix-ui/react-context/dist/index.d.ts +21 -0
  112. package/node_modules/@radix-ui/react-context/dist/index.js +114 -0
  113. package/node_modules/@radix-ui/react-context/dist/index.js.map +7 -0
  114. package/node_modules/@radix-ui/react-context/dist/index.mjs +81 -0
  115. package/node_modules/@radix-ui/react-context/dist/index.mjs.map +7 -0
  116. package/node_modules/@radix-ui/react-context/package.json +75 -0
  117. package/node_modules/@radix-ui/react-id/README.md +13 -0
  118. package/node_modules/@radix-ui/react-id/dist/index.d.mts +3 -0
  119. package/node_modules/@radix-ui/react-id/dist/index.d.ts +3 -0
  120. package/node_modules/@radix-ui/react-id/dist/index.js +49 -0
  121. package/node_modules/@radix-ui/react-id/dist/index.js.map +7 -0
  122. package/node_modules/@radix-ui/react-id/dist/index.mjs +16 -0
  123. package/node_modules/@radix-ui/react-id/dist/index.mjs.map +7 -0
  124. package/node_modules/@radix-ui/react-id/package.json +78 -0
  125. package/node_modules/@radix-ui/react-presence/LICENSE +21 -0
  126. package/node_modules/@radix-ui/react-presence/README.md +3 -0
  127. package/node_modules/@radix-ui/react-presence/dist/index.d.mts +12 -0
  128. package/node_modules/@radix-ui/react-presence/dist/index.d.ts +12 -0
  129. package/node_modules/@radix-ui/react-presence/dist/index.js +171 -0
  130. package/node_modules/@radix-ui/react-presence/dist/index.js.map +7 -0
  131. package/node_modules/@radix-ui/react-presence/dist/index.mjs +139 -0
  132. package/node_modules/@radix-ui/react-presence/dist/index.mjs.map +7 -0
  133. package/node_modules/@radix-ui/react-presence/package.json +69 -0
  134. package/node_modules/@radix-ui/react-primitive/LICENSE +21 -0
  135. package/node_modules/@radix-ui/react-primitive/README.md +3 -0
  136. package/node_modules/@radix-ui/react-primitive/dist/index.d.mts +52 -0
  137. package/node_modules/@radix-ui/react-primitive/dist/index.d.ts +52 -0
  138. package/node_modules/@radix-ui/react-primitive/dist/index.js +80 -0
  139. package/node_modules/@radix-ui/react-primitive/dist/index.js.map +7 -0
  140. package/node_modules/@radix-ui/react-primitive/dist/index.mjs +47 -0
  141. package/node_modules/@radix-ui/react-primitive/dist/index.mjs.map +7 -0
  142. package/node_modules/@radix-ui/react-primitive/package.json +68 -0
  143. package/node_modules/@radix-ui/react-slot/LICENSE +21 -0
  144. package/node_modules/@radix-ui/react-slot/README.md +3 -0
  145. package/node_modules/@radix-ui/react-slot/dist/index.d.mts +17 -0
  146. package/node_modules/@radix-ui/react-slot/dist/index.d.ts +17 -0
  147. package/node_modules/@radix-ui/react-slot/dist/index.js +138 -0
  148. package/node_modules/@radix-ui/react-slot/dist/index.js.map +7 -0
  149. package/node_modules/@radix-ui/react-slot/dist/index.mjs +105 -0
  150. package/node_modules/@radix-ui/react-slot/dist/index.mjs.map +7 -0
  151. package/node_modules/@radix-ui/react-slot/package.json +63 -0
  152. package/node_modules/@radix-ui/react-use-controllable-state/LICENSE +21 -0
  153. package/node_modules/@radix-ui/react-use-controllable-state/README.md +3 -0
  154. package/node_modules/@radix-ui/react-use-controllable-state/dist/index.d.mts +40 -0
  155. package/node_modules/@radix-ui/react-use-controllable-state/dist/index.d.ts +40 -0
  156. package/node_modules/@radix-ui/react-use-controllable-state/dist/index.js +169 -0
  157. package/node_modules/@radix-ui/react-use-controllable-state/dist/index.js.map +7 -0
  158. package/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs +136 -0
  159. package/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs.map +7 -0
  160. package/node_modules/@radix-ui/react-use-controllable-state/package.json +64 -0
  161. package/node_modules/@radix-ui/react-use-effect-event/LICENSE +21 -0
  162. package/node_modules/@radix-ui/react-use-effect-event/README.md +5 -0
  163. package/node_modules/@radix-ui/react-use-effect-event/dist/index.d.mts +8 -0
  164. package/node_modules/@radix-ui/react-use-effect-event/dist/index.d.ts +8 -0
  165. package/node_modules/@radix-ui/react-use-effect-event/dist/index.js +60 -0
  166. package/node_modules/@radix-ui/react-use-effect-event/dist/index.js.map +7 -0
  167. package/node_modules/@radix-ui/react-use-effect-event/dist/index.mjs +27 -0
  168. package/node_modules/@radix-ui/react-use-effect-event/dist/index.mjs.map +7 -0
  169. package/node_modules/@radix-ui/react-use-effect-event/package.json +65 -0
  170. package/node_modules/@radix-ui/react-use-effect-event/src/index.ts +1 -0
  171. package/node_modules/@radix-ui/react-use-effect-event/src/use-effect-event.tsx +36 -0
  172. package/node_modules/@radix-ui/react-use-layout-effect/README.md +13 -0
  173. package/node_modules/@radix-ui/react-use-layout-effect/dist/index.d.mts +12 -0
  174. package/node_modules/@radix-ui/react-use-layout-effect/dist/index.d.ts +12 -0
  175. package/node_modules/@radix-ui/react-use-layout-effect/dist/index.js +41 -0
  176. package/node_modules/@radix-ui/react-use-layout-effect/dist/index.js.map +7 -0
  177. package/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs +8 -0
  178. package/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs.map +7 -0
  179. package/node_modules/@radix-ui/react-use-layout-effect/package.json +75 -0
  180. package/node_modules/@remirror/core-constants/LICENSE +21 -0
  181. package/node_modules/@remirror/core-constants/dist/_tsup-dts-rollup.d.cts +612 -0
  182. package/node_modules/@remirror/core-constants/dist/_tsup-dts-rollup.d.ts +612 -0
  183. package/node_modules/@remirror/core-constants/dist/remirror-core-constants.cjs +314 -0
  184. package/node_modules/@remirror/core-constants/dist/remirror-core-constants.d.cts +20 -0
  185. package/node_modules/@remirror/core-constants/dist/remirror-core-constants.d.ts +20 -0
  186. package/node_modules/@remirror/core-constants/dist/remirror-core-constants.js +269 -0
  187. package/node_modules/@remirror/core-constants/dist-types/core-constants.d.ts +431 -0
  188. package/node_modules/@remirror/core-constants/dist-types/error-constants.d.ts +119 -0
  189. package/node_modules/@remirror/core-constants/dist-types/index.d.ts +2 -0
  190. package/node_modules/@remirror/core-constants/dist-types/tsconfig.tsbuildinfo +1 -0
  191. package/node_modules/@remirror/core-constants/package.json +45 -0
  192. package/node_modules/@remirror/core-constants/readme.md +17 -0
  193. package/node_modules/@tiptap/core/LICENSE.md +21 -0
  194. package/node_modules/@tiptap/core/README.md +18 -0
  195. package/node_modules/@tiptap/core/dist/index.cjs +7126 -0
  196. package/node_modules/@tiptap/core/dist/index.cjs.map +1 -0
  197. package/node_modules/@tiptap/core/dist/index.d.cts +4954 -0
  198. package/node_modules/@tiptap/core/dist/index.d.ts +4954 -0
  199. package/node_modules/@tiptap/core/dist/index.js +6992 -0
  200. package/node_modules/@tiptap/core/dist/index.js.map +1 -0
  201. package/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.cjs +56 -0
  202. package/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.cjs.map +1 -0
  203. package/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.d.cts +23 -0
  204. package/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.d.ts +23 -0
  205. package/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js +26 -0
  206. package/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js.map +1 -0
  207. package/node_modules/@tiptap/core/jsx-dev-runtime/index.cjs +1 -0
  208. package/node_modules/@tiptap/core/jsx-dev-runtime/index.d.cts +1 -0
  209. package/node_modules/@tiptap/core/jsx-dev-runtime/index.d.ts +1 -0
  210. package/node_modules/@tiptap/core/jsx-dev-runtime/index.js +1 -0
  211. package/node_modules/@tiptap/core/jsx-runtime/index.cjs +1 -0
  212. package/node_modules/@tiptap/core/jsx-runtime/index.d.cts +1 -0
  213. package/node_modules/@tiptap/core/jsx-runtime/index.d.ts +1 -0
  214. package/node_modules/@tiptap/core/jsx-runtime/index.js +1 -0
  215. package/node_modules/@tiptap/core/package.json +70 -0
  216. package/node_modules/@tiptap/core/src/CommandManager.ts +138 -0
  217. package/node_modules/@tiptap/core/src/Editor.ts +806 -0
  218. package/node_modules/@tiptap/core/src/EventEmitter.ts +58 -0
  219. package/node_modules/@tiptap/core/src/Extendable.ts +602 -0
  220. package/node_modules/@tiptap/core/src/Extension.ts +55 -0
  221. package/node_modules/@tiptap/core/src/ExtensionManager.ts +440 -0
  222. package/node_modules/@tiptap/core/src/InputRule.ts +290 -0
  223. package/node_modules/@tiptap/core/src/Mark.ts +211 -0
  224. package/node_modules/@tiptap/core/src/MarkView.ts +122 -0
  225. package/node_modules/@tiptap/core/src/Node.ts +377 -0
  226. package/node_modules/@tiptap/core/src/NodePos.ts +257 -0
  227. package/node_modules/@tiptap/core/src/NodeView.ts +339 -0
  228. package/node_modules/@tiptap/core/src/PasteRule.ts +373 -0
  229. package/node_modules/@tiptap/core/src/Tracker.ts +36 -0
  230. package/node_modules/@tiptap/core/src/__tests__/transformPastedHTML.test.ts +575 -0
  231. package/node_modules/@tiptap/core/src/commands/blur.ts +29 -0
  232. package/node_modules/@tiptap/core/src/commands/clearContent.ts +25 -0
  233. package/node_modules/@tiptap/core/src/commands/clearNodes.ts +57 -0
  234. package/node_modules/@tiptap/core/src/commands/command.ts +22 -0
  235. package/node_modules/@tiptap/core/src/commands/createParagraphNear.ts +21 -0
  236. package/node_modules/@tiptap/core/src/commands/cut.ts +36 -0
  237. package/node_modules/@tiptap/core/src/commands/deleteCurrentNode.ts +44 -0
  238. package/node_modules/@tiptap/core/src/commands/deleteNode.ts +41 -0
  239. package/node_modules/@tiptap/core/src/commands/deleteRange.ts +26 -0
  240. package/node_modules/@tiptap/core/src/commands/deleteSelection.ts +21 -0
  241. package/node_modules/@tiptap/core/src/commands/enter.ts +19 -0
  242. package/node_modules/@tiptap/core/src/commands/exitCode.ts +21 -0
  243. package/node_modules/@tiptap/core/src/commands/extendMarkRange.ts +51 -0
  244. package/node_modules/@tiptap/core/src/commands/first.ts +26 -0
  245. package/node_modules/@tiptap/core/src/commands/focus.ts +108 -0
  246. package/node_modules/@tiptap/core/src/commands/forEach.ts +24 -0
  247. package/node_modules/@tiptap/core/src/commands/index.ts +57 -0
  248. package/node_modules/@tiptap/core/src/commands/insertContent.ts +46 -0
  249. package/node_modules/@tiptap/core/src/commands/insertContentAt.ts +212 -0
  250. package/node_modules/@tiptap/core/src/commands/join.ts +69 -0
  251. package/node_modules/@tiptap/core/src/commands/joinItemBackward.ts +37 -0
  252. package/node_modules/@tiptap/core/src/commands/joinItemForward.ts +37 -0
  253. package/node_modules/@tiptap/core/src/commands/joinTextblockBackward.ts +20 -0
  254. package/node_modules/@tiptap/core/src/commands/joinTextblockForward.ts +20 -0
  255. package/node_modules/@tiptap/core/src/commands/keyboardShortcut.ts +100 -0
  256. package/node_modules/@tiptap/core/src/commands/lift.ts +34 -0
  257. package/node_modules/@tiptap/core/src/commands/liftEmptyBlock.ts +21 -0
  258. package/node_modules/@tiptap/core/src/commands/liftListItem.ts +26 -0
  259. package/node_modules/@tiptap/core/src/commands/newlineInCode.ts +21 -0
  260. package/node_modules/@tiptap/core/src/commands/resetAttributes.ts +73 -0
  261. package/node_modules/@tiptap/core/src/commands/scrollIntoView.ts +23 -0
  262. package/node_modules/@tiptap/core/src/commands/selectAll.ts +27 -0
  263. package/node_modules/@tiptap/core/src/commands/selectNodeBackward.ts +21 -0
  264. package/node_modules/@tiptap/core/src/commands/selectNodeForward.ts +21 -0
  265. package/node_modules/@tiptap/core/src/commands/selectParentNode.ts +21 -0
  266. package/node_modules/@tiptap/core/src/commands/selectTextblockEnd.ts +23 -0
  267. package/node_modules/@tiptap/core/src/commands/selectTextblockStart.ts +23 -0
  268. package/node_modules/@tiptap/core/src/commands/setContent.ts +76 -0
  269. package/node_modules/@tiptap/core/src/commands/setMark.ts +118 -0
  270. package/node_modules/@tiptap/core/src/commands/setMeta.ts +25 -0
  271. package/node_modules/@tiptap/core/src/commands/setNode.ts +57 -0
  272. package/node_modules/@tiptap/core/src/commands/setNodeSelection.ts +31 -0
  273. package/node_modules/@tiptap/core/src/commands/setTextDirection.ts +51 -0
  274. package/node_modules/@tiptap/core/src/commands/setTextSelection.ts +35 -0
  275. package/node_modules/@tiptap/core/src/commands/sinkListItem.ts +26 -0
  276. package/node_modules/@tiptap/core/src/commands/splitBlock.ts +115 -0
  277. package/node_modules/@tiptap/core/src/commands/splitListItem.ts +149 -0
  278. package/node_modules/@tiptap/core/src/commands/toggleList.ts +159 -0
  279. package/node_modules/@tiptap/core/src/commands/toggleMark.ts +51 -0
  280. package/node_modules/@tiptap/core/src/commands/toggleNode.ts +47 -0
  281. package/node_modules/@tiptap/core/src/commands/toggleWrap.ts +32 -0
  282. package/node_modules/@tiptap/core/src/commands/undoInputRule.ts +49 -0
  283. package/node_modules/@tiptap/core/src/commands/unsetAllMarks.ts +32 -0
  284. package/node_modules/@tiptap/core/src/commands/unsetMark.ts +65 -0
  285. package/node_modules/@tiptap/core/src/commands/unsetTextDirection.ts +51 -0
  286. package/node_modules/@tiptap/core/src/commands/updateAttributes.ts +150 -0
  287. package/node_modules/@tiptap/core/src/commands/wrapIn.ts +27 -0
  288. package/node_modules/@tiptap/core/src/commands/wrapInList.ts +27 -0
  289. package/node_modules/@tiptap/core/src/extensions/clipboardTextSerializer.ts +44 -0
  290. package/node_modules/@tiptap/core/src/extensions/commands.ts +14 -0
  291. package/node_modules/@tiptap/core/src/extensions/delete.ts +89 -0
  292. package/node_modules/@tiptap/core/src/extensions/drop.ts +26 -0
  293. package/node_modules/@tiptap/core/src/extensions/editable.ts +18 -0
  294. package/node_modules/@tiptap/core/src/extensions/focusEvents.ts +41 -0
  295. package/node_modules/@tiptap/core/src/extensions/index.ts +10 -0
  296. package/node_modules/@tiptap/core/src/extensions/keymap.ts +160 -0
  297. package/node_modules/@tiptap/core/src/extensions/paste.ts +25 -0
  298. package/node_modules/@tiptap/core/src/extensions/tabindex.ts +18 -0
  299. package/node_modules/@tiptap/core/src/extensions/textDirection.ts +86 -0
  300. package/node_modules/@tiptap/core/src/helpers/MappablePosition.ts +66 -0
  301. package/node_modules/@tiptap/core/src/helpers/combineTransactionSteps.ts +21 -0
  302. package/node_modules/@tiptap/core/src/helpers/createChainableState.ts +39 -0
  303. package/node_modules/@tiptap/core/src/helpers/createDocument.ts +24 -0
  304. package/node_modules/@tiptap/core/src/helpers/createNodeFromContent.ts +119 -0
  305. package/node_modules/@tiptap/core/src/helpers/defaultBlockAt.ts +18 -0
  306. package/node_modules/@tiptap/core/src/helpers/findChildren.ts +24 -0
  307. package/node_modules/@tiptap/core/src/helpers/findChildrenInRange.ts +36 -0
  308. package/node_modules/@tiptap/core/src/helpers/findParentNode.ts +18 -0
  309. package/node_modules/@tiptap/core/src/helpers/findParentNodeClosestToPos.ts +37 -0
  310. package/node_modules/@tiptap/core/src/helpers/flattenExtensions.ts +30 -0
  311. package/node_modules/@tiptap/core/src/helpers/generateHTML.ts +18 -0
  312. package/node_modules/@tiptap/core/src/helpers/generateJSON.ts +18 -0
  313. package/node_modules/@tiptap/core/src/helpers/generateText.ts +34 -0
  314. package/node_modules/@tiptap/core/src/helpers/getAttributes.ts +29 -0
  315. package/node_modules/@tiptap/core/src/helpers/getAttributesFromExtensions.ts +122 -0
  316. package/node_modules/@tiptap/core/src/helpers/getChangedRanges.ts +85 -0
  317. package/node_modules/@tiptap/core/src/helpers/getDebugJSON.ts +54 -0
  318. package/node_modules/@tiptap/core/src/helpers/getExtensionField.ts +32 -0
  319. package/node_modules/@tiptap/core/src/helpers/getHTMLFromFragment.ts +13 -0
  320. package/node_modules/@tiptap/core/src/helpers/getMarkAttributes.ts +30 -0
  321. package/node_modules/@tiptap/core/src/helpers/getMarkRange.ts +90 -0
  322. package/node_modules/@tiptap/core/src/helpers/getMarkType.ts +13 -0
  323. package/node_modules/@tiptap/core/src/helpers/getMarksBetween.ts +44 -0
  324. package/node_modules/@tiptap/core/src/helpers/getNodeAtPosition.ts +29 -0
  325. package/node_modules/@tiptap/core/src/helpers/getNodeAttributes.ts +22 -0
  326. package/node_modules/@tiptap/core/src/helpers/getNodeType.ts +13 -0
  327. package/node_modules/@tiptap/core/src/helpers/getRenderedAttributes.ts +23 -0
  328. package/node_modules/@tiptap/core/src/helpers/getSchema.ts +12 -0
  329. package/node_modules/@tiptap/core/src/helpers/getSchemaByResolvedExtensions.ts +183 -0
  330. package/node_modules/@tiptap/core/src/helpers/getSchemaTypeByName.ts +11 -0
  331. package/node_modules/@tiptap/core/src/helpers/getSchemaTypeNameByName.ts +19 -0
  332. package/node_modules/@tiptap/core/src/helpers/getSplittedAttributes.ts +28 -0
  333. package/node_modules/@tiptap/core/src/helpers/getText.ts +28 -0
  334. package/node_modules/@tiptap/core/src/helpers/getTextBetween.ts +52 -0
  335. package/node_modules/@tiptap/core/src/helpers/getTextContentFromNodes.ts +29 -0
  336. package/node_modules/@tiptap/core/src/helpers/getTextSerializersFromSchema.ts +16 -0
  337. package/node_modules/@tiptap/core/src/helpers/index.ts +55 -0
  338. package/node_modules/@tiptap/core/src/helpers/injectExtensionAttributesToParseRule.ts +47 -0
  339. package/node_modules/@tiptap/core/src/helpers/isActive.ts +23 -0
  340. package/node_modules/@tiptap/core/src/helpers/isAtEndOfNode.ts +29 -0
  341. package/node_modules/@tiptap/core/src/helpers/isAtStartOfNode.ts +11 -0
  342. package/node_modules/@tiptap/core/src/helpers/isExtensionRulesEnabled.ts +13 -0
  343. package/node_modules/@tiptap/core/src/helpers/isList.ts +27 -0
  344. package/node_modules/@tiptap/core/src/helpers/isMarkActive.ts +94 -0
  345. package/node_modules/@tiptap/core/src/helpers/isNodeActive.ts +51 -0
  346. package/node_modules/@tiptap/core/src/helpers/isNodeEmpty.ts +62 -0
  347. package/node_modules/@tiptap/core/src/helpers/isNodeSelection.ts +5 -0
  348. package/node_modules/@tiptap/core/src/helpers/isTextSelection.ts +5 -0
  349. package/node_modules/@tiptap/core/src/helpers/posToDOMRect.ts +35 -0
  350. package/node_modules/@tiptap/core/src/helpers/resolveExtensions.ts +25 -0
  351. package/node_modules/@tiptap/core/src/helpers/resolveFocusPosition.ts +31 -0
  352. package/node_modules/@tiptap/core/src/helpers/rewriteUnknownContent.ts +149 -0
  353. package/node_modules/@tiptap/core/src/helpers/selectionToInsertionEnd.ts +29 -0
  354. package/node_modules/@tiptap/core/src/helpers/sortExtensions.ts +26 -0
  355. package/node_modules/@tiptap/core/src/helpers/splitExtensions.ts +16 -0
  356. package/node_modules/@tiptap/core/src/index.ts +28 -0
  357. package/node_modules/@tiptap/core/src/inputRules/index.ts +5 -0
  358. package/node_modules/@tiptap/core/src/inputRules/markInputRule.ts +68 -0
  359. package/node_modules/@tiptap/core/src/inputRules/nodeInputRule.ts +73 -0
  360. package/node_modules/@tiptap/core/src/inputRules/textInputRule.ts +35 -0
  361. package/node_modules/@tiptap/core/src/inputRules/textblockTypeInputRule.ts +35 -0
  362. package/node_modules/@tiptap/core/src/inputRules/wrappingInputRule.ts +82 -0
  363. package/node_modules/@tiptap/core/src/jsx-runtime.ts +65 -0
  364. package/node_modules/@tiptap/core/src/lib/ResizableNodeView.ts +1060 -0
  365. package/node_modules/@tiptap/core/src/lib/index.ts +1 -0
  366. package/node_modules/@tiptap/core/src/pasteRules/index.ts +3 -0
  367. package/node_modules/@tiptap/core/src/pasteRules/markPasteRule.ts +71 -0
  368. package/node_modules/@tiptap/core/src/pasteRules/nodePasteRule.ts +44 -0
  369. package/node_modules/@tiptap/core/src/pasteRules/textPasteRule.ts +34 -0
  370. package/node_modules/@tiptap/core/src/style.ts +71 -0
  371. package/node_modules/@tiptap/core/src/types.ts +1058 -0
  372. package/node_modules/@tiptap/core/src/utilities/callOrReturn.ts +21 -0
  373. package/node_modules/@tiptap/core/src/utilities/canInsertNode.ts +30 -0
  374. package/node_modules/@tiptap/core/src/utilities/createStyleTag.ts +21 -0
  375. package/node_modules/@tiptap/core/src/utilities/deleteProps.ts +16 -0
  376. package/node_modules/@tiptap/core/src/utilities/elementFromString.ts +27 -0
  377. package/node_modules/@tiptap/core/src/utilities/escapeForRegEx.ts +4 -0
  378. package/node_modules/@tiptap/core/src/utilities/findDuplicates.ts +8 -0
  379. package/node_modules/@tiptap/core/src/utilities/fromString.ts +19 -0
  380. package/node_modules/@tiptap/core/src/utilities/index.ts +26 -0
  381. package/node_modules/@tiptap/core/src/utilities/isAndroid.ts +3 -0
  382. package/node_modules/@tiptap/core/src/utilities/isEmptyObject.ts +3 -0
  383. package/node_modules/@tiptap/core/src/utilities/isFirefox.ts +11 -0
  384. package/node_modules/@tiptap/core/src/utilities/isFunction.ts +4 -0
  385. package/node_modules/@tiptap/core/src/utilities/isMacOS.ts +3 -0
  386. package/node_modules/@tiptap/core/src/utilities/isNumber.ts +3 -0
  387. package/node_modules/@tiptap/core/src/utilities/isPlainObject.ts +13 -0
  388. package/node_modules/@tiptap/core/src/utilities/isRegExp.ts +3 -0
  389. package/node_modules/@tiptap/core/src/utilities/isSafari.ts +11 -0
  390. package/node_modules/@tiptap/core/src/utilities/isString.ts +3 -0
  391. package/node_modules/@tiptap/core/src/utilities/isiOS.ts +7 -0
  392. package/node_modules/@tiptap/core/src/utilities/markdown/attributeUtils.ts +130 -0
  393. package/node_modules/@tiptap/core/src/utilities/markdown/createAtomBlockMarkdownSpec.ts +141 -0
  394. package/node_modules/@tiptap/core/src/utilities/markdown/createBlockMarkdownSpec.ts +225 -0
  395. package/node_modules/@tiptap/core/src/utilities/markdown/createInlineMarkdownSpec.ts +282 -0
  396. package/node_modules/@tiptap/core/src/utilities/markdown/index.ts +13 -0
  397. package/node_modules/@tiptap/core/src/utilities/markdown/parseIndentedBlocks.ts +194 -0
  398. package/node_modules/@tiptap/core/src/utilities/markdown/renderNestedMarkdownContent.ts +96 -0
  399. package/node_modules/@tiptap/core/src/utilities/mergeAttributes.ts +109 -0
  400. package/node_modules/@tiptap/core/src/utilities/mergeDeep.ts +17 -0
  401. package/node_modules/@tiptap/core/src/utilities/minMax.ts +3 -0
  402. package/node_modules/@tiptap/core/src/utilities/objectIncludes.ts +30 -0
  403. package/node_modules/@tiptap/core/src/utilities/removeDuplicates.ts +13 -0
  404. package/node_modules/@tiptap/extension-bubble-menu/LICENSE.md +21 -0
  405. package/node_modules/@tiptap/extension-bubble-menu/README.md +18 -0
  406. package/node_modules/@tiptap/extension-bubble-menu/dist/index.cjs +462 -0
  407. package/node_modules/@tiptap/extension-bubble-menu/dist/index.cjs.map +1 -0
  408. package/node_modules/@tiptap/extension-bubble-menu/dist/index.d.cts +169 -0
  409. package/node_modules/@tiptap/extension-bubble-menu/dist/index.d.ts +169 -0
  410. package/node_modules/@tiptap/extension-bubble-menu/dist/index.js +443 -0
  411. package/node_modules/@tiptap/extension-bubble-menu/dist/index.js.map +1 -0
  412. package/node_modules/@tiptap/extension-bubble-menu/package.json +54 -0
  413. package/node_modules/@tiptap/extension-bubble-menu/src/bubble-menu-plugin.ts +650 -0
  414. package/node_modules/@tiptap/extension-bubble-menu/src/bubble-menu.ts +50 -0
  415. package/node_modules/@tiptap/extension-bubble-menu/src/index.ts +6 -0
  416. package/node_modules/@tiptap/extension-floating-menu/LICENSE.md +21 -0
  417. package/node_modules/@tiptap/extension-floating-menu/README.md +18 -0
  418. package/node_modules/@tiptap/extension-floating-menu/dist/index.cjs +380 -0
  419. package/node_modules/@tiptap/extension-floating-menu/dist/index.cjs.map +1 -0
  420. package/node_modules/@tiptap/extension-floating-menu/dist/index.d.cts +179 -0
  421. package/node_modules/@tiptap/extension-floating-menu/dist/index.d.ts +179 -0
  422. package/node_modules/@tiptap/extension-floating-menu/dist/index.js +361 -0
  423. package/node_modules/@tiptap/extension-floating-menu/dist/index.js.map +1 -0
  424. package/node_modules/@tiptap/extension-floating-menu/package.json +53 -0
  425. package/node_modules/@tiptap/extension-floating-menu/src/floating-menu-plugin.ts +525 -0
  426. package/node_modules/@tiptap/extension-floating-menu/src/floating-menu.ts +77 -0
  427. package/node_modules/@tiptap/extension-floating-menu/src/index.ts +6 -0
  428. package/node_modules/@tiptap/extension-mention/LICENSE.md +21 -0
  429. package/node_modules/@tiptap/extension-mention/README.md +18 -0
  430. package/node_modules/@tiptap/extension-mention/dist/index.cjs +277 -0
  431. package/node_modules/@tiptap/extension-mention/dist/index.cjs.map +1 -0
  432. package/node_modules/@tiptap/extension-mention/dist/index.d.cts +93 -0
  433. package/node_modules/@tiptap/extension-mention/dist/index.d.ts +93 -0
  434. package/node_modules/@tiptap/extension-mention/dist/index.js +250 -0
  435. package/node_modules/@tiptap/extension-mention/dist/index.js.map +1 -0
  436. package/node_modules/@tiptap/extension-mention/package.json +52 -0
  437. package/node_modules/@tiptap/extension-mention/src/index.ts +5 -0
  438. package/node_modules/@tiptap/extension-mention/src/mention.ts +357 -0
  439. package/node_modules/@tiptap/extension-mention/src/utils/get-default-suggestion-attributes.ts +89 -0
  440. package/node_modules/@tiptap/pm/LICENSE.md +21 -0
  441. package/node_modules/@tiptap/pm/README.md +22 -0
  442. package/node_modules/@tiptap/pm/changeset/index.ts +1 -0
  443. package/node_modules/@tiptap/pm/collab/index.ts +1 -0
  444. package/node_modules/@tiptap/pm/commands/index.ts +1 -0
  445. package/node_modules/@tiptap/pm/dist/changeset/index.cjs +2 -0
  446. package/node_modules/@tiptap/pm/dist/changeset/index.d.cts +18 -0
  447. package/node_modules/@tiptap/pm/dist/changeset/index.d.ts +18 -0
  448. package/node_modules/@tiptap/pm/dist/changeset/index.js +2 -0
  449. package/node_modules/@tiptap/pm/dist/collab/index.cjs +2 -0
  450. package/node_modules/@tiptap/pm/dist/collab/index.d.cts +1 -0
  451. package/node_modules/@tiptap/pm/dist/collab/index.d.ts +1 -0
  452. package/node_modules/@tiptap/pm/dist/collab/index.js +2 -0
  453. package/node_modules/@tiptap/pm/dist/commands/index.cjs +2 -0
  454. package/node_modules/@tiptap/pm/dist/commands/index.d.cts +1 -0
  455. package/node_modules/@tiptap/pm/dist/commands/index.d.ts +1 -0
  456. package/node_modules/@tiptap/pm/dist/commands/index.js +2 -0
  457. package/node_modules/@tiptap/pm/dist/dropcursor/index.cjs +2 -0
  458. package/node_modules/@tiptap/pm/dist/dropcursor/index.d.cts +1 -0
  459. package/node_modules/@tiptap/pm/dist/dropcursor/index.d.ts +1 -0
  460. package/node_modules/@tiptap/pm/dist/dropcursor/index.js +2 -0
  461. package/node_modules/@tiptap/pm/dist/gapcursor/index.cjs +2 -0
  462. package/node_modules/@tiptap/pm/dist/gapcursor/index.d.cts +1 -0
  463. package/node_modules/@tiptap/pm/dist/gapcursor/index.d.ts +1 -0
  464. package/node_modules/@tiptap/pm/dist/gapcursor/index.js +2 -0
  465. package/node_modules/@tiptap/pm/dist/history/index.cjs +2 -0
  466. package/node_modules/@tiptap/pm/dist/history/index.d.cts +1 -0
  467. package/node_modules/@tiptap/pm/dist/history/index.d.ts +1 -0
  468. package/node_modules/@tiptap/pm/dist/history/index.js +2 -0
  469. package/node_modules/@tiptap/pm/dist/inputrules/index.cjs +2 -0
  470. package/node_modules/@tiptap/pm/dist/inputrules/index.d.cts +1 -0
  471. package/node_modules/@tiptap/pm/dist/inputrules/index.d.ts +1 -0
  472. package/node_modules/@tiptap/pm/dist/inputrules/index.js +2 -0
  473. package/node_modules/@tiptap/pm/dist/keymap/index.cjs +2 -0
  474. package/node_modules/@tiptap/pm/dist/keymap/index.d.cts +1 -0
  475. package/node_modules/@tiptap/pm/dist/keymap/index.d.ts +1 -0
  476. package/node_modules/@tiptap/pm/dist/keymap/index.js +2 -0
  477. package/node_modules/@tiptap/pm/dist/markdown/index.cjs +2 -0
  478. package/node_modules/@tiptap/pm/dist/markdown/index.d.cts +1 -0
  479. package/node_modules/@tiptap/pm/dist/markdown/index.d.ts +1 -0
  480. package/node_modules/@tiptap/pm/dist/markdown/index.js +2 -0
  481. package/node_modules/@tiptap/pm/dist/menu/index.cjs +2 -0
  482. package/node_modules/@tiptap/pm/dist/menu/index.d.cts +1 -0
  483. package/node_modules/@tiptap/pm/dist/menu/index.d.ts +1 -0
  484. package/node_modules/@tiptap/pm/dist/menu/index.js +2 -0
  485. package/node_modules/@tiptap/pm/dist/model/index.cjs +2 -0
  486. package/node_modules/@tiptap/pm/dist/model/index.d.cts +1 -0
  487. package/node_modules/@tiptap/pm/dist/model/index.d.ts +1 -0
  488. package/node_modules/@tiptap/pm/dist/model/index.js +2 -0
  489. package/node_modules/@tiptap/pm/dist/schema-basic/index.cjs +2 -0
  490. package/node_modules/@tiptap/pm/dist/schema-basic/index.d.cts +1 -0
  491. package/node_modules/@tiptap/pm/dist/schema-basic/index.d.ts +1 -0
  492. package/node_modules/@tiptap/pm/dist/schema-basic/index.js +2 -0
  493. package/node_modules/@tiptap/pm/dist/schema-list/index.cjs +2 -0
  494. package/node_modules/@tiptap/pm/dist/schema-list/index.d.cts +1 -0
  495. package/node_modules/@tiptap/pm/dist/schema-list/index.d.ts +1 -0
  496. package/node_modules/@tiptap/pm/dist/schema-list/index.js +2 -0
  497. package/node_modules/@tiptap/pm/dist/state/index.cjs +2 -0
  498. package/node_modules/@tiptap/pm/dist/state/index.d.cts +1 -0
  499. package/node_modules/@tiptap/pm/dist/state/index.d.ts +1 -0
  500. package/node_modules/@tiptap/pm/dist/state/index.js +2 -0
  501. package/node_modules/@tiptap/pm/dist/tables/index.cjs +2 -0
  502. package/node_modules/@tiptap/pm/dist/tables/index.d.cts +1 -0
  503. package/node_modules/@tiptap/pm/dist/tables/index.d.ts +1 -0
  504. package/node_modules/@tiptap/pm/dist/tables/index.js +2 -0
  505. package/node_modules/@tiptap/pm/dist/trailing-node/index.cjs +2 -0
  506. package/node_modules/@tiptap/pm/dist/trailing-node/index.d.cts +1 -0
  507. package/node_modules/@tiptap/pm/dist/trailing-node/index.d.ts +1 -0
  508. package/node_modules/@tiptap/pm/dist/trailing-node/index.js +2 -0
  509. package/node_modules/@tiptap/pm/dist/transform/index.cjs +2 -0
  510. package/node_modules/@tiptap/pm/dist/transform/index.d.cts +1 -0
  511. package/node_modules/@tiptap/pm/dist/transform/index.d.ts +1 -0
  512. package/node_modules/@tiptap/pm/dist/transform/index.js +2 -0
  513. package/node_modules/@tiptap/pm/dist/view/index.cjs +2 -0
  514. package/node_modules/@tiptap/pm/dist/view/index.d.cts +1 -0
  515. package/node_modules/@tiptap/pm/dist/view/index.d.ts +1 -0
  516. package/node_modules/@tiptap/pm/dist/view/index.js +2 -0
  517. package/node_modules/@tiptap/pm/dropcursor/index.ts +1 -0
  518. package/node_modules/@tiptap/pm/gapcursor/index.ts +1 -0
  519. package/node_modules/@tiptap/pm/history/index.ts +1 -0
  520. package/node_modules/@tiptap/pm/inputrules/index.ts +1 -0
  521. package/node_modules/@tiptap/pm/keymap/index.ts +1 -0
  522. package/node_modules/@tiptap/pm/markdown/index.ts +1 -0
  523. package/node_modules/@tiptap/pm/menu/index.ts +1 -0
  524. package/node_modules/@tiptap/pm/model/index.ts +1 -0
  525. package/node_modules/@tiptap/pm/package.json +211 -0
  526. package/node_modules/@tiptap/pm/schema-basic/index.ts +1 -0
  527. package/node_modules/@tiptap/pm/schema-list/index.ts +1 -0
  528. package/node_modules/@tiptap/pm/state/index.ts +1 -0
  529. package/node_modules/@tiptap/pm/tables/index.ts +1 -0
  530. package/node_modules/@tiptap/pm/trailing-node/index.ts +1 -0
  531. package/node_modules/@tiptap/pm/transform/index.ts +1 -0
  532. package/node_modules/@tiptap/pm/view/index.ts +1 -0
  533. package/node_modules/@tiptap/react/LICENSE.md +21 -0
  534. package/node_modules/@tiptap/react/README.md +18 -0
  535. package/node_modules/@tiptap/react/dist/index.cjs +1195 -0
  536. package/node_modules/@tiptap/react/dist/index.cjs.map +1 -0
  537. package/node_modules/@tiptap/react/dist/index.d.cts +534 -0
  538. package/node_modules/@tiptap/react/dist/index.d.ts +534 -0
  539. package/node_modules/@tiptap/react/dist/index.js +1131 -0
  540. package/node_modules/@tiptap/react/dist/index.js.map +1 -0
  541. package/node_modules/@tiptap/react/dist/menus/index.cjs +499 -0
  542. package/node_modules/@tiptap/react/dist/menus/index.cjs.map +1 -0
  543. package/node_modules/@tiptap/react/dist/menus/index.d.cts +19 -0
  544. package/node_modules/@tiptap/react/dist/menus/index.d.ts +19 -0
  545. package/node_modules/@tiptap/react/dist/menus/index.js +461 -0
  546. package/node_modules/@tiptap/react/dist/menus/index.js.map +1 -0
  547. package/node_modules/@tiptap/react/package.json +76 -0
  548. package/node_modules/@tiptap/react/src/Context.tsx +60 -0
  549. package/node_modules/@tiptap/react/src/Editor.ts +13 -0
  550. package/node_modules/@tiptap/react/src/EditorContent.tsx +229 -0
  551. package/node_modules/@tiptap/react/src/NodeViewContent.tsx +30 -0
  552. package/node_modules/@tiptap/react/src/NodeViewWrapper.tsx +27 -0
  553. package/node_modules/@tiptap/react/src/ReactMarkViewRenderer.tsx +106 -0
  554. package/node_modules/@tiptap/react/src/ReactNodeViewRenderer.tsx +387 -0
  555. package/node_modules/@tiptap/react/src/ReactRenderer.tsx +282 -0
  556. package/node_modules/@tiptap/react/src/Tiptap.tsx +224 -0
  557. package/node_modules/@tiptap/react/src/index.ts +13 -0
  558. package/node_modules/@tiptap/react/src/menus/BubbleMenu.spec.ts +174 -0
  559. package/node_modules/@tiptap/react/src/menus/BubbleMenu.tsx +153 -0
  560. package/node_modules/@tiptap/react/src/menus/FloatingMenu.spec.ts +164 -0
  561. package/node_modules/@tiptap/react/src/menus/FloatingMenu.tsx +137 -0
  562. package/node_modules/@tiptap/react/src/menus/getAutoPluginKey.ts +5 -0
  563. package/node_modules/@tiptap/react/src/menus/index.ts +2 -0
  564. package/node_modules/@tiptap/react/src/menus/useMenuElementProps.ts +354 -0
  565. package/node_modules/@tiptap/react/src/types.ts +6 -0
  566. package/node_modules/@tiptap/react/src/useEditor.ts +382 -0
  567. package/node_modules/@tiptap/react/src/useEditorState.ts +173 -0
  568. package/node_modules/@tiptap/react/src/useReactNodeView.ts +28 -0
  569. package/node_modules/@tiptap/suggestion/LICENSE.md +21 -0
  570. package/node_modules/@tiptap/suggestion/README.md +18 -0
  571. package/node_modules/@tiptap/suggestion/dist/index.cjs +369 -0
  572. package/node_modules/@tiptap/suggestion/dist/index.cjs.map +1 -0
  573. package/node_modules/@tiptap/suggestion/dist/index.d.cts +213 -0
  574. package/node_modules/@tiptap/suggestion/dist/index.d.ts +213 -0
  575. package/node_modules/@tiptap/suggestion/dist/index.js +339 -0
  576. package/node_modules/@tiptap/suggestion/dist/index.js.map +1 -0
  577. package/node_modules/@tiptap/suggestion/package.json +50 -0
  578. package/node_modules/@tiptap/suggestion/src/__tests__/suggestion.test.ts +127 -0
  579. package/node_modules/@tiptap/suggestion/src/findSuggestionMatch.ts +79 -0
  580. package/node_modules/@tiptap/suggestion/src/index.ts +8 -0
  581. package/node_modules/@tiptap/suggestion/src/suggestion.ts +585 -0
  582. package/node_modules/@types/linkify-it/LICENSE +21 -0
  583. package/node_modules/@types/linkify-it/README.md +15 -0
  584. package/node_modules/@types/linkify-it/build/index.cjs.d.ts +178 -0
  585. package/node_modules/@types/linkify-it/index.d.mts +174 -0
  586. package/node_modules/@types/linkify-it/index.d.ts +3 -0
  587. package/node_modules/@types/linkify-it/package.json +50 -0
  588. package/node_modules/@types/markdown-it/LICENSE +21 -0
  589. package/node_modules/@types/markdown-it/README.md +15 -0
  590. package/node_modules/@types/markdown-it/dist/index.cjs.d.ts +1236 -0
  591. package/node_modules/@types/markdown-it/dist/markdown-it.d.ts +5 -0
  592. package/node_modules/@types/markdown-it/dist/markdown-it.min.d.ts +5 -0
  593. package/node_modules/@types/markdown-it/index.d.mts +1 -0
  594. package/node_modules/@types/markdown-it/index.d.ts +3 -0
  595. package/node_modules/@types/markdown-it/lib/common/html_blocks.d.mts +7 -0
  596. package/node_modules/@types/markdown-it/lib/common/html_re.d.mts +2 -0
  597. package/node_modules/@types/markdown-it/lib/common/utils.d.mts +62 -0
  598. package/node_modules/@types/markdown-it/lib/helpers/index.d.mts +5 -0
  599. package/node_modules/@types/markdown-it/lib/helpers/parse_link_destination.d.mts +7 -0
  600. package/node_modules/@types/markdown-it/lib/helpers/parse_link_label.d.mts +3 -0
  601. package/node_modules/@types/markdown-it/lib/helpers/parse_link_title.d.mts +29 -0
  602. package/node_modules/@types/markdown-it/lib/index.d.mts +404 -0
  603. package/node_modules/@types/markdown-it/lib/parser_block.d.mts +25 -0
  604. package/node_modules/@types/markdown-it/lib/parser_core.d.mts +18 -0
  605. package/node_modules/@types/markdown-it/lib/parser_inline.d.mts +38 -0
  606. package/node_modules/@types/markdown-it/lib/renderer.d.mts +96 -0
  607. package/node_modules/@types/markdown-it/lib/ruler.d.mts +158 -0
  608. package/node_modules/@types/markdown-it/lib/rules_block/state_block.d.mts +124 -0
  609. package/node_modules/@types/markdown-it/lib/rules_core/state_core.d.mts +18 -0
  610. package/node_modules/@types/markdown-it/lib/rules_inline/state_inline.d.mts +73 -0
  611. package/node_modules/@types/markdown-it/lib/token.d.mts +108 -0
  612. package/node_modules/@types/markdown-it/package.json +54 -0
  613. package/node_modules/@types/mdurl/LICENSE +21 -0
  614. package/node_modules/@types/mdurl/README.md +15 -0
  615. package/node_modules/@types/mdurl/build/index.cjs.d.ts +52 -0
  616. package/node_modules/@types/mdurl/index.d.mts +6 -0
  617. package/node_modules/@types/mdurl/index.d.ts +3 -0
  618. package/node_modules/@types/mdurl/lib/decode.d.mts +10 -0
  619. package/node_modules/@types/mdurl/lib/encode.d.mts +15 -0
  620. package/node_modules/@types/mdurl/lib/format.d.mts +3 -0
  621. package/node_modules/@types/mdurl/lib/parse.d.mts +18 -0
  622. package/node_modules/@types/mdurl/package.json +36 -0
  623. package/node_modules/@types/use-sync-external-store/LICENSE +21 -0
  624. package/node_modules/@types/use-sync-external-store/README.md +15 -0
  625. package/node_modules/@types/use-sync-external-store/index.d.ts +5 -0
  626. package/node_modules/@types/use-sync-external-store/package.json +30 -0
  627. package/node_modules/@types/use-sync-external-store/shim/index.d.ts +1 -0
  628. package/node_modules/@types/use-sync-external-store/shim/with-selector.d.ts +1 -0
  629. package/node_modules/@types/use-sync-external-store/with-selector.d.ts +7 -0
  630. package/node_modules/argparse/LICENSE +254 -0
  631. package/node_modules/argparse/README.md +84 -0
  632. package/node_modules/argparse/argparse.js +3707 -0
  633. package/node_modules/argparse/lib/sub.js +67 -0
  634. package/node_modules/argparse/lib/textwrap.js +440 -0
  635. package/node_modules/argparse/package.json +31 -0
  636. package/node_modules/crelt/LICENSE +19 -0
  637. package/node_modules/crelt/README.md +23 -0
  638. package/node_modules/crelt/dist/index.cjs +31 -0
  639. package/node_modules/crelt/dist/index.d.cts +4 -0
  640. package/node_modules/crelt/index.d.ts +4 -0
  641. package/node_modules/crelt/index.js +28 -0
  642. package/node_modules/crelt/package.json +35 -0
  643. package/node_modules/crelt/rollup.config.js +13 -0
  644. package/node_modules/entities/LICENSE +11 -0
  645. package/node_modules/entities/lib/decode.d.ts +211 -0
  646. package/node_modules/entities/lib/decode.d.ts.map +1 -0
  647. package/node_modules/entities/lib/decode.js +536 -0
  648. package/node_modules/entities/lib/decode.js.map +1 -0
  649. package/node_modules/entities/lib/decode_codepoint.d.ts +19 -0
  650. package/node_modules/entities/lib/decode_codepoint.d.ts.map +1 -0
  651. package/node_modules/entities/lib/decode_codepoint.js +76 -0
  652. package/node_modules/entities/lib/decode_codepoint.js.map +1 -0
  653. package/node_modules/entities/lib/encode.d.ts +22 -0
  654. package/node_modules/entities/lib/encode.d.ts.map +1 -0
  655. package/node_modules/entities/lib/encode.js +77 -0
  656. package/node_modules/entities/lib/encode.js.map +1 -0
  657. package/node_modules/entities/lib/escape.d.ts +43 -0
  658. package/node_modules/entities/lib/escape.d.ts.map +1 -0
  659. package/node_modules/entities/lib/escape.js +122 -0
  660. package/node_modules/entities/lib/escape.js.map +1 -0
  661. package/node_modules/entities/lib/esm/decode.d.ts +211 -0
  662. package/node_modules/entities/lib/esm/decode.d.ts.map +1 -0
  663. package/node_modules/entities/lib/esm/decode.js +496 -0
  664. package/node_modules/entities/lib/esm/decode.js.map +1 -0
  665. package/node_modules/entities/lib/esm/decode_codepoint.d.ts +19 -0
  666. package/node_modules/entities/lib/esm/decode_codepoint.d.ts.map +1 -0
  667. package/node_modules/entities/lib/esm/decode_codepoint.js +71 -0
  668. package/node_modules/entities/lib/esm/decode_codepoint.js.map +1 -0
  669. package/node_modules/entities/lib/esm/encode.d.ts +22 -0
  670. package/node_modules/entities/lib/esm/encode.d.ts.map +1 -0
  671. package/node_modules/entities/lib/esm/encode.js +69 -0
  672. package/node_modules/entities/lib/esm/encode.js.map +1 -0
  673. package/node_modules/entities/lib/esm/escape.d.ts +43 -0
  674. package/node_modules/entities/lib/esm/escape.d.ts.map +1 -0
  675. package/node_modules/entities/lib/esm/escape.js +116 -0
  676. package/node_modules/entities/lib/esm/escape.js.map +1 -0
  677. package/node_modules/entities/lib/esm/generated/decode-data-html.d.ts +3 -0
  678. package/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map +1 -0
  679. package/node_modules/entities/lib/esm/generated/decode-data-html.js +7 -0
  680. package/node_modules/entities/lib/esm/generated/decode-data-html.js.map +1 -0
  681. package/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts +3 -0
  682. package/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map +1 -0
  683. package/node_modules/entities/lib/esm/generated/decode-data-xml.js +7 -0
  684. package/node_modules/entities/lib/esm/generated/decode-data-xml.js.map +1 -0
  685. package/node_modules/entities/lib/esm/generated/encode-html.d.ts +8 -0
  686. package/node_modules/entities/lib/esm/generated/encode-html.d.ts.map +1 -0
  687. package/node_modules/entities/lib/esm/generated/encode-html.js +10 -0
  688. package/node_modules/entities/lib/esm/generated/encode-html.js.map +1 -0
  689. package/node_modules/entities/lib/esm/index.d.ts +96 -0
  690. package/node_modules/entities/lib/esm/index.d.ts.map +1 -0
  691. package/node_modules/entities/lib/esm/index.js +99 -0
  692. package/node_modules/entities/lib/esm/index.js.map +1 -0
  693. package/node_modules/entities/lib/esm/package.json +1 -0
  694. package/node_modules/entities/lib/generated/decode-data-html.d.ts +3 -0
  695. package/node_modules/entities/lib/generated/decode-data-html.d.ts.map +1 -0
  696. package/node_modules/entities/lib/generated/decode-data-html.js +9 -0
  697. package/node_modules/entities/lib/generated/decode-data-html.js.map +1 -0
  698. package/node_modules/entities/lib/generated/decode-data-xml.d.ts +3 -0
  699. package/node_modules/entities/lib/generated/decode-data-xml.d.ts.map +1 -0
  700. package/node_modules/entities/lib/generated/decode-data-xml.js +9 -0
  701. package/node_modules/entities/lib/generated/decode-data-xml.js.map +1 -0
  702. package/node_modules/entities/lib/generated/encode-html.d.ts +8 -0
  703. package/node_modules/entities/lib/generated/encode-html.d.ts.map +1 -0
  704. package/node_modules/entities/lib/generated/encode-html.js +12 -0
  705. package/node_modules/entities/lib/generated/encode-html.js.map +1 -0
  706. package/node_modules/entities/lib/index.d.ts +96 -0
  707. package/node_modules/entities/lib/index.d.ts.map +1 -0
  708. package/node_modules/entities/lib/index.js +126 -0
  709. package/node_modules/entities/lib/index.js.map +1 -0
  710. package/node_modules/entities/package.json +90 -0
  711. package/node_modules/entities/readme.md +122 -0
  712. package/node_modules/escape-string-regexp/index.d.ts +18 -0
  713. package/node_modules/escape-string-regexp/index.js +13 -0
  714. package/node_modules/escape-string-regexp/license +9 -0
  715. package/node_modules/escape-string-regexp/package.json +38 -0
  716. package/node_modules/escape-string-regexp/readme.md +34 -0
  717. package/node_modules/fast-equals/LICENSE +21 -0
  718. package/node_modules/fast-equals/README.md +477 -0
  719. package/node_modules/fast-equals/dist/cjs/comparator.d.cts +60 -0
  720. package/node_modules/fast-equals/dist/cjs/equals.d.cts +62 -0
  721. package/node_modules/fast-equals/dist/cjs/index.cjs +653 -0
  722. package/node_modules/fast-equals/dist/cjs/index.cjs.map +1 -0
  723. package/node_modules/fast-equals/dist/cjs/index.d.cts +66 -0
  724. package/node_modules/fast-equals/dist/cjs/internalTypes.d.cts +178 -0
  725. package/node_modules/fast-equals/dist/cjs/utils.d.cts +33 -0
  726. package/node_modules/fast-equals/dist/es/comparator.d.mts +60 -0
  727. package/node_modules/fast-equals/dist/es/equals.d.mts +62 -0
  728. package/node_modules/fast-equals/dist/es/index.d.mts +66 -0
  729. package/node_modules/fast-equals/dist/es/index.mjs +642 -0
  730. package/node_modules/fast-equals/dist/es/index.mjs.map +1 -0
  731. package/node_modules/fast-equals/dist/es/internalTypes.d.mts +178 -0
  732. package/node_modules/fast-equals/dist/es/utils.d.mts +33 -0
  733. package/node_modules/fast-equals/dist/umd/comparator.d.ts +26 -0
  734. package/node_modules/fast-equals/dist/umd/equals.d.ts +62 -0
  735. package/node_modules/fast-equals/dist/umd/index.d.ts +47 -0
  736. package/node_modules/fast-equals/dist/umd/index.js +659 -0
  737. package/node_modules/fast-equals/dist/umd/index.js.map +1 -0
  738. package/node_modules/fast-equals/dist/umd/internalTypes.d.ts +159 -0
  739. package/node_modules/fast-equals/dist/umd/utils.d.ts +28 -0
  740. package/node_modules/fast-equals/index.d.ts +260 -0
  741. package/node_modules/fast-equals/package.json +113 -0
  742. package/node_modules/linkify-it/LICENSE +22 -0
  743. package/node_modules/linkify-it/README.md +196 -0
  744. package/node_modules/linkify-it/build/index.cjs.js +832 -0
  745. package/node_modules/linkify-it/index.mjs +642 -0
  746. package/node_modules/linkify-it/lib/re.mjs +189 -0
  747. package/node_modules/linkify-it/package.json +58 -0
  748. package/node_modules/markdown-it/LICENSE +22 -0
  749. package/node_modules/markdown-it/README.md +324 -0
  750. package/node_modules/markdown-it/bin/markdown-it.mjs +107 -0
  751. package/node_modules/markdown-it/dist/index.cjs.js +5547 -0
  752. package/node_modules/markdown-it/dist/markdown-it.js +6969 -0
  753. package/node_modules/markdown-it/dist/markdown-it.min.js +2 -0
  754. package/node_modules/markdown-it/index.mjs +1 -0
  755. package/node_modules/markdown-it/lib/common/html_blocks.mjs +67 -0
  756. package/node_modules/markdown-it/lib/common/html_re.mjs +25 -0
  757. package/node_modules/markdown-it/lib/common/utils.mjs +304 -0
  758. package/node_modules/markdown-it/lib/helpers/index.mjs +11 -0
  759. package/node_modules/markdown-it/lib/helpers/parse_link_destination.mjs +77 -0
  760. package/node_modules/markdown-it/lib/helpers/parse_link_label.mjs +49 -0
  761. package/node_modules/markdown-it/lib/helpers/parse_link_title.mjs +66 -0
  762. package/node_modules/markdown-it/lib/index.mjs +565 -0
  763. package/node_modules/markdown-it/lib/parser_block.mjs +134 -0
  764. package/node_modules/markdown-it/lib/parser_core.mjs +62 -0
  765. package/node_modules/markdown-it/lib/parser_inline.mjs +197 -0
  766. package/node_modules/markdown-it/lib/presets/commonmark.mjs +88 -0
  767. package/node_modules/markdown-it/lib/presets/default.mjs +47 -0
  768. package/node_modules/markdown-it/lib/presets/zero.mjs +70 -0
  769. package/node_modules/markdown-it/lib/renderer.mjs +322 -0
  770. package/node_modules/markdown-it/lib/ruler.mjs +340 -0
  771. package/node_modules/markdown-it/lib/rules_block/blockquote.mjs +209 -0
  772. package/node_modules/markdown-it/lib/rules_block/code.mjs +30 -0
  773. package/node_modules/markdown-it/lib/rules_block/fence.mjs +94 -0
  774. package/node_modules/markdown-it/lib/rules_block/heading.mjs +51 -0
  775. package/node_modules/markdown-it/lib/rules_block/hr.mjs +40 -0
  776. package/node_modules/markdown-it/lib/rules_block/html_block.mjs +69 -0
  777. package/node_modules/markdown-it/lib/rules_block/lheading.mjs +82 -0
  778. package/node_modules/markdown-it/lib/rules_block/list.mjs +331 -0
  779. package/node_modules/markdown-it/lib/rules_block/paragraph.mjs +46 -0
  780. package/node_modules/markdown-it/lib/rules_block/reference.mjs +212 -0
  781. package/node_modules/markdown-it/lib/rules_block/state_block.mjs +220 -0
  782. package/node_modules/markdown-it/lib/rules_block/table.mjs +228 -0
  783. package/node_modules/markdown-it/lib/rules_core/block.mjs +13 -0
  784. package/node_modules/markdown-it/lib/rules_core/inline.mjs +11 -0
  785. package/node_modules/markdown-it/lib/rules_core/linkify.mjs +134 -0
  786. package/node_modules/markdown-it/lib/rules_core/normalize.mjs +17 -0
  787. package/node_modules/markdown-it/lib/rules_core/replacements.mjs +101 -0
  788. package/node_modules/markdown-it/lib/rules_core/smartquotes.mjs +193 -0
  789. package/node_modules/markdown-it/lib/rules_core/state_core.mjs +17 -0
  790. package/node_modules/markdown-it/lib/rules_core/text_join.mjs +43 -0
  791. package/node_modules/markdown-it/lib/rules_inline/autolink.mjs +72 -0
  792. package/node_modules/markdown-it/lib/rules_inline/backticks.mjs +60 -0
  793. package/node_modules/markdown-it/lib/rules_inline/balance_pairs.mjs +124 -0
  794. package/node_modules/markdown-it/lib/rules_inline/emphasis.mjs +123 -0
  795. package/node_modules/markdown-it/lib/rules_inline/entity.mjs +51 -0
  796. package/node_modules/markdown-it/lib/rules_inline/escape.mjs +69 -0
  797. package/node_modules/markdown-it/lib/rules_inline/fragments_join.mjs +38 -0
  798. package/node_modules/markdown-it/lib/rules_inline/html_inline.mjs +50 -0
  799. package/node_modules/markdown-it/lib/rules_inline/image.mjs +138 -0
  800. package/node_modules/markdown-it/lib/rules_inline/link.mjs +139 -0
  801. package/node_modules/markdown-it/lib/rules_inline/linkify.mjs +63 -0
  802. package/node_modules/markdown-it/lib/rules_inline/newline.mjs +42 -0
  803. package/node_modules/markdown-it/lib/rules_inline/state_inline.mjs +123 -0
  804. package/node_modules/markdown-it/lib/rules_inline/strikethrough.mjs +127 -0
  805. package/node_modules/markdown-it/lib/rules_inline/text.mjs +86 -0
  806. package/node_modules/markdown-it/lib/token.mjs +191 -0
  807. package/node_modules/markdown-it/package.json +92 -0
  808. package/node_modules/mdurl/LICENSE +45 -0
  809. package/node_modules/mdurl/README.md +102 -0
  810. package/node_modules/mdurl/build/index.cjs.js +534 -0
  811. package/node_modules/mdurl/index.mjs +11 -0
  812. package/node_modules/mdurl/lib/decode.mjs +112 -0
  813. package/node_modules/mdurl/lib/encode.mjs +89 -0
  814. package/node_modules/mdurl/lib/format.mjs +21 -0
  815. package/node_modules/mdurl/lib/parse.mjs +308 -0
  816. package/node_modules/mdurl/package.json +37 -0
  817. package/node_modules/orderedmap/LICENSE +19 -0
  818. package/node_modules/orderedmap/README.md +69 -0
  819. package/node_modules/orderedmap/dist/index.cjs +139 -0
  820. package/node_modules/orderedmap/dist/index.d.cts +33 -0
  821. package/node_modules/orderedmap/dist/index.d.ts +33 -0
  822. package/node_modules/orderedmap/dist/index.js +137 -0
  823. package/node_modules/orderedmap/package.json +39 -0
  824. package/node_modules/prosemirror-changeset/CHANGELOG.md +147 -0
  825. package/node_modules/prosemirror-changeset/LICENSE +19 -0
  826. package/node_modules/prosemirror-changeset/README.md +175 -0
  827. package/node_modules/prosemirror-changeset/dist/index.cjs +585 -0
  828. package/node_modules/prosemirror-changeset/dist/index.d.cts +186 -0
  829. package/node_modules/prosemirror-changeset/dist/index.d.ts +186 -0
  830. package/node_modules/prosemirror-changeset/dist/index.js +715 -0
  831. package/node_modules/prosemirror-changeset/package.json +40 -0
  832. package/node_modules/prosemirror-changeset/src/README.md +32 -0
  833. package/node_modules/prosemirror-changeset/src/change.ts +189 -0
  834. package/node_modules/prosemirror-changeset/src/changeset.ts +212 -0
  835. package/node_modules/prosemirror-changeset/src/diff.ts +151 -0
  836. package/node_modules/prosemirror-changeset/src/simplify.ts +132 -0
  837. package/node_modules/prosemirror-changeset/test/test-changed-range.ts +48 -0
  838. package/node_modules/prosemirror-changeset/test/test-changes.ts +211 -0
  839. package/node_modules/prosemirror-changeset/test/test-diff.ts +69 -0
  840. package/node_modules/prosemirror-changeset/test/test-merge.ts +56 -0
  841. package/node_modules/prosemirror-changeset/test/test-simplify.ts +71 -0
  842. package/node_modules/prosemirror-collab/.tern-project +8 -0
  843. package/node_modules/prosemirror-collab/CHANGELOG.md +77 -0
  844. package/node_modules/prosemirror-collab/CONTRIBUTING.md +104 -0
  845. package/node_modules/prosemirror-collab/LICENSE +19 -0
  846. package/node_modules/prosemirror-collab/README.md +28 -0
  847. package/node_modules/prosemirror-collab/dist/index.cjs +155 -0
  848. package/node_modules/prosemirror-collab/dist/index.d.cts +60 -0
  849. package/node_modules/prosemirror-collab/dist/index.d.ts +60 -0
  850. package/node_modules/prosemirror-collab/dist/index.js +156 -0
  851. package/node_modules/prosemirror-collab/package.json +40 -0
  852. package/node_modules/prosemirror-collab/src/README.md +11 -0
  853. package/node_modules/prosemirror-collab/src/collab.ts +184 -0
  854. package/node_modules/prosemirror-commands/.tern-project +8 -0
  855. package/node_modules/prosemirror-commands/CHANGELOG.md +322 -0
  856. package/node_modules/prosemirror-commands/CONTRIBUTING.md +104 -0
  857. package/node_modules/prosemirror-commands/LICENSE +19 -0
  858. package/node_modules/prosemirror-commands/README.md +28 -0
  859. package/node_modules/prosemirror-commands/dist/index.cjs +687 -0
  860. package/node_modules/prosemirror-commands/dist/index.d.cts +215 -0
  861. package/node_modules/prosemirror-commands/dist/index.d.ts +215 -0
  862. package/node_modules/prosemirror-commands/dist/index.js +850 -0
  863. package/node_modules/prosemirror-commands/package.json +39 -0
  864. package/node_modules/prosemirror-commands/src/README.md +40 -0
  865. package/node_modules/prosemirror-commands/src/commands.ts +783 -0
  866. package/node_modules/prosemirror-dropcursor/CHANGELOG.md +137 -0
  867. package/node_modules/prosemirror-dropcursor/CONTRIBUTING.md +100 -0
  868. package/node_modules/prosemirror-dropcursor/LICENSE +19 -0
  869. package/node_modules/prosemirror-dropcursor/README.md +50 -0
  870. package/node_modules/prosemirror-dropcursor/dist/index.cjs +185 -0
  871. package/node_modules/prosemirror-dropcursor/dist/index.d.cts +38 -0
  872. package/node_modules/prosemirror-dropcursor/dist/index.d.ts +38 -0
  873. package/node_modules/prosemirror-dropcursor/dist/index.js +146 -0
  874. package/node_modules/prosemirror-dropcursor/package.json +38 -0
  875. package/node_modules/prosemirror-dropcursor/src/dropcursor.ts +170 -0
  876. package/node_modules/prosemirror-gapcursor/CHANGELOG.md +122 -0
  877. package/node_modules/prosemirror-gapcursor/CONTRIBUTING.md +104 -0
  878. package/node_modules/prosemirror-gapcursor/LICENSE +19 -0
  879. package/node_modules/prosemirror-gapcursor/README.md +31 -0
  880. package/node_modules/prosemirror-gapcursor/dist/index.cjs +239 -0
  881. package/node_modules/prosemirror-gapcursor/dist/index.d.cts +31 -0
  882. package/node_modules/prosemirror-gapcursor/dist/index.d.ts +31 -0
  883. package/node_modules/prosemirror-gapcursor/dist/index.js +239 -0
  884. package/node_modules/prosemirror-gapcursor/package.json +43 -0
  885. package/node_modules/prosemirror-gapcursor/src/README.md +21 -0
  886. package/node_modules/prosemirror-gapcursor/src/gapcursor.ts +141 -0
  887. package/node_modules/prosemirror-gapcursor/src/index.ts +91 -0
  888. package/node_modules/prosemirror-gapcursor/style/gapcursor.css +25 -0
  889. package/node_modules/prosemirror-history/.tern-project +8 -0
  890. package/node_modules/prosemirror-history/CHANGELOG.md +170 -0
  891. package/node_modules/prosemirror-history/CONTRIBUTING.md +104 -0
  892. package/node_modules/prosemirror-history/LICENSE +19 -0
  893. package/node_modules/prosemirror-history/README.md +27 -0
  894. package/node_modules/prosemirror-history/dist/index.cjs +382 -0
  895. package/node_modules/prosemirror-history/dist/index.d.cts +64 -0
  896. package/node_modules/prosemirror-history/dist/index.d.ts +64 -0
  897. package/node_modules/prosemirror-history/dist/index.js +453 -0
  898. package/node_modules/prosemirror-history/package.json +40 -0
  899. package/node_modules/prosemirror-history/src/README.md +23 -0
  900. package/node_modules/prosemirror-history/src/history.ts +465 -0
  901. package/node_modules/prosemirror-inputrules/.tern-project +8 -0
  902. package/node_modules/prosemirror-inputrules/CHANGELOG.md +127 -0
  903. package/node_modules/prosemirror-inputrules/CONTRIBUTING.md +104 -0
  904. package/node_modules/prosemirror-inputrules/LICENSE +19 -0
  905. package/node_modules/prosemirror-inputrules/README.md +29 -0
  906. package/node_modules/prosemirror-inputrules/dist/index.cjs +194 -0
  907. package/node_modules/prosemirror-inputrules/dist/index.d.cts +131 -0
  908. package/node_modules/prosemirror-inputrules/dist/index.d.ts +131 -0
  909. package/node_modules/prosemirror-inputrules/dist/index.js +239 -0
  910. package/node_modules/prosemirror-inputrules/package.json +36 -0
  911. package/node_modules/prosemirror-inputrules/src/README.md +23 -0
  912. package/node_modules/prosemirror-inputrules/src/index.ts +4 -0
  913. package/node_modules/prosemirror-inputrules/src/inputrules.ts +167 -0
  914. package/node_modules/prosemirror-inputrules/src/rulebuilders.ts +59 -0
  915. package/node_modules/prosemirror-inputrules/src/rules.ts +17 -0
  916. package/node_modules/prosemirror-keymap/.tern-project +8 -0
  917. package/node_modules/prosemirror-keymap/CHANGELOG.md +104 -0
  918. package/node_modules/prosemirror-keymap/CONTRIBUTING.md +104 -0
  919. package/node_modules/prosemirror-keymap/LICENSE +19 -0
  920. package/node_modules/prosemirror-keymap/README.md +27 -0
  921. package/node_modules/prosemirror-keymap/dist/index.cjs +65 -0
  922. package/node_modules/prosemirror-keymap/dist/index.d.cts +47 -0
  923. package/node_modules/prosemirror-keymap/dist/index.d.ts +47 -0
  924. package/node_modules/prosemirror-keymap/dist/index.js +128 -0
  925. package/node_modules/prosemirror-keymap/package.json +38 -0
  926. package/node_modules/prosemirror-keymap/src/README.md +5 -0
  927. package/node_modules/prosemirror-keymap/src/keymap.ts +105 -0
  928. package/node_modules/prosemirror-markdown/.tern-project +8 -0
  929. package/node_modules/prosemirror-markdown/CHANGELOG.md +311 -0
  930. package/node_modules/prosemirror-markdown/CONTRIBUTING.md +100 -0
  931. package/node_modules/prosemirror-markdown/LICENSE +19 -0
  932. package/node_modules/prosemirror-markdown/README.md +276 -0
  933. package/node_modules/prosemirror-markdown/dist/index.cjs +966 -0
  934. package/node_modules/prosemirror-markdown/dist/index.d.cts +335 -0
  935. package/node_modules/prosemirror-markdown/dist/index.d.ts +335 -0
  936. package/node_modules/prosemirror-markdown/dist/index.js +878 -0
  937. package/node_modules/prosemirror-markdown/package.json +40 -0
  938. package/node_modules/prosemirror-markdown/src/README.md +42 -0
  939. package/node_modules/prosemirror-markdown/src/from_markdown.ts +272 -0
  940. package/node_modules/prosemirror-markdown/src/index.ts +5 -0
  941. package/node_modules/prosemirror-markdown/src/schema.ts +156 -0
  942. package/node_modules/prosemirror-markdown/src/to_markdown.ts +483 -0
  943. package/node_modules/prosemirror-menu/.tern-project +8 -0
  944. package/node_modules/prosemirror-menu/CHANGELOG.md +107 -0
  945. package/node_modules/prosemirror-menu/CONTRIBUTING.md +100 -0
  946. package/node_modules/prosemirror-menu/LICENSE +19 -0
  947. package/node_modules/prosemirror-menu/README.md +235 -0
  948. package/node_modules/prosemirror-menu/dist/index.cjs +798 -0
  949. package/node_modules/prosemirror-menu/dist/index.d.cts +281 -0
  950. package/node_modules/prosemirror-menu/dist/index.d.ts +281 -0
  951. package/node_modules/prosemirror-menu/dist/index.js +795 -0
  952. package/node_modules/prosemirror-menu/package.json +42 -0
  953. package/node_modules/prosemirror-menu/src/README.md +60 -0
  954. package/node_modules/prosemirror-menu/src/icons.ts +53 -0
  955. package/node_modules/prosemirror-menu/src/index.ts +4 -0
  956. package/node_modules/prosemirror-menu/src/menu.ts +628 -0
  957. package/node_modules/prosemirror-menu/src/menubar.ts +210 -0
  958. package/node_modules/prosemirror-menu/style/menu.css +169 -0
  959. package/node_modules/prosemirror-model/.tern-project +8 -0
  960. package/node_modules/prosemirror-model/CHANGELOG.md +730 -0
  961. package/node_modules/prosemirror-model/CONTRIBUTING.md +104 -0
  962. package/node_modules/prosemirror-model/LICENSE +19 -0
  963. package/node_modules/prosemirror-model/README.md +29 -0
  964. package/node_modules/prosemirror-model/dist/index.cjs +2898 -0
  965. package/node_modules/prosemirror-model/dist/index.d.cts +1679 -0
  966. package/node_modules/prosemirror-model/dist/index.d.ts +1679 -0
  967. package/node_modules/prosemirror-model/dist/index.js +3464 -0
  968. package/node_modules/prosemirror-model/package.json +38 -0
  969. package/node_modules/prosemirror-model/src/README.md +62 -0
  970. package/node_modules/prosemirror-model/src/comparedeep.ts +15 -0
  971. package/node_modules/prosemirror-model/src/content.ts +413 -0
  972. package/node_modules/prosemirror-model/src/diff.ts +52 -0
  973. package/node_modules/prosemirror-model/src/dom.ts +1 -0
  974. package/node_modules/prosemirror-model/src/fragment.ts +268 -0
  975. package/node_modules/prosemirror-model/src/from_dom.ts +848 -0
  976. package/node_modules/prosemirror-model/src/index.ts +11 -0
  977. package/node_modules/prosemirror-model/src/mark.ts +111 -0
  978. package/node_modules/prosemirror-model/src/node.ts +402 -0
  979. package/node_modules/prosemirror-model/src/replace.ts +225 -0
  980. package/node_modules/prosemirror-model/src/resolvedpos.ts +289 -0
  981. package/node_modules/prosemirror-model/src/schema.ts +705 -0
  982. package/node_modules/prosemirror-model/src/to_dom.ts +238 -0
  983. package/node_modules/prosemirror-schema-basic/.tern-project +8 -0
  984. package/node_modules/prosemirror-schema-basic/CHANGELOG.md +81 -0
  985. package/node_modules/prosemirror-schema-basic/CONTRIBUTING.md +100 -0
  986. package/node_modules/prosemirror-schema-basic/LICENSE +19 -0
  987. package/node_modules/prosemirror-schema-basic/README.md +28 -0
  988. package/node_modules/prosemirror-schema-basic/dist/index.cjs +246 -0
  989. package/node_modules/prosemirror-schema-basic/dist/index.d.cts +87 -0
  990. package/node_modules/prosemirror-schema-basic/dist/index.d.ts +87 -0
  991. package/node_modules/prosemirror-schema-basic/dist/index.js +183 -0
  992. package/node_modules/prosemirror-schema-basic/package.json +37 -0
  993. package/node_modules/prosemirror-schema-basic/src/README.md +8 -0
  994. package/node_modules/prosemirror-schema-basic/src/schema-basic.ts +166 -0
  995. package/node_modules/prosemirror-schema-list/.tern-project +8 -0
  996. package/node_modules/prosemirror-schema-list/CHANGELOG.md +140 -0
  997. package/node_modules/prosemirror-schema-list/CONTRIBUTING.md +100 -0
  998. package/node_modules/prosemirror-schema-list/LICENSE +19 -0
  999. package/node_modules/prosemirror-schema-list/README.md +28 -0
  1000. package/node_modules/prosemirror-schema-list/dist/index.cjs +253 -0
  1001. package/node_modules/prosemirror-schema-list/dist/index.d.cts +71 -0
  1002. package/node_modules/prosemirror-schema-list/dist/index.d.ts +71 -0
  1003. package/node_modules/prosemirror-schema-list/dist/index.js +289 -0
  1004. package/node_modules/prosemirror-schema-list/package.json +40 -0
  1005. package/node_modules/prosemirror-schema-list/src/README.md +29 -0
  1006. package/node_modules/prosemirror-schema-list/src/schema-list.ts +267 -0
  1007. package/node_modules/prosemirror-state/.tern-project +8 -0
  1008. package/node_modules/prosemirror-state/CHANGELOG.md +296 -0
  1009. package/node_modules/prosemirror-state/CONTRIBUTING.md +104 -0
  1010. package/node_modules/prosemirror-state/LICENSE +19 -0
  1011. package/node_modules/prosemirror-state/README.md +28 -0
  1012. package/node_modules/prosemirror-state/dist/index.cjs +884 -0
  1013. package/node_modules/prosemirror-state/dist/index.d.cts +709 -0
  1014. package/node_modules/prosemirror-state/dist/index.d.ts +709 -0
  1015. package/node_modules/prosemirror-state/dist/index.js +1002 -0
  1016. package/node_modules/prosemirror-state/package.json +39 -0
  1017. package/node_modules/prosemirror-state/src/README.md +42 -0
  1018. package/node_modules/prosemirror-state/src/index.ts +7 -0
  1019. package/node_modules/prosemirror-state/src/plugin.ts +142 -0
  1020. package/node_modules/prosemirror-state/src/selection.ts +462 -0
  1021. package/node_modules/prosemirror-state/src/state.ts +266 -0
  1022. package/node_modules/prosemirror-state/src/transaction.ts +215 -0
  1023. package/node_modules/prosemirror-tables/LICENSE +19 -0
  1024. package/node_modules/prosemirror-tables/README.md +254 -0
  1025. package/node_modules/prosemirror-tables/dist/index.cjs +2683 -0
  1026. package/node_modules/prosemirror-tables/dist/index.d.cts +751 -0
  1027. package/node_modules/prosemirror-tables/dist/index.d.cts.map +1 -0
  1028. package/node_modules/prosemirror-tables/dist/index.d.ts +751 -0
  1029. package/node_modules/prosemirror-tables/dist/index.d.ts.map +1 -0
  1030. package/node_modules/prosemirror-tables/dist/index.js +2626 -0
  1031. package/node_modules/prosemirror-tables/dist/index.js.map +1 -0
  1032. package/node_modules/prosemirror-tables/package.json +80 -0
  1033. package/node_modules/prosemirror-tables/style/tables.css +48 -0
  1034. package/node_modules/prosemirror-trailing-node/LICENSE +21 -0
  1035. package/node_modules/prosemirror-trailing-node/dist/_tsup-dts-rollup.d.cts +41 -0
  1036. package/node_modules/prosemirror-trailing-node/dist/_tsup-dts-rollup.d.ts +41 -0
  1037. package/node_modules/prosemirror-trailing-node/dist/prosemirror-trailing-node.cjs +70 -0
  1038. package/node_modules/prosemirror-trailing-node/dist/prosemirror-trailing-node.d.cts +2 -0
  1039. package/node_modules/prosemirror-trailing-node/dist/prosemirror-trailing-node.d.ts +2 -0
  1040. package/node_modules/prosemirror-trailing-node/dist/prosemirror-trailing-node.js +43 -0
  1041. package/node_modules/prosemirror-trailing-node/dist-types/index.d.ts +2 -0
  1042. package/node_modules/prosemirror-trailing-node/dist-types/trailing-node-plugin.d.ts +33 -0
  1043. package/node_modules/prosemirror-trailing-node/dist-types/tsconfig.tsbuildinfo +1 -0
  1044. package/node_modules/prosemirror-trailing-node/package.json +57 -0
  1045. package/node_modules/prosemirror-trailing-node/readme.md +55 -0
  1046. package/node_modules/prosemirror-transform/.tern-project +8 -0
  1047. package/node_modules/prosemirror-transform/CHANGELOG.md +502 -0
  1048. package/node_modules/prosemirror-transform/CONTRIBUTING.md +104 -0
  1049. package/node_modules/prosemirror-transform/LICENSE +19 -0
  1050. package/node_modules/prosemirror-transform/README.md +29 -0
  1051. package/node_modules/prosemirror-transform/dist/index.cjs +1888 -0
  1052. package/node_modules/prosemirror-transform/dist/index.d.cts +847 -0
  1053. package/node_modules/prosemirror-transform/dist/index.d.ts +847 -0
  1054. package/node_modules/prosemirror-transform/dist/index.js +2181 -0
  1055. package/node_modules/prosemirror-transform/package.json +37 -0
  1056. package/node_modules/prosemirror-transform/src/README.md +59 -0
  1057. package/node_modules/prosemirror-transform/src/attr_step.ts +98 -0
  1058. package/node_modules/prosemirror-transform/src/index.ts +11 -0
  1059. package/node_modules/prosemirror-transform/src/map.ts +284 -0
  1060. package/node_modules/prosemirror-transform/src/mark.ts +106 -0
  1061. package/node_modules/prosemirror-transform/src/mark_step.ts +224 -0
  1062. package/node_modules/prosemirror-transform/src/replace.ts +460 -0
  1063. package/node_modules/prosemirror-transform/src/replace_step.ts +178 -0
  1064. package/node_modules/prosemirror-transform/src/step.ts +97 -0
  1065. package/node_modules/prosemirror-transform/src/structure.ts +349 -0
  1066. package/node_modules/prosemirror-transform/src/transform.ts +271 -0
  1067. package/node_modules/prosemirror-view/.tern-project +8 -0
  1068. package/node_modules/prosemirror-view/CHANGELOG.md +2447 -0
  1069. package/node_modules/prosemirror-view/CONTRIBUTING.md +104 -0
  1070. package/node_modules/prosemirror-view/LICENSE +19 -0
  1071. package/node_modules/prosemirror-view/README.md +28 -0
  1072. package/node_modules/prosemirror-view/dist/index.cjs +5381 -0
  1073. package/node_modules/prosemirror-view/dist/index.d.cts +904 -0
  1074. package/node_modules/prosemirror-view/dist/index.d.ts +904 -0
  1075. package/node_modules/prosemirror-view/dist/index.js +5900 -0
  1076. package/node_modules/prosemirror-view/package.json +43 -0
  1077. package/node_modules/prosemirror-view/src/README.md +38 -0
  1078. package/node_modules/prosemirror-view/src/browser.ts +24 -0
  1079. package/node_modules/prosemirror-view/src/capturekeys.ts +345 -0
  1080. package/node_modules/prosemirror-view/src/clipboard.ts +263 -0
  1081. package/node_modules/prosemirror-view/src/decoration.ts +793 -0
  1082. package/node_modules/prosemirror-view/src/dom.ts +159 -0
  1083. package/node_modules/prosemirror-view/src/domchange.ts +383 -0
  1084. package/node_modules/prosemirror-view/src/domcoords.ts +515 -0
  1085. package/node_modules/prosemirror-view/src/domobserver.ts +392 -0
  1086. package/node_modules/prosemirror-view/src/index.ts +825 -0
  1087. package/node_modules/prosemirror-view/src/input.ts +830 -0
  1088. package/node_modules/prosemirror-view/src/selection.ts +216 -0
  1089. package/node_modules/prosemirror-view/src/viewdesc.ts +1590 -0
  1090. package/node_modules/prosemirror-view/style/prosemirror.css +54 -0
  1091. package/node_modules/punycode.js/LICENSE-MIT.txt +20 -0
  1092. package/node_modules/punycode.js/README.md +148 -0
  1093. package/node_modules/punycode.js/package.json +58 -0
  1094. package/node_modules/punycode.js/punycode.es6.js +444 -0
  1095. package/node_modules/punycode.js/punycode.js +443 -0
  1096. package/node_modules/rope-sequence/LICENSE +19 -0
  1097. package/node_modules/rope-sequence/README.md +63 -0
  1098. package/node_modules/rope-sequence/dist/index.cjs +209 -0
  1099. package/node_modules/rope-sequence/dist/index.d.cts +11 -0
  1100. package/node_modules/rope-sequence/dist/index.d.ts +11 -0
  1101. package/node_modules/rope-sequence/dist/index.js +207 -0
  1102. package/node_modules/rope-sequence/index.js +190 -0
  1103. package/node_modules/rope-sequence/package.json +34 -0
  1104. package/node_modules/rope-sequence/test.js +78 -0
  1105. package/node_modules/uc.micro/LICENSE.txt +20 -0
  1106. package/node_modules/uc.micro/README.md +14 -0
  1107. package/node_modules/uc.micro/build/index.cjs.js +20 -0
  1108. package/node_modules/uc.micro/categories/Cc/regex.mjs +1 -0
  1109. package/node_modules/uc.micro/categories/Cf/regex.mjs +1 -0
  1110. package/node_modules/uc.micro/categories/P/regex.mjs +1 -0
  1111. package/node_modules/uc.micro/categories/S/regex.mjs +1 -0
  1112. package/node_modules/uc.micro/categories/Z/regex.mjs +1 -0
  1113. package/node_modules/uc.micro/index.mjs +8 -0
  1114. package/node_modules/uc.micro/package.json +37 -0
  1115. package/node_modules/uc.micro/properties/Any/regex.mjs +1 -0
  1116. package/node_modules/use-sync-external-store/LICENSE +21 -0
  1117. package/node_modules/use-sync-external-store/README.md +5 -0
  1118. package/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +97 -0
  1119. package/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js +85 -0
  1120. package/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +95 -0
  1121. package/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.native.development.js +88 -0
  1122. package/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.native.production.js +59 -0
  1123. package/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +66 -0
  1124. package/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.development.js +96 -0
  1125. package/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js +84 -0
  1126. package/node_modules/use-sync-external-store/cjs/use-sync-external-store.development.js +27 -0
  1127. package/node_modules/use-sync-external-store/cjs/use-sync-external-store.production.js +13 -0
  1128. package/node_modules/use-sync-external-store/index.js +7 -0
  1129. package/node_modules/use-sync-external-store/package.json +43 -0
  1130. package/node_modules/use-sync-external-store/shim/index.js +7 -0
  1131. package/node_modules/use-sync-external-store/shim/index.native.js +7 -0
  1132. package/node_modules/use-sync-external-store/shim/with-selector.js +7 -0
  1133. package/node_modules/use-sync-external-store/with-selector.js +7 -0
  1134. package/node_modules/w3c-keyname/.tern-port +1 -0
  1135. package/node_modules/w3c-keyname/LICENSE +19 -0
  1136. package/node_modules/w3c-keyname/README.md +18 -0
  1137. package/node_modules/w3c-keyname/index.cjs +127 -0
  1138. package/node_modules/w3c-keyname/index.d.cts +5 -0
  1139. package/node_modules/w3c-keyname/index.d.ts +5 -0
  1140. package/node_modules/w3c-keyname/index.js +119 -0
  1141. package/node_modules/w3c-keyname/package.json +37 -0
  1142. package/package.json +120 -3
  1143. package/public-api.md +0 -1
  1144. package/dist/chat/tool-renderers/KbSearchRenderer.d.ts +0 -2
  1145. package/dist/chat/tool-renderers/kb-search-result.d.ts +0 -19
  1146. package/dist/chunk-T5WGKZN4.js.map +0 -1
  1147. package/dist/chunk-XULCQP3Q.js.map +0 -1
  1148. package/dist/rich-input/extensions/kb-mention.d.ts +0 -18
  1149. package/dist/rich-input/lib/kb-suggestions.d.ts +0 -37
  1150. /package/dist/{chunk-7IPINZHT.js.map → chunk-DPDXGYGM.js.map} +0 -0
@@ -3,7 +3,7 @@ import {
3
3
  PluginTriggerStack,
4
4
  selectionFromItem,
5
5
  triggerSummary
6
- } from "./chunk-7IPINZHT.js";
6
+ } from "./chunk-DPDXGYGM.js";
7
7
  import {
8
8
  Archive,
9
9
  BookOpen,
@@ -34,7 +34,6 @@ import {
34
34
  Play,
35
35
  Plug,
36
36
  Plus,
37
- RefreshCw,
38
37
  Rocket,
39
38
  RotateCcw,
40
39
  Scissors,
@@ -48,7 +47,11 @@ import {
48
47
  cn,
49
48
  cn2,
50
49
  dist_exports2 as dist_exports,
50
+ getInputHistoryGeneration,
51
+ getPluginSuggestionItems,
51
52
  notifyChat,
53
+ onInputCachesReset,
54
+ pluginRefsForSend,
52
55
  sendToSession,
53
56
  useBladeClient,
54
57
  useChatEnvironment,
@@ -59,7 +62,7 @@ import {
59
62
  usePortalContainer,
60
63
  useSessionHandle,
61
64
  useSessionState
62
- } from "./chunk-XULCQP3Q.js";
65
+ } from "./chunk-MERN5XEM.js";
63
66
  import {
64
67
  __commonJS,
65
68
  __require,
@@ -89,7 +92,7 @@ var require_use_sync_external_store_shim_development = __commonJS({
89
92
  inst: { value, getSnapshot }
90
93
  });
91
94
  var inst = cachedValue[0].inst, forceUpdate = cachedValue[1];
92
- useLayoutEffect2(
95
+ useLayoutEffect3(
93
96
  function() {
94
97
  inst.value = value;
95
98
  inst.getSnapshot = getSnapshot;
@@ -123,7 +126,7 @@ var require_use_sync_external_store_shim_development = __commonJS({
123
126
  return getSnapshot();
124
127
  }
125
128
  "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
126
- var React2 = __require("react"), objectIs = "function" === typeof Object.is ? Object.is : is, useState12 = React2.useState, useEffect10 = React2.useEffect, useLayoutEffect2 = React2.useLayoutEffect, useDebugValue3 = React2.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2;
129
+ var React2 = __require("react"), objectIs = "function" === typeof Object.is ? Object.is : is, useState12 = React2.useState, useEffect10 = React2.useEffect, useLayoutEffect3 = React2.useLayoutEffect, useDebugValue3 = React2.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2;
127
130
  exports.useSyncExternalStore = void 0 !== React2.useSyncExternalStore ? React2.useSyncExternalStore : shim;
128
131
  "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
129
132
  })();
@@ -151,9 +154,9 @@ var require_with_selector_development = __commonJS({
151
154
  return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y;
152
155
  }
153
156
  "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
154
- var React2 = __require("react"), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore5 = shim.useSyncExternalStore, useRef9 = React2.useRef, useEffect10 = React2.useEffect, useMemo9 = React2.useMemo, useDebugValue3 = React2.useDebugValue;
157
+ var React2 = __require("react"), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore5 = shim.useSyncExternalStore, useRef10 = React2.useRef, useEffect10 = React2.useEffect, useMemo9 = React2.useMemo, useDebugValue3 = React2.useDebugValue;
155
158
  exports.useSyncExternalStoreWithSelector = function(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {
156
- var instRef = useRef9(null);
159
+ var instRef = useRef10(null);
157
160
  if (null === instRef.current) {
158
161
  var inst = { hasValue: false, value: null };
159
162
  instRef.current = inst;
@@ -288,21 +291,11 @@ function useRichInputServices() {
288
291
  return useContext(RichInputServicesContext);
289
292
  }
290
293
 
291
- // src/rich-input/lib/client-query.ts
292
- import { useCallback, useEffect, useSyncExternalStore as useSyncExternalStore2 } from "react";
293
-
294
- // src/chat/runtime/input-cache-reset.ts
295
- var resetters = /* @__PURE__ */ new WeakMap();
296
- function onInputCachesReset(client, reset2) {
297
- let set = resetters.get(client);
298
- if (!set) {
299
- set = /* @__PURE__ */ new Set();
300
- resetters.set(client, set);
301
- }
302
- set.add(reset2);
303
- }
294
+ // src/rich-input/lib/session-data.ts
295
+ import { useEffect as useEffect2, useRef } from "react";
304
296
 
305
297
  // src/rich-input/lib/client-query.ts
298
+ import { useCallback, useEffect, useSyncExternalStore as useSyncExternalStore2 } from "react";
306
299
  var EMPTY = { data: void 0, error: null, isLoading: false, isFetching: false };
307
300
  var caches = /* @__PURE__ */ new WeakMap();
308
301
  function entryFor(client, key) {
@@ -415,7 +408,6 @@ function refreshClientQuery(client, key) {
415
408
  }
416
409
 
417
410
  // src/rich-input/lib/session-data.ts
418
- import { useEffect as useEffect2, useRef } from "react";
419
411
  var sessionPath = (sessionId, rest) => `/api/sessions/${encodeURIComponent(sessionId)}/${rest}`;
420
412
  function useRefreshWhenRunEnds(sessionId, keys3) {
421
413
  const client = useBladeClient();
@@ -550,22 +542,6 @@ function useModelPreferences() {
550
542
  const use = useRichInputServices().useModelPreferences ?? useClientModelPreferences;
551
543
  return use();
552
544
  }
553
- function loadKnowledgeBases(client) {
554
- return client.json("GET", "/api/registry/kb").then(
555
- (response) => (Array.isArray(response) ? response : response?.items ?? []).filter((item) => typeof item?.id === "number")
556
- );
557
- }
558
- function useClientKnowledgeBaseLoader() {
559
- const client = useBladeClient();
560
- return useMemo(
561
- () => () => fetchClientQuery(client, "knowledge-bases", loadKnowledgeBases, { staleMs: 6e4 }),
562
- [client]
563
- );
564
- }
565
- function useKnowledgeBaseLoader() {
566
- const use = useRichInputServices().useKnowledgeBaseLoader ?? useClientKnowledgeBaseLoader;
567
- return use();
568
- }
569
545
  function useSessionConnection(sessionId) {
570
546
  const connection = useSessionState(sessionId, (state3) => state3.connection);
571
547
  const status = sessionId ? connection : "connected";
@@ -18931,6 +18907,169 @@ var Mention = Node3.create({
18931
18907
  });
18932
18908
  var index_default = Mention;
18933
18909
 
18910
+ // src/rich-input/extensions/plugin-mention.ts
18911
+ function isPluginSuggestionError(value) {
18912
+ return Boolean(value && typeof value === "object" && value.kind === "pluginError");
18913
+ }
18914
+ function isPluginSuggestionItem(value) {
18915
+ return Boolean(value && typeof value === "object" && value.kind === "plugin");
18916
+ }
18917
+ var PluginMention = index_default.extend({
18918
+ name: "pluginMention",
18919
+ addOptions() {
18920
+ return {
18921
+ ...this.parent?.(),
18922
+ deleteTriggerWithBackspace: true,
18923
+ suggestions: this.parent?.().suggestions ?? [],
18924
+ suggestion: { ...this.parent?.().suggestion, char: "@" },
18925
+ HTMLAttributes: { class: "file-mention-pill" },
18926
+ renderText: ({ node }) => `@${node.attrs.label}`,
18927
+ renderHTML: ({ node }) => ["span", { class: "file-mention-pill", "data-plugin-ref": JSON.stringify(node.attrs) }, `@${node.attrs.label}`]
18928
+ };
18929
+ },
18930
+ addAttributes() {
18931
+ return Object.fromEntries(["provider", "plugin", "server", "id", "label"].map((key) => [key, {
18932
+ default: key === "provider" ? "plugin" : "",
18933
+ parseHTML: (element) => {
18934
+ try {
18935
+ return JSON.parse(element.getAttribute("data-plugin-ref") ?? "{}")[key] ?? "";
18936
+ } catch {
18937
+ return "";
18938
+ }
18939
+ }
18940
+ }]));
18941
+ },
18942
+ parseHTML() {
18943
+ return [{ tag: "span[data-plugin-ref]" }];
18944
+ },
18945
+ addProseMirrorPlugins() {
18946
+ return [];
18947
+ }
18948
+ });
18949
+
18950
+ // src/rich-input/lib/composer-content.ts
18951
+ import { normalizePluginRefs, normalizeTopicAssetRefs } from "@blade-hq/agent-client";
18952
+ function serializeEditorContent(node) {
18953
+ if (!node) return "";
18954
+ if (node.type === "text") {
18955
+ return node.text ?? "";
18956
+ }
18957
+ if (node.type === "hardBreak") {
18958
+ return "\n";
18959
+ }
18960
+ if (node.type === "fileMention") {
18961
+ const path = typeof node.attrs?.path === "string" ? node.attrs.path : "";
18962
+ return path ? `\`${path}\`` : "";
18963
+ }
18964
+ if (node.type === "skillMention") {
18965
+ const skillId = typeof node.attrs?.skillId === "string" ? node.attrs.skillId : "";
18966
+ return skillId ? `<skill>${skillId}</skill>` : "";
18967
+ }
18968
+ if (node.type === "workflowMention") {
18969
+ const name = typeof node.attrs?.name === "string" ? node.attrs.name : "";
18970
+ return name ? `\u8FD0\u884C\u5DE5\u4F5C\u6D41 ${name}` : "";
18971
+ }
18972
+ if (node.type === "pluginMention") return `@${node.attrs?.label ?? ""}`;
18973
+ if (node.type === "topicAssetMention") {
18974
+ const path = typeof node.attrs?.path === "string" ? node.attrs.path : "";
18975
+ return path ? `@${path}` : "";
18976
+ }
18977
+ const children = (node.content ?? []).map((child) => serializeEditorContent(child));
18978
+ if (node.type === "doc") {
18979
+ return children.join("\n");
18980
+ }
18981
+ return children.join("");
18982
+ }
18983
+ function scanLeadingSkillMention(node, seenContent) {
18984
+ if (!node) {
18985
+ return { skill: null, seenContent };
18986
+ }
18987
+ if (node.type === "text") {
18988
+ return { skill: null, seenContent: seenContent || /\S/.test(node.text ?? "") };
18989
+ }
18990
+ if (node.type === "hardBreak" || node.type === "fileMention" || node.type === "workflowMention") {
18991
+ return { skill: null, seenContent: true };
18992
+ }
18993
+ if (node.type === "pluginMention") return { skill: null, seenContent };
18994
+ if (node.type === "topicAssetMention") return { skill: null, seenContent };
18995
+ if (node.type === "skillMention") {
18996
+ const skillId = typeof node.attrs?.skillId === "string" ? node.attrs.skillId : null;
18997
+ return {
18998
+ skill: seenContent || !skillId ? null : {
18999
+ skillId,
19000
+ local: node.attrs?.local !== false,
19001
+ installed: node.attrs?.installed !== false
19002
+ },
19003
+ seenContent: true
19004
+ };
19005
+ }
19006
+ let nextSeenContent = seenContent;
19007
+ for (const child of node.content ?? []) {
19008
+ const result = scanLeadingSkillMention(child, nextSeenContent);
19009
+ if (result.skill) {
19010
+ return result;
19011
+ }
19012
+ nextSeenContent = result.seenContent;
19013
+ }
19014
+ return { skill: null, seenContent: nextSeenContent };
19015
+ }
19016
+ function findLeadingSkillMention(node) {
19017
+ return scanLeadingSkillMention(node, false).skill;
19018
+ }
19019
+ function collectTopicAssetMentions(node) {
19020
+ const refs = [];
19021
+ const visit = (current) => {
19022
+ if (!current) return;
19023
+ if (current.type === "topicAssetMention") refs.push(current.attrs);
19024
+ for (const child of current.content ?? []) visit(child);
19025
+ };
19026
+ visit(node);
19027
+ return normalizeTopicAssetRefs(refs);
19028
+ }
19029
+ function buildEditorDocumentWithMentions(text, topicAssetRefs = []) {
19030
+ const doc3 = buildEditorDocument(text);
19031
+ const replace2 = (node) => {
19032
+ if (node.type !== "text") return [{ ...node, ...node.content ? { content: node.content.flatMap(replace2) } : {} }];
19033
+ let nodes = [node];
19034
+ for (const ref of topicAssetRefs) {
19035
+ nodes = nodes.flatMap((part) => {
19036
+ if (part.type !== "text" || !part.text) return [part];
19037
+ const marker = `@${ref.path}`;
19038
+ const index = part.text.indexOf(marker);
19039
+ if (index < 0) return [part];
19040
+ return [
19041
+ ...index ? [{ type: "text", text: part.text.slice(0, index) }] : [],
19042
+ { type: "topicAssetMention", attrs: { topic_id: ref.topic_id, path: ref.path } },
19043
+ ...index + marker.length < part.text.length ? [{ type: "text", text: part.text.slice(index + marker.length) }] : []
19044
+ ];
19045
+ });
19046
+ }
19047
+ return nodes;
19048
+ };
19049
+ return replace2(doc3)[0];
19050
+ }
19051
+ function retainTopicAssetMentions(node, topicId) {
19052
+ return {
19053
+ ...node,
19054
+ ...node.content ? {
19055
+ content: node.content.filter((child) => child.type !== "topicAssetMention" || child.attrs?.topic_id === topicId).map((child) => retainTopicAssetMentions(child, topicId))
19056
+ } : {}
19057
+ };
19058
+ }
19059
+ function collectPluginMentions(node) {
19060
+ const refs = [];
19061
+ const visit = (current) => {
19062
+ if (!current) return;
19063
+ if (current.type === "pluginMention") refs.push(current.attrs);
19064
+ current.content?.forEach(visit);
19065
+ };
19066
+ visit(node);
19067
+ return normalizePluginRefs(refs);
19068
+ }
19069
+ function buildEditorDocument(text) {
19070
+ return { type: "doc", content: text.split("\n").map((line) => ({ type: "paragraph", content: line ? [{ type: "text", text: line }] : [] })) };
19071
+ }
19072
+
18934
19073
  // src/rich-input/extensions/topic-asset-mention.ts
18935
19074
  function isTopicAssetSuggestionItem(value) {
18936
19075
  return typeof value === "object" && value !== null && value.kind === "topicAsset";
@@ -18969,7 +19108,7 @@ var TopicAssetMention = index_default.extend({
18969
19108
  });
18970
19109
 
18971
19110
  // src/chat/runtime/composer-channels.ts
18972
- import { normalizeTopicAssetRefs } from "@blade-hq/agent-client";
19111
+ import { normalizeTopicAssetRefs as normalizeTopicAssetRefs2 } from "@blade-hq/agent-client";
18973
19112
  import { useSyncExternalStore as useSyncExternalStore3 } from "react";
18974
19113
  function buildSignalId() {
18975
19114
  if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
@@ -19007,7 +19146,7 @@ function consume(key, sessionId) {
19007
19146
  var composerChannels = {
19008
19147
  getState: () => state2,
19009
19148
  addTopicAssetReference(sessionId, ref) {
19010
- setState((current) => ({ ...current, topicAssetReferences: { ...current.topicAssetReferences, [sessionId]: normalizeTopicAssetRefs([...current.topicAssetReferences[sessionId] ?? [], ref]) } }));
19149
+ setState((current) => ({ ...current, topicAssetReferences: { ...current.topicAssetReferences, [sessionId]: normalizeTopicAssetRefs2([...current.topicAssetReferences[sessionId] ?? [], ref]) } }));
19011
19150
  },
19012
19151
  consumeTopicAssetReferences: (sessionId) => consume("topicAssetReferences", sessionId),
19013
19152
  subscribe(listener) {
@@ -19138,14 +19277,6 @@ function workflowParamsTail(item) {
19138
19277
  function workflowRunText(item) {
19139
19278
  return `\u8FD0\u884C\u5DE5\u4F5C\u6D41 ${item.name}${workflowParamsTail(item)}`.trimEnd();
19140
19279
  }
19141
- var COMMANDS = [
19142
- {
19143
- type: "command",
19144
- id: "resync",
19145
- label: "\u540C\u6B65\u6280\u80FD",
19146
- description: "\u4ECE\u914D\u7F6E\u7684\u6280\u80FD\u76EE\u5F55\u62C9\u53D6\u6700\u65B0\u5185\u5BB9"
19147
- }
19148
- ];
19149
19280
  var skillMentionSuggestionKey = new PluginKey("skillMentionSuggestion");
19150
19281
  function getSkillMentionName(attrs) {
19151
19282
  return attrs.displayName || attrs.skillId || "";
@@ -25265,7 +25396,7 @@ var index_default2 = StarterKit;
25265
25396
  // src/rich-input/ChatInput.tsx
25266
25397
  import {
25267
25398
  useEffect as useEffect9,
25268
- useRef as useRef8,
25399
+ useRef as useRef9,
25269
25400
  useState as useState11
25270
25401
  } from "react";
25271
25402
  import { createRoot } from "react-dom/client";
@@ -25972,8 +26103,6 @@ function HoverPanel({
25972
26103
  }
25973
26104
  function SkillStatusBar({
25974
26105
  sessionId,
25975
- onResync,
25976
- isResyncing = false,
25977
26106
  vertical = false,
25978
26107
  className,
25979
26108
  innerClassName,
@@ -26080,17 +26209,6 @@ function SkillStatusBar({
26080
26209
  /* @__PURE__ */ jsx14("span", { className: `inline-block h-1.5 w-1.5 rounded-full ${item.dotClass}` }),
26081
26210
  item.key === "loaded" ? /* @__PURE__ */ jsxs5("div", { className: "group/skill relative flex items-center gap-1.5", children: [
26082
26211
  /* @__PURE__ */ jsx14("span", { className: "font-mono", children: item.text }),
26083
- onResync ? /* @__PURE__ */ jsx14(
26084
- "button",
26085
- {
26086
- type: "button",
26087
- onClick: onResync,
26088
- disabled: isResyncing,
26089
- "aria-label": "\u540C\u6B65\u6280\u80FD",
26090
- className: "inline-flex h-5 w-5 items-center justify-center rounded-full border border-[hsl(var(--border))] bg-[hsl(var(--background))] text-[hsl(var(--muted-foreground))] transition-colors hover:border-[hsl(var(--ring))] hover:text-[hsl(var(--foreground))] disabled:cursor-not-allowed disabled:opacity-50",
26091
- children: /* @__PURE__ */ jsx14(RefreshCw, { size: 12, className: isResyncing ? "animate-spin" : "" })
26092
- }
26093
- ) : null,
26094
26212
  loadedReady && sessionSkills.length > 0 ? /* @__PURE__ */ jsx14(HoverPanel, { title: "\u5DF2\u52A0\u8F7D\u6280\u80FD", children: sessionSkills.length > 0 ? /* @__PURE__ */ jsx14("div", { className: "max-h-40 overflow-y-auto", children: sessionSkills.map((skill) => /* @__PURE__ */ jsxs5("div", { className: "flex items-start gap-2 py-1 leading-relaxed", children: [
26095
26213
  /* @__PURE__ */ jsx14("span", { className: "mt-1.5 inline-block h-2 w-2 shrink-0 rounded-full border border-[hsl(var(--swf-success))] bg-transparent" }),
26096
26214
  /* @__PURE__ */ jsx14("span", { className: "break-words", children: skillDisplayName(skill) })
@@ -26356,39 +26474,6 @@ function ConnectButton({
26356
26474
  ] });
26357
26475
  }
26358
26476
 
26359
- // src/rich-input/lib/kb-suggestions.ts
26360
- function toKbSuggestionItems(knowledgeBases) {
26361
- return knowledgeBases.map((kb) => ({
26362
- kind: "kb",
26363
- kbId: kb.id,
26364
- name: kb.name,
26365
- description: kb.description ?? ""
26366
- }));
26367
- }
26368
- var KB_SUGGESTION_TIMEOUT_MS = 300;
26369
- function withKbSuggestionTimeout(promise, timeoutMs = KB_SUGGESTION_TIMEOUT_MS) {
26370
- return Promise.race([
26371
- promise,
26372
- new Promise((resolve) => {
26373
- setTimeout(() => resolve([]), timeoutMs);
26374
- })
26375
- ]);
26376
- }
26377
- function notifyWhenKbSuggestionsArriveLate(kbPromise, raced, onLate) {
26378
- if (raced.length > 0) return;
26379
- void kbPromise.then((lateItems) => {
26380
- if (lateItems.length > 0) onLate(lateItems);
26381
- });
26382
- }
26383
- function filterKbSuggestions(items, query) {
26384
- if (query.includes("/") || query.includes("\\")) return [];
26385
- const normalized = query.trim().toLowerCase();
26386
- if (!normalized) return [...items];
26387
- return items.filter(
26388
- (item) => item.name.toLowerCase().includes(normalized) || item.description.toLowerCase().includes(normalized)
26389
- );
26390
- }
26391
-
26392
26477
  // src/rich-input/voice/use-voice-input.ts
26393
26478
  import { useCallback as useCallback3, useEffect as useEffect7, useRef as useRef7, useState as useState7 } from "react";
26394
26479
 
@@ -26719,200 +26804,183 @@ function useVoiceInput(options) {
26719
26804
  return { status, error, level, start, stop };
26720
26805
  }
26721
26806
 
26722
- // src/rich-input/lib/composer-content.ts
26723
- import { normalizeTopicAssetRefs as normalizeTopicAssetRefs2 } from "@blade-hq/agent-client";
26724
- function serializeEditorContent(node) {
26725
- if (!node) return "";
26726
- if (node.type === "text") {
26727
- return node.text ?? "";
26728
- }
26729
- if (node.type === "hardBreak") {
26730
- return "\n";
26731
- }
26732
- if (node.type === "fileMention") {
26733
- const path = typeof node.attrs?.path === "string" ? node.attrs.path : "";
26734
- return path ? `\`${path}\`` : "";
26735
- }
26736
- if (node.type === "skillMention") {
26737
- const skillId = typeof node.attrs?.skillId === "string" ? node.attrs.skillId : "";
26738
- return skillId ? `<skill>${skillId}</skill>` : "";
26739
- }
26740
- if (node.type === "workflowMention") {
26741
- const name = typeof node.attrs?.name === "string" ? node.attrs.name : "";
26742
- return name ? `\u8FD0\u884C\u5DE5\u4F5C\u6D41 ${name}` : "";
26743
- }
26744
- if (node.type === "topicAssetMention") {
26745
- const path = typeof node.attrs?.path === "string" ? node.attrs.path : "";
26746
- return path ? `@${path}` : "";
26747
- }
26748
- if (node.type === "kbMention") {
26749
- const name = kbMentionName(node);
26750
- return name ? `@${name}` : "";
26751
- }
26752
- const children = (node.content ?? []).map((child) => serializeEditorContent(child));
26753
- if (node.type === "doc") {
26754
- return children.join("\n");
26755
- }
26756
- return children.join("");
26757
- }
26758
- function scanLeadingSkillMention(node, seenContent) {
26759
- if (!node) {
26760
- return { skill: null, seenContent };
26761
- }
26762
- if (node.type === "text") {
26763
- return { skill: null, seenContent: seenContent || /\S/.test(node.text ?? "") };
26764
- }
26765
- if (node.type === "hardBreak" || node.type === "fileMention" || node.type === "workflowMention") {
26766
- return { skill: null, seenContent: true };
26767
- }
26768
- if (node.type === "topicAssetMention") return { skill: null, seenContent };
26769
- if (node.type === "kbMention") {
26770
- return { skill: null, seenContent };
26771
- }
26772
- if (node.type === "skillMention") {
26773
- const skillId = typeof node.attrs?.skillId === "string" ? node.attrs.skillId : null;
26774
- return {
26775
- skill: seenContent || !skillId ? null : {
26776
- skillId,
26777
- local: node.attrs?.local !== false,
26778
- installed: node.attrs?.installed !== false
26779
- },
26780
- seenContent: true
26781
- };
26782
- }
26783
- let nextSeenContent = seenContent;
26784
- for (const child of node.content ?? []) {
26785
- const result = scanLeadingSkillMention(child, nextSeenContent);
26786
- if (result.skill) {
26807
+ // src/rich-input/use-reference-candidates.ts
26808
+ import { useLayoutEffect as useLayoutEffect2, useRef as useRef8 } from "react";
26809
+
26810
+ // src/rich-input/lib/reference-candidates.ts
26811
+ function createReferenceCandidateController(getScope, sources, timeoutMs = 300) {
26812
+ const requests = /* @__PURE__ */ new WeakMap();
26813
+ let current;
26814
+ const isCurrent = (request) => {
26815
+ const scope = getScope();
26816
+ return current === request && request.scope.length === scope.length && request.scope.every((part, index) => Object.is(part, scope[index]));
26817
+ };
26818
+ const cancel = () => {
26819
+ const previous = current;
26820
+ current = void 0;
26821
+ previous?.finish();
26822
+ previous?.listener?.({
26823
+ groups: { plugins: [], topics: [], files: [] },
26824
+ items: [],
26825
+ loading: { plugins: false, topics: false, files: false },
26826
+ errors: {}
26827
+ });
26828
+ if (previous) previous.listener = void 0;
26829
+ };
26830
+ return {
26831
+ cancel,
26832
+ query(query) {
26833
+ cancel();
26834
+ const snapshot = {
26835
+ groups: { plugins: [], topics: [], files: [] },
26836
+ items: [],
26837
+ loading: { plugins: Boolean(sources.plugins), topics: true, files: true },
26838
+ errors: {}
26839
+ };
26840
+ let resolve;
26841
+ let finished = false;
26842
+ const result = new Promise((done) => {
26843
+ resolve = done;
26844
+ });
26845
+ const request = {
26846
+ scope: [...getScope()],
26847
+ snapshot,
26848
+ finish: () => {
26849
+ if (finished) return;
26850
+ finished = true;
26851
+ clearTimeout(timer);
26852
+ const items = isCurrent(request) ? snapshot.items : [];
26853
+ requests.set(items, request);
26854
+ resolve(items);
26855
+ }
26856
+ };
26857
+ current = request;
26858
+ const timer = setTimeout(request.finish, timeoutMs);
26859
+ const publish = () => {
26860
+ if (!isCurrent(request)) return;
26861
+ snapshot.items = [...snapshot.groups.plugins, ...snapshot.groups.topics, ...snapshot.groups.files];
26862
+ request.listener?.(snapshot);
26863
+ if (!Object.values(snapshot.loading).some(Boolean)) request.finish();
26864
+ };
26865
+ for (const key of ["plugins", "topics", "files"]) {
26866
+ void Promise.resolve().then(async () => {
26867
+ if (key === "plugins") await new Promise((done) => setTimeout(done, 150));
26868
+ return isCurrent(request) ? sources[key]?.(query) ?? [] : [];
26869
+ }).then((items) => {
26870
+ if (!isCurrent(request)) return;
26871
+ Object.assign(snapshot.groups, { [key]: items });
26872
+ snapshot.loading[key] = false;
26873
+ publish();
26874
+ }, (error) => {
26875
+ if (!isCurrent(request)) return;
26876
+ snapshot.errors[key] = error;
26877
+ snapshot.loading[key] = false;
26878
+ publish();
26879
+ });
26880
+ }
26787
26881
  return result;
26788
- }
26789
- nextSeenContent = result.seenContent;
26790
- }
26791
- return { skill: null, seenContent: nextSeenContent };
26792
- }
26793
- function findLeadingSkillMention(node) {
26794
- return scanLeadingSkillMention(node, false).skill;
26795
- }
26796
- function kbMentionName(node) {
26797
- const name = typeof node.attrs?.name === "string" ? node.attrs.name.trim() : "";
26798
- if (name) return name;
26799
- const kbId = node.attrs?.kbId;
26800
- return typeof kbId === "number" && kbId > 0 ? `\u77E5\u8BC6\u5E93 #${kbId}` : "";
26801
- }
26802
- function collectKbMentions(node) {
26803
- const result = [];
26804
- const seen = /* @__PURE__ */ new Set();
26805
- const visit = (current) => {
26806
- if (!current) return;
26807
- if (current.type === "kbMention") {
26808
- const kbId = current.attrs?.kbId;
26809
- if (typeof kbId === "number" && Number.isInteger(kbId) && kbId > 0 && !seen.has(kbId)) {
26810
- seen.add(kbId);
26811
- result.push({ kbId, name: kbMentionName(current) });
26882
+ },
26883
+ /** Bind by result identity, never by label/query: closing and reopening @ is a new request. */
26884
+ observe(items, listener) {
26885
+ const request = requests.get(items);
26886
+ if (!request || !isCurrent(request)) {
26887
+ listener({
26888
+ groups: { plugins: [], topics: [], files: [] },
26889
+ items: [],
26890
+ loading: { plugins: false, topics: false, files: false },
26891
+ errors: {}
26892
+ });
26893
+ return;
26812
26894
  }
26813
- return;
26895
+ request.listener = listener;
26896
+ listener(request.snapshot);
26814
26897
  }
26815
- for (const child of current.content ?? []) visit(child);
26816
26898
  };
26817
- visit(node);
26818
- return result;
26819
26899
  }
26820
- function buildEditorDocumentWithKbMentions(text, kbMentions) {
26821
- return {
26822
- type: "doc",
26823
- content: text.split("\n").map((line) => ({
26824
- type: "paragraph",
26825
- content: line ? buildLineContentWithKbMentions(line, kbMentions) : []
26826
- }))
26827
- };
26828
- }
26829
- function buildLineContentWithKbMentions(line, kbMentions) {
26830
- if (kbMentions.length === 0) {
26831
- return [{ type: "text", text: line }];
26832
- }
26833
- const matches2 = [];
26834
- for (const mention of kbMentions) {
26835
- if (!mention.name) continue;
26836
- const marker = `@${mention.name}`;
26837
- const index = line.indexOf(marker);
26838
- if (index === -1) continue;
26839
- if (matches2.some((m) => index < m.end && index + marker.length > m.start)) continue;
26840
- matches2.push({ start: index, end: index + marker.length, kbId: mention.kbId, name: mention.name });
26841
- }
26842
- if (matches2.length === 0) {
26843
- return [{ type: "text", text: line }];
26844
- }
26845
- matches2.sort((a, b) => a.start - b.start);
26846
- const content = [];
26847
- let cursor = 0;
26848
- for (const match of matches2) {
26849
- if (match.start > cursor) {
26850
- content.push({ type: "text", text: line.slice(cursor, match.start) });
26851
- }
26852
- content.push({ type: "kbMention", attrs: { kbId: match.kbId, name: match.name } });
26853
- cursor = match.end;
26854
- }
26855
- if (cursor < line.length) {
26856
- content.push({ type: "text", text: line.slice(cursor) });
26857
- }
26858
- return content;
26859
- }
26860
- function collectTopicAssetMentions(node) {
26861
- const refs = [];
26862
- const visit = (current) => {
26863
- if (!current) return;
26864
- if (current.type === "topicAssetMention") refs.push(current.attrs);
26865
- for (const child of current.content ?? []) visit(child);
26866
- };
26867
- visit(node);
26868
- return normalizeTopicAssetRefs2(refs);
26900
+
26901
+ // src/rich-input/use-reference-candidates.ts
26902
+ function useReferenceCandidates(getScope, sources) {
26903
+ const readScope = useEffectEvent(getScope);
26904
+ const plugins = useEffectEvent((query) => sources.plugins?.(query) ?? Promise.resolve([]));
26905
+ const topics = useEffectEvent(sources.topics);
26906
+ const files = useEffectEvent(sources.files);
26907
+ const ref = useRef8(null);
26908
+ if (!ref.current) ref.current = createReferenceCandidateController(readScope, { plugins, topics, files });
26909
+ const controller = ref.current;
26910
+ const [client, identity, session, topic] = getScope();
26911
+ useLayoutEffect2(() => onInputCachesReset(client, controller.cancel), [client, controller]);
26912
+ useLayoutEffect2(() => () => controller.cancel(), [controller, client, identity, session, topic]);
26913
+ return controller;
26869
26914
  }
26870
- function buildEditorDocumentWithMentions(text, kbMentions = [], topicAssetRefs = []) {
26871
- const doc3 = buildEditorDocumentWithKbMentions(text, kbMentions);
26872
- const replace2 = (node) => {
26873
- if (node.type !== "text") return [{ ...node, ...node.content ? { content: node.content.flatMap(replace2) } : {} }];
26874
- let nodes = [node];
26875
- for (const ref of topicAssetRefs) {
26876
- nodes = nodes.flatMap((part) => {
26877
- if (part.type !== "text" || !part.text) return [part];
26878
- const marker = `@${ref.path}`;
26879
- const index = part.text.indexOf(marker);
26880
- if (index < 0) return [part];
26881
- return [
26882
- ...index ? [{ type: "text", text: part.text.slice(0, index) }] : [],
26883
- { type: "topicAssetMention", attrs: { topic_id: ref.topic_id, path: ref.path } },
26884
- ...index + marker.length < part.text.length ? [{ type: "text", text: part.text.slice(index + marker.length) }] : []
26885
- ];
26886
- });
26887
- }
26888
- return nodes;
26915
+
26916
+ // src/rich-input/use-input-history.ts
26917
+ import { useCallback as useCallback4, useEffect as useEffect8, useMemo as useMemo7, useState as useState8 } from "react";
26918
+
26919
+ // src/rich-input/lib/input-history-document.ts
26920
+ import { normalizeTopicAssetRefs as normalizeTopicAssetRefs3 } from "@blade-hq/agent-client";
26921
+ function copyEditorDocument(value) {
26922
+ const attributes = {
26923
+ pluginMention: { provider: "string", plugin: "string", server: "string", id: "string", label: "string" },
26924
+ fileMention: { path: "string", name: "string" },
26925
+ topicAssetMention: { topic_id: "string", path: "string" },
26926
+ skillMention: { skillId: "string", displayName: "string", description: "string", local: "boolean", installed: "boolean" },
26927
+ workflowMention: { name: "string" }
26889
26928
  };
26890
- return replace2(doc3)[0];
26891
- }
26892
- function retainTopicAssetMentions(node, topicId) {
26893
- return {
26894
- ...node,
26895
- ...node.content ? {
26896
- content: node.content.filter((child) => child.type !== "topicAssetMention" || child.attrs?.topic_id === topicId).map((child) => retainTopicAssetMentions(child, topicId))
26897
- } : {}
26929
+ const copy2 = (input, parent) => {
26930
+ if (!input || typeof input !== "object" || Array.isArray(input)) return null;
26931
+ const node = input;
26932
+ const type = node.type;
26933
+ if (!type || (parent === null ? type !== "doc" : parent === "doc" ? type !== "paragraph" : !["text", "hardBreak", ...Object.keys(attributes)].includes(type))) return null;
26934
+ if (type === "doc" || type === "paragraph") {
26935
+ if (!Array.isArray(node.content) && node.content !== void 0) return null;
26936
+ const content = [];
26937
+ for (const child of node.content ?? []) {
26938
+ const copied = copy2(child, type);
26939
+ if (!copied) return null;
26940
+ content.push(copied);
26941
+ }
26942
+ return { type, content };
26943
+ }
26944
+ if (node.content !== void 0) return null;
26945
+ if (type === "text") {
26946
+ if (typeof node.text !== "string" || !node.text) return null;
26947
+ const marks = node.marks?.filter((mark) => ["bold", "italic", "strike", "code", "underline"].includes(mark.type)).map((mark) => ({ type: mark.type }));
26948
+ return { type, text: node.text, ...marks?.length ? { marks } : {} };
26949
+ }
26950
+ if (type === "hardBreak") return { type };
26951
+ const attrs = {};
26952
+ if (!node.attrs || typeof node.attrs !== "object" || Array.isArray(node.attrs)) return null;
26953
+ for (const [key, expected] of Object.entries(attributes[type])) {
26954
+ const attr = node.attrs[key];
26955
+ if (attr === void 0) continue;
26956
+ if (expected === "string" && typeof attr !== "string" || expected === "number" && typeof attr !== "number" || expected === "boolean" && typeof attr !== "boolean") return null;
26957
+ attrs[key] = attr;
26958
+ }
26959
+ if (type === "topicAssetMention" && normalizeTopicAssetRefs3([attrs]).length !== 1) return null;
26960
+ return { type, attrs };
26898
26961
  };
26962
+ try {
26963
+ return copy2(value, null);
26964
+ } catch {
26965
+ return null;
26966
+ }
26899
26967
  }
26900
26968
 
26901
26969
  // src/rich-input/use-input-history.ts
26902
- import { normalizeTopicAssetRefs as normalizeTopicAssetRefs3 } from "@blade-hq/agent-client";
26903
- import { useCallback as useCallback4, useEffect as useEffect8, useMemo as useMemo7, useState as useState8 } from "react";
26904
26970
  var MAX_HISTORY_ENTRIES = 50;
26971
+ var HISTORY_VERSION = 2;
26905
26972
  function getStorageKey(sessionId) {
26906
26973
  return sessionId ? `input-history:${sessionId}` : null;
26907
26974
  }
26908
- function isKbMentionRef(value) {
26909
- return typeof value === "object" && value !== null && typeof value.kbId === "number" && typeof value.name === "string";
26975
+ function copyEntry(value) {
26976
+ if (!value || typeof value !== "object") return null;
26977
+ const entry = value;
26978
+ if (entry.version !== HISTORY_VERSION) return null;
26979
+ const document2 = copyEditorDocument(entry.document);
26980
+ return document2 ? { version: HISTORY_VERSION, document: document2 } : null;
26910
26981
  }
26911
- function isHistoryEntry(value) {
26912
- if (typeof value !== "object" || value === null) return false;
26913
- const candidate = value;
26914
- if (typeof candidate.text !== "string") return false;
26915
- return candidate.kbMentions === void 0 || Array.isArray(candidate.kbMentions) && candidate.kbMentions.every(isKbMentionRef);
26982
+ function emptyEntry() {
26983
+ return { version: HISTORY_VERSION, document: { type: "doc", content: [{ type: "paragraph", content: [] }] } };
26916
26984
  }
26917
26985
  function readEntries(storageKey) {
26918
26986
  if (typeof window === "undefined" || !storageKey) {
@@ -26927,24 +26995,38 @@ function readEntries(storageKey) {
26927
26995
  if (!Array.isArray(parsed)) {
26928
26996
  return [];
26929
26997
  }
26930
- return parsed.filter(isHistoryEntry).map((entry) => ({ text: entry.text, kbMentions: entry.kbMentions ?? [], topicAssetRefs: normalizeTopicAssetRefs3(entry.topicAssetRefs) })).slice(0, MAX_HISTORY_ENTRIES);
26998
+ return parsed.flatMap((value) => {
26999
+ const entry = copyEntry(value);
27000
+ return entry ? [entry] : [];
27001
+ }).slice(0, MAX_HISTORY_ENTRIES);
26931
27002
  } catch {
26932
27003
  return [];
26933
27004
  }
26934
27005
  }
26935
- function useInputHistory(sessionId) {
27006
+ function useInputHistory(sessionId, client) {
27007
+ const [generation, setGeneration] = useState8(getInputHistoryGeneration);
26936
27008
  const storageKey = useMemo7(() => getStorageKey(sessionId), [sessionId]);
26937
27009
  const [entries, setEntries] = useState8([]);
26938
27010
  const [cursor, setCursor] = useState8(null);
26939
- const [draft, setDraft] = useState8("");
27011
+ const [draft, setDraft] = useState8(emptyEntry);
26940
27012
  useEffect8(() => {
27013
+ setGeneration(getInputHistoryGeneration());
26941
27014
  setEntries(readEntries(storageKey));
26942
27015
  setCursor(null);
26943
- setDraft("");
26944
- }, [storageKey]);
27016
+ setDraft(emptyEntry());
27017
+ }, [storageKey, client]);
27018
+ useEffect8(() => {
27019
+ if (!client) return;
27020
+ return onInputCachesReset(client, () => {
27021
+ setGeneration(getInputHistoryGeneration());
27022
+ setEntries([]);
27023
+ setCursor(null);
27024
+ setDraft(emptyEntry());
27025
+ });
27026
+ }, [client]);
26945
27027
  const persistEntries = useCallback4(
26946
27028
  (nextEntries) => {
26947
- if (typeof window === "undefined" || !storageKey) {
27029
+ if (generation !== getInputHistoryGeneration() || typeof window === "undefined" || !storageKey) {
26948
27030
  return;
26949
27031
  }
26950
27032
  try {
@@ -26952,50 +27034,51 @@ function useInputHistory(sessionId) {
26952
27034
  } catch {
26953
27035
  }
26954
27036
  },
26955
- [storageKey]
27037
+ [storageKey, generation]
26956
27038
  );
26957
27039
  const addEntry = useCallback4(
26958
- (value, kbMentions = [], topicAssetRefs = []) => {
26959
- if (!value.trim()) {
26960
- return;
26961
- }
27040
+ (value) => {
27041
+ if (generation !== getInputHistoryGeneration()) return;
27042
+ const document2 = copyEditorDocument(value);
27043
+ if (!document2 || !serializeEditorContent(document2).trim()) return;
26962
27044
  setEntries((prev) => {
26963
- const nextEntries = [{ text: value, kbMentions, topicAssetRefs }, ...prev].slice(0, MAX_HISTORY_ENTRIES);
27045
+ if (generation !== getInputHistoryGeneration()) return prev;
27046
+ const nextEntries = [{ version: HISTORY_VERSION, document: document2 }, ...prev].slice(0, MAX_HISTORY_ENTRIES);
26964
27047
  persistEntries(nextEntries);
26965
27048
  return nextEntries;
26966
27049
  });
26967
27050
  setCursor(null);
26968
- setDraft("");
27051
+ setDraft(emptyEntry());
26969
27052
  },
26970
- [persistEntries]
27053
+ [persistEntries, generation]
26971
27054
  );
26972
27055
  const navigateUp = useCallback4(
26973
- (currentDraft = "") => {
26974
- if (entries.length === 0) {
27056
+ (currentDraft = emptyEntry().document) => {
27057
+ if (generation !== getInputHistoryGeneration() || entries.length === 0) {
26975
27058
  return null;
26976
27059
  }
26977
27060
  if (cursor == null) {
26978
- setDraft(currentDraft);
27061
+ setDraft(copyEntry({ version: HISTORY_VERSION, document: currentDraft }) ?? emptyEntry());
26979
27062
  }
26980
27063
  const nextCursor = cursor == null ? 0 : Math.min(cursor + 1, entries.length - 1);
26981
27064
  setCursor(nextCursor);
26982
- return entries[nextCursor] ?? null;
27065
+ return copyEntry(entries[nextCursor]);
26983
27066
  },
26984
- [cursor, entries]
27067
+ [cursor, entries, generation]
26985
27068
  );
26986
27069
  const navigateDown = useCallback4(() => {
26987
- if (cursor == null) {
27070
+ if (generation !== getInputHistoryGeneration() || cursor == null) {
26988
27071
  return null;
26989
27072
  }
26990
27073
  if (cursor <= 0) {
26991
27074
  setCursor(null);
26992
- return { text: draft, kbMentions: [] };
27075
+ return copyEntry(draft);
26993
27076
  }
26994
27077
  const nextCursor = cursor - 1;
26995
27078
  setCursor(nextCursor);
26996
- return entries[nextCursor] ?? { text: draft, kbMentions: [] };
26997
- }, [cursor, draft, entries]);
26998
- const currentEntry = cursor == null ? { text: draft, kbMentions: [] } : entries[cursor] ?? { text: draft, kbMentions: [] };
27079
+ return copyEntry(entries[nextCursor]) ?? copyEntry(draft);
27080
+ }, [cursor, draft, entries, generation]);
27081
+ const currentEntry = cursor == null ? copyEntry(draft) : copyEntry(entries[cursor]) ?? copyEntry(draft);
26999
27082
  return {
27000
27083
  addEntry,
27001
27084
  navigateUp,
@@ -27120,59 +27203,6 @@ function listUserHomeDir(client, dirPath) {
27120
27203
  return entries;
27121
27204
  }
27122
27205
 
27123
- // src/rich-input/extensions/kb-mention.ts
27124
- function isKbSuggestionItem(value) {
27125
- return typeof value === "object" && value !== null && value.kind === "kb" && typeof value.kbId === "number";
27126
- }
27127
- function getKbMentionName(attrs) {
27128
- return attrs.name || (attrs.kbId != null ? `\u77E5\u8BC6\u5E93 #${attrs.kbId}` : "");
27129
- }
27130
- var KbMention = index_default.extend({
27131
- name: "kbMention",
27132
- addOptions() {
27133
- const parentOptions = this.parent?.();
27134
- return {
27135
- ...parentOptions,
27136
- HTMLAttributes: {
27137
- ...parentOptions?.HTMLAttributes ?? {},
27138
- class: "kb-mention-pill"
27139
- },
27140
- deleteTriggerWithBackspace: true,
27141
- // 只为满足 Mention 的选项类型;下面 addProseMirrorPlugins 返回空,不会真的装上。
27142
- suggestion: { ...parentOptions?.suggestion ?? {}, char: "@" },
27143
- suggestions: parentOptions?.suggestions ?? [],
27144
- renderText: ({ node }) => `@${getKbMentionName(node.attrs)}`,
27145
- renderHTML: ({ options, node }) => [
27146
- "span",
27147
- {
27148
- ...options.HTMLAttributes ?? {},
27149
- class: "kb-mention-pill",
27150
- "data-kb-id": String(node.attrs.kbId ?? ""),
27151
- "data-name": node.attrs.name
27152
- },
27153
- `@${getKbMentionName(node.attrs)}`
27154
- ]
27155
- };
27156
- },
27157
- addAttributes() {
27158
- return {
27159
- kbId: {
27160
- default: 0,
27161
- parseHTML: (element) => Number(element.getAttribute("data-kb-id") || 0),
27162
- renderHTML: (attributes) => ({ "data-kb-id": String(attributes.kbId) })
27163
- },
27164
- name: {
27165
- default: "",
27166
- parseHTML: (element) => element.getAttribute("data-name") || "",
27167
- renderHTML: (attributes) => ({ "data-name": attributes.name })
27168
- }
27169
- };
27170
- },
27171
- addProseMirrorPlugins() {
27172
- return [];
27173
- }
27174
- });
27175
-
27176
27206
  // src/rich-input/FileCompletionMenu.tsx
27177
27207
  import { Fragment as Fragment4, jsx as jsx16, jsxs as jsxs7 } from "react/jsx-runtime";
27178
27208
  var ROOT_DIR = ".";
@@ -27305,19 +27335,21 @@ var FileCompletionMenu = forwardRef2(
27305
27335
  () => scope === "userHome" ? { dirPath: query, filterQuery: "" } : parseSuggestionQuery(query),
27306
27336
  [query, scope]
27307
27337
  );
27308
- const { kbItems, fileItems, topicItems, topicError } = useMemo8(() => {
27309
- const kbs = [];
27338
+ const { pluginItems, pluginError, fileItems, topicItems, topicError } = useMemo8(() => {
27339
+ let pluginError2;
27340
+ const pluginItems2 = [];
27310
27341
  const files = [];
27311
27342
  const topicItems2 = [];
27312
27343
  let topicError2;
27313
27344
  for (const item of items) {
27314
- if (isTopicAssetSuggestionItem(item)) topicItems2.push(item);
27345
+ if (isPluginSuggestionError(item)) pluginError2 = item.message;
27346
+ else if (isPluginSuggestionItem(item)) pluginItems2.push(item);
27347
+ else if (isTopicAssetSuggestionItem(item)) topicItems2.push(item);
27315
27348
  else if (isTopicAssetSuggestionError(item)) topicError2 = item.message;
27316
- else if (isKbSuggestionItem(item)) kbs.push(item);
27317
27349
  else files.push(item);
27318
27350
  }
27319
- return { kbItems: filterKbSuggestions(kbs, query), fileItems: files, topicItems: topicItems2, topicError: topicError2 };
27320
- }, [items, query]);
27351
+ return { pluginItems: pluginItems2, pluginError: pluginError2, fileItems: files, topicItems: topicItems2, topicError: topicError2 };
27352
+ }, [items]);
27321
27353
  return /* @__PURE__ */ jsx16(
27322
27354
  FileCompletionMenuContent,
27323
27355
  {
@@ -27326,7 +27358,8 @@ var FileCompletionMenu = forwardRef2(
27326
27358
  editor,
27327
27359
  filterQuery,
27328
27360
  items: fileItems,
27329
- kbItems,
27361
+ pluginError,
27362
+ pluginItems,
27330
27363
  topicItems,
27331
27364
  topicError,
27332
27365
  onExit,
@@ -27334,21 +27367,21 @@ var FileCompletionMenu = forwardRef2(
27334
27367
  scope,
27335
27368
  sessionId
27336
27369
  },
27337
- `${scope}:${sessionId ?? "none"}:${dirPath}:${filterQuery}:${kbItems.length}`
27370
+ `${scope}:${sessionId ?? "none"}:${dirPath}:${filterQuery}`
27338
27371
  );
27339
27372
  }
27340
27373
  );
27341
- var FileCompletionMenuContent = forwardRef2(function FileCompletionMenuContent2({ command: command2, editor, filterQuery, items, kbItems, topicItems, topicError, onExit, range, scope, sessionId }, ref) {
27374
+ var FileCompletionMenuContent = forwardRef2(function FileCompletionMenuContent2({ command: command2, editor, filterQuery, items, pluginItems, pluginError, topicItems, topicError, onExit, range, scope, sessionId }, ref) {
27342
27375
  const [rawSelectedIndex, setRawSelectedIndex] = useState9(0);
27343
27376
  const filteredEntries = useMemo8(() => filterEntries(items, filterQuery), [filterQuery, items]);
27344
27377
  const navigableItems = useMemo8(
27345
- () => [...kbItems, ...topicItems, ...filteredEntries],
27346
- [filteredEntries, kbItems, topicItems]
27378
+ () => [...pluginItems, ...topicItems, ...filteredEntries],
27379
+ [filteredEntries, pluginItems, topicItems]
27347
27380
  );
27348
27381
  const selectedIndex = navigableItems.length === 0 ? 0 : Math.min(rawSelectedIndex, navigableItems.length - 1);
27349
27382
  const handleSelect = useCallback5(
27350
27383
  (entry) => {
27351
- if (isKbSuggestionItem(entry) || isTopicAssetSuggestionItem(entry)) {
27384
+ if (isPluginSuggestionItem(entry) || isTopicAssetSuggestionItem(entry)) {
27352
27385
  command2(entry);
27353
27386
  return;
27354
27387
  }
@@ -27410,35 +27443,33 @@ var FileCompletionMenuContent = forwardRef2(function FileCompletionMenuContent2(
27410
27443
  element.scrollIntoView({ block: "nearest" });
27411
27444
  }
27412
27445
  };
27413
- const showGroupLabels = kbItems.length > 0 || topicItems.length > 0 || Boolean(topicError);
27446
+ const showGroupLabels = pluginItems.length > 0 || topicItems.length > 0 || Boolean(topicError);
27414
27447
  const fileEmptyLabel = scope === "session" && !sessionId ? "\u6682\u65E0\u4F1A\u8BDD" : filteredEntries.length === 0 ? "\u6CA1\u6709\u6587\u4EF6" : null;
27415
27448
  return /* @__PURE__ */ jsxs7("div", { className: "max-h-64 overflow-y-auto rounded-xl border border-[hsl(var(--border))] bg-[hsl(var(--popover))] py-1 shadow-[var(--swf-shadow-overlay)]", children: [
27416
- kbItems.length > 0 ? /* @__PURE__ */ jsxs7(Fragment4, { children: [
27417
- /* @__PURE__ */ jsx16("div", { className: "px-3 pt-1 pb-0.5 text-[10px] font-medium uppercase tracking-wider text-[hsl(var(--muted-foreground))]", children: "\u77E5\u8BC6\u5E93" }),
27418
- kbItems.map((item, index) => /* @__PURE__ */ jsxs7(
27419
- "button",
27420
- {
27421
- ref: selectedRef(index),
27422
- type: "button",
27423
- onMouseDown: (event) => {
27424
- event.preventDefault();
27425
- handleSelect(item);
27426
- },
27427
- className: rowClassName(index),
27428
- children: [
27429
- /* @__PURE__ */ jsx16(BookOpen, { size: 14, className: "shrink-0 text-[hsl(var(--primary))]" }),
27430
- /* @__PURE__ */ jsx16("span", { className: "truncate", children: item.name }),
27431
- item.description ? /* @__PURE__ */ jsx16("span", { className: "ml-auto max-w-[50%] truncate text-xs text-[hsl(var(--muted-foreground))]", children: item.description }) : null
27432
- ]
27449
+ pluginError ? /* @__PURE__ */ jsx16("output", { className: "block px-3 py-2 text-xs text-muted-foreground", children: pluginError }) : null,
27450
+ pluginItems.map((item, index) => /* @__PURE__ */ jsxs7(
27451
+ "button",
27452
+ {
27453
+ ref: selectedRef(index),
27454
+ type: "button",
27455
+ className: rowClassName(index),
27456
+ onMouseDown: (event) => {
27457
+ event.preventDefault();
27458
+ handleSelect(item);
27433
27459
  },
27434
- `kb-${item.kbId}`
27435
- ))
27436
- ] }) : null,
27460
+ children: [
27461
+ item.icon ? /* @__PURE__ */ jsx16("img", { src: item.icon, alt: "", width: 16, height: 16, className: "shrink-0" }) : /* @__PURE__ */ jsx16(BookOpen, { size: 14 }),
27462
+ /* @__PURE__ */ jsx16("span", { className: "truncate", children: item.label }),
27463
+ /* @__PURE__ */ jsx16("span", { className: "ml-auto truncate text-xs text-muted-foreground", children: item.display_name })
27464
+ ]
27465
+ },
27466
+ `${item.plugin}:${item.server}:${item.id}`
27467
+ )),
27437
27468
  topicItems.length > 0 || topicError ? /* @__PURE__ */ jsxs7(Fragment4, { children: [
27438
27469
  /* @__PURE__ */ jsx16("div", { className: "px-3 pt-1 pb-0.5 text-xs font-medium text-muted-foreground", children: "\u4E3B\u9898\u8D44\u4EA7" }),
27439
27470
  topicError ? /* @__PURE__ */ jsx16("output", { className: "block px-3 py-2 text-xs text-muted-foreground", children: topicError }) : null,
27440
27471
  topicItems.map((item, topicIndex) => {
27441
- const index = kbItems.length + topicIndex;
27472
+ const index = pluginItems.length + topicIndex;
27442
27473
  return /* @__PURE__ */ jsxs7("button", { ref: selectedRef(index), type: "button", title: item.path, className: rowClassName(index), onMouseDown: (event) => {
27443
27474
  event.preventDefault();
27444
27475
  handleSelect(item);
@@ -27450,7 +27481,7 @@ var FileCompletionMenuContent = forwardRef2(function FileCompletionMenuContent2(
27450
27481
  ] }) : null,
27451
27482
  showGroupLabels ? /* @__PURE__ */ jsx16("div", { className: "px-3 pt-1 pb-0.5 text-[10px] font-medium uppercase tracking-wider text-[hsl(var(--muted-foreground))]", children: "\u6587\u4EF6" }) : null,
27452
27483
  fileEmptyLabel ? /* @__PURE__ */ jsx16("div", { className: "px-3 py-2 text-xs text-[hsl(var(--muted-foreground))]", children: fileEmptyLabel }) : filteredEntries.map((entry, fileIndex) => {
27453
- const index = kbItems.length + topicItems.length + fileIndex;
27484
+ const index = pluginItems.length + topicItems.length + fileIndex;
27454
27485
  return /* @__PURE__ */ jsxs7(
27455
27486
  "button",
27456
27487
  {
@@ -27867,7 +27898,7 @@ var DOUBLE_ESCAPE_MS = 450;
27867
27898
  function getEditorText(editor) {
27868
27899
  return editor?.getText({ blockSeparator: "\n" }) ?? "";
27869
27900
  }
27870
- function replaceEditorText(editor, text, kbMentions = [], topicAssetRefs = []) {
27901
+ function replaceEditorText(editor, text) {
27871
27902
  if (!editor) {
27872
27903
  return;
27873
27904
  }
@@ -27876,7 +27907,7 @@ function replaceEditorText(editor, text, kbMentions = [], topicAssetRefs = []) {
27876
27907
  editor.commands.focus("end");
27877
27908
  return;
27878
27909
  }
27879
- editor.commands.setContent(buildEditorDocumentWithMentions(text, kbMentions, topicAssetRefs));
27910
+ editor.commands.setContent(buildEditorDocument(text));
27880
27911
  editor.commands.focus("end");
27881
27912
  }
27882
27913
  function getFileCardIcon(attachment) {
@@ -28454,8 +28485,6 @@ function ChatInput({
28454
28485
  SkillStatusBarComponent: SkillStatusBarOverride,
28455
28486
  skillStatusBarClassName,
28456
28487
  skillStatusBarInnerClassName,
28457
- onResyncSkills,
28458
- isResyncingSkills = false,
28459
28488
  onOpenSkills,
28460
28489
  inputLabel = "\u8F93\u5165\u6D88\u606F",
28461
28490
  placeholderText,
@@ -28478,9 +28507,9 @@ function ChatInput({
28478
28507
  externalDraft?.setValue(value);
28479
28508
  });
28480
28509
  const externalDraftValue = externalDraft?.value;
28481
- const inputRef = useRef8(input);
28510
+ const inputRef = useRef9(input);
28482
28511
  inputRef.current = input;
28483
- const appliedInitialDraftKeyRef = useRef8(null);
28512
+ const appliedInitialDraftKeyRef = useRef9(null);
28484
28513
  useEffect9(() => {
28485
28514
  if (externalDraftValue == null) return;
28486
28515
  if (inputRef.current === externalDraftValue) return;
@@ -28513,7 +28542,7 @@ function ChatInput({
28513
28542
  }
28514
28543
  );
28515
28544
  const externalAttachmentsValue = externalAttachments?.value;
28516
- const composerAttachmentsRef = useRef8(composerAttachments);
28545
+ const composerAttachmentsRef = useRef9(composerAttachments);
28517
28546
  composerAttachmentsRef.current = composerAttachments;
28518
28547
  useEffect9(() => {
28519
28548
  if (externalAttachmentsValue == null) return;
@@ -28529,16 +28558,16 @@ function ChatInput({
28529
28558
  const invalidation = useSessionDataInvalidation();
28530
28559
  const SkillStatusBarComponent = SkillStatusBarOverride ?? SkillStatusBar;
28531
28560
  const [actionMenuOpen, setActionMenuOpen] = useState11(false);
28532
- const actionMenuOpenRef = useRef8(false);
28561
+ const actionMenuOpenRef = useRef9(false);
28533
28562
  useEffect9(() => {
28534
28563
  actionMenuOpenRef.current = actionMenuOpen;
28535
28564
  }, [actionMenuOpen]);
28536
28565
  const [connectMenuOpen, setConnectMenuOpen] = useState11(false);
28537
- const fileInputRef = useRef8(null);
28538
- const folderInputRef = useRef8(null);
28539
- const editorRef = useRef8(null);
28540
- const lastEscapeAtRef = useRef8(0);
28541
- const localImageUrlsRef = useRef8(/* @__PURE__ */ new Map());
28566
+ const fileInputRef = useRef9(null);
28567
+ const folderInputRef = useRef9(null);
28568
+ const editorRef = useRef9(null);
28569
+ const lastEscapeAtRef = useRef9(0);
28570
+ const localImageUrlsRef = useRef9(/* @__PURE__ */ new Map());
28542
28571
  const currentChatSessionId = useCurrentChatSessionId();
28543
28572
  const activeSessionId = sessionIdProp ?? currentChatSessionId;
28544
28573
  const currentSession = useChatSessionDetail(activeSessionId);
@@ -28565,8 +28594,7 @@ function ChatInput({
28565
28594
  (state3) => activeSessionId ? state3.sendRequests[activeSessionId] : void 0
28566
28595
  );
28567
28596
  const connectionStatus = useComposerConnection(activeSessionId);
28568
- const loadKnowledgeBases2 = useKnowledgeBaseLoader();
28569
- const inputHistory = useInputHistory(activeSessionId);
28597
+ const inputHistory = useInputHistory(activeSessionId, client);
28570
28598
  const queuedTopicRefs = useComposerChannels((state3) => activeSessionId ? state3.topicAssetReferences[activeSessionId] : void 0);
28571
28599
  const getTopicSuggestions = useEffectEvent(async (query) => {
28572
28600
  if (!activeSessionId) return [];
@@ -28579,30 +28607,23 @@ function ChatInput({
28579
28607
  });
28580
28608
  const getSessionId = useEffectEvent(() => activeSessionId);
28581
28609
  const handleSlashCommand = useEffectEvent((commandId) => onCommand?.(commandId));
28582
- const getKbSuggestionItems = useEffectEvent(async () => {
28583
- try {
28584
- return toKbSuggestionItems(await loadKnowledgeBases2());
28585
- } catch {
28586
- return [];
28610
+ const referenceCandidates = useReferenceCandidates(
28611
+ () => [client, client.token, activeSessionId, currentSession?.chat_group_id],
28612
+ {
28613
+ plugins: (query) => getPluginSuggestionItems(client, getSessionId(), query),
28614
+ topics: getTopicSuggestions,
28615
+ files: (query) => getFileSuggestionItems(client, getSessionId(), query)
28587
28616
  }
28588
- });
28589
- const pendingKbRefreshRef = useRef8(null);
28617
+ );
28590
28618
  const [localImageUrls, setLocalImageUrls] = useState11({});
28591
28619
  const getMentionSuggestionItems = useEffectEvent(
28592
28620
  async (query) => {
28593
- const normalizedQuery = query.trim().toLowerCase();
28594
- const commandItems = COMMANDS.filter((item) => {
28595
- if (!normalizedQuery) {
28596
- return true;
28597
- }
28598
- return item.id.toLowerCase().startsWith(normalizedQuery) || item.label.toLowerCase().startsWith(normalizedQuery);
28599
- });
28600
28621
  const skillItems = await getSlashSuggestions(query, {
28601
28622
  client,
28602
28623
  sessionId: getSessionId(),
28603
28624
  renderMode: environment.renderMode ?? "normal"
28604
28625
  }).catch(() => []);
28605
- return [...commandItems, ...skillItems];
28626
+ return skillItems;
28606
28627
  }
28607
28628
  );
28608
28629
  const appendFiles = async (files) => {
@@ -28638,6 +28659,7 @@ function ChatInput({
28638
28659
  const getEditorState = useEffectEvent(() => ({
28639
28660
  input,
28640
28661
  connectionStatus,
28662
+ topicId: currentSession?.chat_group_id ?? null,
28641
28663
  navigateUp: inputHistory.navigateUp,
28642
28664
  navigateDown: inputHistory.navigateDown,
28643
28665
  isNavigatingHistory: inputHistory.isNavigating,
@@ -28672,29 +28694,11 @@ function ChatInput({
28672
28694
  suggestion: {
28673
28695
  char: "@",
28674
28696
  pluginKey: fileMentionSuggestionKey,
28675
- // 知识库和文件两路各自降级:任一路失败不拖垮整个 @ 菜单;知识库还额外
28676
- // 限了个短超时(withKbSuggestionTimeout),Hub 慢或不可达时不拖着本来
28677
- // 秒回的文件候选一起等它。超时只是"这次先不等了",不是"没有知识库"——
28678
- // 真结果迟到后如果菜单还开在同一个 query 上,靠 pendingKbRefreshRef
28679
- // (render() 那边挂的)把知识库分组补进去,不然用户输入 @ 之后不再
28680
- // 打字,菜单就永远空着知识库那组,得关掉重开或改查询词才能看见。
28681
- items: async ({ query }) => {
28682
- const kbPromise = getKbSuggestionItems();
28683
- const topicsPromise = getTopicSuggestions(query);
28684
- const filesPromise = getFileSuggestionItems(client, getSessionId(), query).catch(() => []);
28685
- const kbs = await withKbSuggestionTimeout(kbPromise);
28686
- notifyWhenKbSuggestionsArriveLate(kbPromise, kbs, (lateKbs) => {
28687
- if (pendingKbRefreshRef.current?.query === query) {
28688
- pendingKbRefreshRef.current.applyLateKbs(lateKbs);
28689
- }
28690
- });
28691
- const files = await filesPromise;
28692
- return [...kbs, ...await topicsPromise, ...files];
28693
- },
28697
+ items: ({ query }) => referenceCandidates.query(query),
28694
28698
  command: ({ editor: suggestionEditor, props, range }) => {
28695
28699
  const item = props;
28696
28700
  suggestionEditor.chain().focus().insertContentAt(range, [
28697
- isTopicAssetSuggestionItem(item) ? { type: "topicAssetMention", attrs: { topic_id: item.topic_id, path: item.path } } : isKbSuggestionItem(item) ? { type: "kbMention", attrs: { kbId: item.kbId, name: item.name } } : { type: "fileMention", attrs: { name: item.name, path: item.path } },
28701
+ isPluginSuggestionItem(item) ? { type: "pluginMention", attrs: { provider: item.provider, plugin: item.plugin, server: item.server, id: item.id, label: item.label } } : isTopicAssetSuggestionItem(item) ? { type: "topicAssetMention", attrs: { topic_id: item.topic_id, path: item.path } } : { type: "fileMention", attrs: { name: item.name, path: item.path } },
28698
28702
  {
28699
28703
  type: "text",
28700
28704
  text: " "
@@ -28712,7 +28716,7 @@ function ChatInput({
28712
28716
  exitSuggestion(view, fileMentionSuggestionKey);
28713
28717
  }
28714
28718
  };
28715
- const renderMenu = (props) => {
28719
+ const paintMenu = (props) => {
28716
28720
  if (!container || !root) return;
28717
28721
  updateSuggestionPosition(container, props.clientRect);
28718
28722
  root.render(
@@ -28728,13 +28732,11 @@ function ChatInput({
28728
28732
  }
28729
28733
  )
28730
28734
  );
28731
- pendingKbRefreshRef.current = {
28732
- query: props.query,
28733
- applyLateKbs: (kbs) => {
28734
- if (kbs.length === 0) return;
28735
- renderMenu({ ...props, items: [...kbs, ...props.items] });
28736
- }
28737
- };
28735
+ };
28736
+ const renderMenu = (props) => {
28737
+ referenceCandidates.observe(props.items, (snapshot) => {
28738
+ paintMenu({ ...props, items: snapshot.items });
28739
+ });
28738
28740
  };
28739
28741
  return {
28740
28742
  onStart: (props) => {
@@ -28758,7 +28760,7 @@ function ChatInput({
28758
28760
  container?.remove();
28759
28761
  root = null;
28760
28762
  container = null;
28761
- pendingKbRefreshRef.current = null;
28763
+ referenceCandidates.cancel();
28762
28764
  },
28763
28765
  onKeyDown: ({ event, view }) => {
28764
28766
  if (event.key === "Escape") {
@@ -28773,7 +28775,7 @@ function ChatInput({
28773
28775
  }
28774
28776
  }),
28775
28777
  WorkflowMention,
28776
- KbMention,
28778
+ PluginMention,
28777
28779
  TopicAssetMention,
28778
28780
  SkillMention.configure({
28779
28781
  suggestion: {
@@ -28861,7 +28863,7 @@ function ChatInput({
28861
28863
  }
28862
28864
  })
28863
28865
  ],
28864
- content: buildEditorDocumentWithKbMentions(initialInput, []),
28866
+ content: buildEditorDocument(initialInput),
28865
28867
  onCreate: ({ editor: editorInstance }) => {
28866
28868
  editorRef.current = editorInstance;
28867
28869
  syncEditorState(editorInstance);
@@ -28878,7 +28880,7 @@ function ChatInput({
28878
28880
  "aria-label": resolvedInputLabel,
28879
28881
  "data-testid": "chat-message-input",
28880
28882
  "data-blade-input-label": resolvedInputLabel,
28881
- class: "min-h-[34px] max-h-[240px] overflow-y-auto px-5 py-3 text-sm leading-relaxed text-[hsl(var(--foreground))] focus:outline-none [&_.file-mention-pill]:inline-flex [&_.file-mention-pill]:items-center [&_.file-mention-pill]:rounded-full [&_.file-mention-pill]:bg-[hsl(var(--accent))] [&_.file-mention-pill]:px-2 [&_.file-mention-pill]:py-0.5 [&_.file-mention-pill]:font-medium [&_.file-mention-pill]:text-[hsl(var(--primary))] [&_.file-mention-pill]:select-none [&_.file-mention-pill]:whitespace-nowrap [&_.skill-mention-pill]:inline-flex [&_.skill-mention-pill]:items-center [&_.skill-mention-pill]:rounded-full [&_.skill-mention-pill]:bg-[hsl(var(--primary)/0.15)] [&_.skill-mention-pill]:px-2 [&_.skill-mention-pill]:py-0.5 [&_.skill-mention-pill]:font-medium [&_.skill-mention-pill]:text-[hsl(var(--primary))] [&_.skill-mention-pill]:select-none [&_.skill-mention-pill]:whitespace-nowrap [&_.kb-mention-pill]:inline-flex [&_.kb-mention-pill]:items-center [&_.kb-mention-pill]:rounded-full [&_.kb-mention-pill]:bg-[hsl(var(--accent))] [&_.kb-mention-pill]:px-2 [&_.kb-mention-pill]:py-0.5 [&_.kb-mention-pill]:font-medium [&_.kb-mention-pill]:text-[hsl(var(--primary))] [&_.kb-mention-pill]:select-none [&_.kb-mention-pill]:whitespace-nowrap [&_p:first-child]:mt-0 [&_p:last-child]:mb-0"
28883
+ class: "min-h-[34px] max-h-[240px] overflow-y-auto px-5 py-3 text-sm leading-relaxed text-[hsl(var(--foreground))] focus:outline-none [&_.file-mention-pill]:inline-flex [&_.file-mention-pill]:items-center [&_.file-mention-pill]:rounded-full [&_.file-mention-pill]:bg-[hsl(var(--accent))] [&_.file-mention-pill]:px-2 [&_.file-mention-pill]:py-0.5 [&_.file-mention-pill]:font-medium [&_.file-mention-pill]:text-[hsl(var(--primary))] [&_.file-mention-pill]:select-none [&_.file-mention-pill]:whitespace-nowrap [&_.skill-mention-pill]:inline-flex [&_.skill-mention-pill]:items-center [&_.skill-mention-pill]:rounded-full [&_.skill-mention-pill]:bg-[hsl(var(--primary)/0.15)] [&_.skill-mention-pill]:px-2 [&_.skill-mention-pill]:py-0.5 [&_.skill-mention-pill]:font-medium [&_.skill-mention-pill]:text-[hsl(var(--primary))] [&_.skill-mention-pill]:select-none [&_.skill-mention-pill]:whitespace-nowrap [&_p:first-child]:mt-0 [&_p:last-child]:mb-0"
28882
28884
  },
28883
28885
  handleDOMEvents: {
28884
28886
  focus: () => {
@@ -28901,12 +28903,13 @@ function ChatInput({
28901
28903
  }
28902
28904
  const actionMenuOpen2 = actionMenuOpenRef.current;
28903
28905
  if (shouldHandleHistoryKey(event, actionMenuOpen2) && event.key === "ArrowUp" && (state3.input.trim().length === 0 || state3.isNavigatingHistory)) {
28904
- const previousEntry = state3.navigateUp(state3.input);
28906
+ const previousEntry = state3.navigateUp(editorRef.current?.getJSON());
28905
28907
  if (!previousEntry) {
28906
28908
  return false;
28907
28909
  }
28908
28910
  event.preventDefault();
28909
- replaceEditorText(editorRef.current, previousEntry.text, previousEntry.kbMentions, previousEntry.topicAssetRefs);
28911
+ editorRef.current?.commands.setContent(retainTopicAssetMentions(previousEntry.document, state3.topicId));
28912
+ editorRef.current?.commands.focus("end");
28910
28913
  return true;
28911
28914
  }
28912
28915
  if (shouldHandleHistoryKey(event, actionMenuOpen2) && event.key === "ArrowDown") {
@@ -28915,7 +28918,8 @@ function ChatInput({
28915
28918
  return false;
28916
28919
  }
28917
28920
  event.preventDefault();
28918
- replaceEditorText(editorRef.current, nextEntry.text, nextEntry.kbMentions, nextEntry.topicAssetRefs);
28921
+ editorRef.current?.commands.setContent(retainTopicAssetMentions(nextEntry.document, state3.topicId));
28922
+ editorRef.current?.commands.focus("end");
28919
28923
  return true;
28920
28924
  }
28921
28925
  if (state3.onDoubleEscape && event.key === "Escape" && !isImeCompositionKey(event) && !event.repeat) {
@@ -28969,7 +28973,7 @@ function ChatInput({
28969
28973
  editor.commands.focus("end");
28970
28974
  composerChannels.setRewindDraft(activeSessionId, null);
28971
28975
  }, [activeSessionId, editor, rewindDraft]);
28972
- const submittingRef = useRef8(false);
28976
+ const submittingRef = useRef9(false);
28973
28977
  const [isSubmitting, setIsSubmitting] = useState11(false);
28974
28978
  useEffect9(() => {
28975
28979
  let changed = false;
@@ -29005,6 +29009,22 @@ function ChatInput({
29005
29009
  };
29006
29010
  }, []);
29007
29011
  const sessionHandle = useSessionHandle(activeSessionId);
29012
+ const restoredPluginSelection = useRef9(null);
29013
+ useEffect9(() => {
29014
+ if (!sessionHandle || !activeSessionId || !editor) return;
29015
+ const restore = () => {
29016
+ if (restoredPluginSelection.current === activeSessionId) return;
29017
+ const turns = sessionHandle.getState().turns;
29018
+ const latest = [...turns].reverse().find((turn) => turn.role === "user");
29019
+ if (!latest || latest.turn_id.startsWith("local-user-")) return;
29020
+ restoredPluginSelection.current = activeSessionId;
29021
+ if (!getEditorText(editor).trim() && latest.refs?.length) {
29022
+ editor.commands.setContent({ type: "doc", content: [{ type: "paragraph", content: latest.refs.flatMap((ref) => [{ type: "pluginMention", attrs: { ...ref } }, { type: "text", text: " " }]) }] });
29023
+ }
29024
+ };
29025
+ restore();
29026
+ return sessionHandle.subscribe(restore);
29027
+ }, [sessionHandle, activeSessionId, editor]);
29008
29028
  useEffect9(() => {
29009
29029
  if (!sessionHandle || !activeSessionId) return;
29010
29030
  const offInsert = sessionHandle.on("insertTextRequested", ({ text }) => {
@@ -29071,9 +29091,9 @@ ${append2.text}` : append2.text;
29071
29091
  });
29072
29092
  const { isRecording, level: voiceLevel } = voice;
29073
29093
  const isVoiceStarting = voice.status === "starting";
29074
- const voiceStopRef = useRef8(voice.stop);
29094
+ const voiceStopRef = useRef9(voice.stop);
29075
29095
  voiceStopRef.current = voice.stop;
29076
- const prevSessionIdRef = useRef8(activeSessionId);
29096
+ const prevSessionIdRef = useRef9(activeSessionId);
29077
29097
  useEffect9(() => {
29078
29098
  if (prevSessionIdRef.current !== activeSessionId) {
29079
29099
  prevSessionIdRef.current = activeSessionId;
@@ -29099,7 +29119,7 @@ ${append2.text}` : append2.text;
29099
29119
  }
29100
29120
  if (isStreaming) {
29101
29121
  const json = editor?.getJSON();
29102
- if (composerAttachments.length > 0 || collectKbMentions(json).length > 0 || collectTopicAssetMentions(json).length > 0) {
29122
+ if (composerAttachments.length > 0 || collectPluginMentions(json).length > 0 || collectTopicAssetMentions(json).length > 0) {
29103
29123
  notifyChat(environment, "info", "\u5F53\u524D\u56DE\u590D\u5C1A\u672A\u7ED3\u675F\uFF0C\u5E26\u9644\u4EF6\u6216\u5F15\u7528\u7684\u6D88\u606F\u8BF7\u7B49\u5F85\u672C\u8F6E\u7ED3\u675F\u540E\u518D\u53D1\u9001");
29104
29124
  return;
29105
29125
  }
@@ -29132,8 +29152,11 @@ ${append2.text}` : append2.text;
29132
29152
  let submittedSessionId = activeSessionId;
29133
29153
  const submittedAttachmentIds = composerAttachments.map((attachment) => attachment.id);
29134
29154
  const skill = findLeadingSkillMention(json);
29135
- const kbMentions = collectKbMentions(json);
29136
- const kbIds = kbMentions.map((item) => item.kbId);
29155
+ const refs = collectPluginMentions(json);
29156
+ if (refs.length > 20) {
29157
+ notifyChat(environment, "error", "\u6BCF\u6761\u6D88\u606F\u6700\u591A\u9009\u62E9 20 \u4E2A\u63D2\u4EF6\u6761\u76EE");
29158
+ return;
29159
+ }
29137
29160
  const topicAssetRefs = collectTopicAssetMentions(json);
29138
29161
  if (topicAssetRefs.length > 20) {
29139
29162
  notifyChat(environment, "error", "\u6BCF\u6761\u6D88\u606F\u6700\u591A\u5F15\u7528 20 \u4E2A\u4E3B\u9898\u8D44\u4EA7");
@@ -29278,7 +29301,7 @@ ${append2.text}` : append2.text;
29278
29301
  thinkingOverride: thinkingAvailable && selectedReasoningLevel ? true : void 0,
29279
29302
  reasoningLevel: thinkingAvailable ? selectedReasoningLevel || void 0 : void 0,
29280
29303
  // 只有用户显式 @ 知识库才传选择;纯文本不附加知识库指令。
29281
- kbIds: kbIds.length > 0 ? kbIds : void 0,
29304
+ refs: pluginRefsForSend(refs, sessionHandle?.getState().turns),
29282
29305
  topicAssetRefs: topicAssetRefs.length > 0 ? topicAssetRefs : void 0
29283
29306
  });
29284
29307
  } catch (error) {
@@ -29294,11 +29317,14 @@ ${append2.text}` : append2.text;
29294
29317
  }
29295
29318
  return;
29296
29319
  }
29320
+ if (refs.length && editor && !getEditorText(editor).trim()) {
29321
+ editor.commands.setContent({ type: "doc", content: [{ type: "paragraph", content: refs.flatMap((ref) => [{ type: "pluginMention", attrs: { ...ref } }, { type: "text", text: " " }]) }] });
29322
+ }
29297
29323
  if (activeSessionId && activePendingContexts.length > 0) {
29298
29324
  composerChannels.consumePendingContexts(activeSessionId);
29299
29325
  }
29300
29326
  if (text.trim()) {
29301
- inputHistory.addEntry(text, kbMentions, topicAssetRefs);
29327
+ inputHistory.addEntry(json);
29302
29328
  }
29303
29329
  } finally {
29304
29330
  submittingRef.current = false;
@@ -29325,8 +29351,8 @@ ${append2.text}` : append2.text;
29325
29351
  const reduceMotion = typeof window !== "undefined" && window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;
29326
29352
  return reduceMotion ? fullPlaceholder : "";
29327
29353
  });
29328
- const typewriterPlayedRef = useRef8(false);
29329
- const isTypingRef = useRef8(false);
29354
+ const typewriterPlayedRef = useRef9(false);
29355
+ const isTypingRef = useRef9(false);
29330
29356
  useEffect9(() => {
29331
29357
  if (!typewriterPlaceholder || typewriterPlayedRef.current) return;
29332
29358
  typewriterPlayedRef.current = true;
@@ -29754,8 +29780,6 @@ ${append2.text}` : append2.text;
29754
29780
  SkillStatusBarComponent,
29755
29781
  {
29756
29782
  sessionId: activeSessionId,
29757
- onResync: onResyncSkills,
29758
- isResyncing: isResyncingSkills,
29759
29783
  onOpenSkills,
29760
29784
  vertical: true,
29761
29785
  className: skillStatusBarClassName,
@@ -29873,7 +29897,6 @@ export {
29873
29897
  ATTACHMENT_SIZE_LIMIT_BYTES,
29874
29898
  ATTENTION_STATUSES,
29875
29899
  BackgroundTasksPill,
29876
- COMMANDS,
29877
29900
  ChatInput,
29878
29901
  ComposerAttachmentViewport,
29879
29902
  ConnectButton,
@@ -29881,14 +29904,13 @@ export {
29881
29904
  FileMention,
29882
29905
  FileSizeLimitDialog,
29883
29906
  IMAGE_INPUT_UNSUPPORTED_MESSAGE,
29884
- KB_SUGGESTION_TIMEOUT_MS,
29885
- KbMention,
29886
29907
  LIVE_STATUSES,
29887
29908
  MODEL_LOADING_SEND_HINT,
29888
29909
  MODEL_REASONING_LEVELS_KEY,
29889
29910
  ModelSelector,
29890
29911
  PREFERRED_MODEL_KEY,
29891
29912
  PlanningToggle,
29913
+ PluginMention,
29892
29914
  ProgressCircle,
29893
29915
  ReasoningModeSelect,
29894
29916
  RichInputServicesProvider,
@@ -29900,17 +29922,16 @@ export {
29900
29922
  TopicAssetMention,
29901
29923
  VoiceWaveform,
29902
29924
  WorkflowMention,
29903
- buildEditorDocumentWithKbMentions,
29925
+ buildEditorDocument,
29904
29926
  buildEditorDocumentWithMentions,
29905
29927
  buildSubmitPayload,
29906
29928
  buildVoiceInputUnavailableError,
29907
- collectKbMentions,
29929
+ collectPluginMentions,
29908
29930
  collectTopicAssetMentions,
29909
29931
  entryLabel,
29910
29932
  estimateTokenCount,
29911
29933
  fetchClientQuery,
29912
29934
  fileMentionSuggestionKey,
29913
- filterKbSuggestions,
29914
29935
  findLeadingSkillMention,
29915
29936
  formatFileSize,
29916
29937
  formatStartedAt,
@@ -29918,6 +29939,7 @@ export {
29918
29939
  getFileSuggestionItems,
29919
29940
  getInputModalities,
29920
29941
  getLastUserHomeRuntime,
29942
+ getPluginSuggestionItems,
29921
29943
  getSkillSuggestions,
29922
29944
  getSlashSuggestions,
29923
29945
  getTopicAssetSuggestionItems,
@@ -29928,13 +29950,12 @@ export {
29928
29950
  invalidateSlashSuggestions,
29929
29951
  isImageFile,
29930
29952
  isImeCompositionKey,
29931
- isKbSuggestionItem,
29953
+ isPluginSuggestionItem,
29932
29954
  isSubmittedComposerStillCurrent,
29933
29955
  isTopicAssetSuggestionError,
29934
29956
  isTopicAssetSuggestionItem,
29935
29957
  listUserHomeDir,
29936
29958
  mergeSubmittedAttachmentUpdates,
29937
- notifyWhenKbSuggestionsArriveLate,
29938
29959
  parseUserHomeQuery,
29939
29960
  queueTopicAssetReference,
29940
29961
  reasoningLevelLabel,
@@ -29952,7 +29973,6 @@ export {
29952
29973
  splitTasks,
29953
29974
  statusClass,
29954
29975
  statusLabel,
29955
- toKbSuggestionItems,
29956
29976
  tokenPressureOf,
29957
29977
  uploadedPathsById,
29958
29978
  useBackgroundTaskList,
@@ -29970,10 +29990,10 @@ export {
29970
29990
  useContextStats,
29971
29991
  useDismissSkillSuggestionsOnModeChange,
29972
29992
  useInputHistory,
29973
- useKnowledgeBaseLoader,
29974
29993
  useModelCatalog,
29975
29994
  useModelPreferences,
29976
29995
  useReasoningLevelPreference,
29996
+ useReferenceCandidates,
29977
29997
  useRefreshWhenRunEnds,
29978
29998
  useResolvedModel,
29979
29999
  useRichInputServices,
@@ -29982,7 +30002,6 @@ export {
29982
30002
  useSkillStats,
29983
30003
  useTiptapVoiceInput,
29984
30004
  useVoiceInput,
29985
- withKbSuggestionTimeout,
29986
30005
  workflowParamsTail,
29987
30006
  workflowRunText
29988
30007
  };