@ecsplico/editor 0.0.0-stage → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1230) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/LICENSE +21 -0
  3. package/README.md +232 -2
  4. package/dist/code/CodeSurface.d.ts +24 -0
  5. package/dist/code/CodeSurface.js +57 -0
  6. package/dist/code/CodeSurface.js.map +1 -0
  7. package/dist/code/CodeSurface.vue.d.ts +29 -0
  8. package/dist/code/CodeSurface2.js +75 -0
  9. package/dist/code/CodeSurface2.js.map +1 -0
  10. package/dist/code/chrome-theme.js +76 -0
  11. package/dist/code/chrome-theme.js.map +1 -0
  12. package/dist/code/compartments.js +19 -0
  13. package/dist/code/compartments.js.map +1 -0
  14. package/dist/code/editor-factory.d.ts +41 -0
  15. package/dist/code/editor-factory.js +126 -0
  16. package/dist/code/editor-factory.js.map +1 -0
  17. package/dist/code/format-json.d.ts +27 -0
  18. package/dist/code/format-json.js +94 -0
  19. package/dist/code/format-json.js.map +1 -0
  20. package/dist/code/highlight-style.js +118 -0
  21. package/dist/code/highlight-style.js.map +1 -0
  22. package/dist/code/index.d.ts +6 -0
  23. package/dist/code/index.js +6 -0
  24. package/dist/code/jsonl-language.d.ts +6 -0
  25. package/dist/code/jsonl-language.js +33 -0
  26. package/dist/code/jsonl-language.js.map +1 -0
  27. package/dist/code/kind.d.ts +15 -0
  28. package/dist/code/kind.js +142 -0
  29. package/dist/code/kind.js.map +1 -0
  30. package/dist/code/lang-registry.d.ts +31 -0
  31. package/dist/code/lang-registry.js +54 -0
  32. package/dist/code/lang-registry.js.map +1 -0
  33. package/dist/code/react.d.ts +2 -0
  34. package/dist/code/react.js +1 -0
  35. package/dist/code/vue.d.ts +2 -0
  36. package/dist/code/vue.js +1 -0
  37. package/dist/core/abilities.d.ts +32 -0
  38. package/dist/core/abilities.js +160 -0
  39. package/dist/core/abilities.js.map +1 -0
  40. package/dist/core/block-convert.d.ts +59 -0
  41. package/dist/core/block-convert.js +164 -0
  42. package/dist/core/block-convert.js.map +1 -0
  43. package/dist/core/block-drag.d.ts +12 -0
  44. package/dist/core/block-drag.js +62 -0
  45. package/dist/core/block-drag.js.map +1 -0
  46. package/dist/core/block-flash.d.ts +19 -0
  47. package/dist/core/block-flash.js +66 -0
  48. package/dist/core/block-flash.js.map +1 -0
  49. package/dist/core/context.d.ts +63 -0
  50. package/dist/core/context.js +108 -0
  51. package/dist/core/context.js.map +1 -0
  52. package/dist/core/convert.d.ts +96 -0
  53. package/dist/core/convert.js +241 -0
  54. package/dist/core/convert.js.map +1 -0
  55. package/dist/core/core-feature.d.ts +17 -0
  56. package/dist/core/core-feature.js +100 -0
  57. package/dist/core/core-feature.js.map +1 -0
  58. package/dist/core/define-editor.d.ts +23 -0
  59. package/dist/core/define-editor.js +110 -0
  60. package/dist/core/define-editor.js.map +1 -0
  61. package/dist/core/doc-anchors.d.ts +67 -0
  62. package/dist/core/doc-anchors.js +112 -0
  63. package/dist/core/doc-anchors.js.map +1 -0
  64. package/dist/core/document-markdown.d.ts +13 -0
  65. package/dist/core/document-markdown.js +31 -0
  66. package/dist/core/document-markdown.js.map +1 -0
  67. package/dist/core/download.d.ts +5 -0
  68. package/dist/core/download.js +16 -0
  69. package/dist/core/download.js.map +1 -0
  70. package/dist/core/editor-ui.d.ts +45 -0
  71. package/dist/core/editor-ui.js +38 -0
  72. package/dist/core/editor-ui.js.map +1 -0
  73. package/dist/core/extension-points.d.ts +64 -0
  74. package/dist/core/feature-context.d.ts +32 -0
  75. package/dist/core/feature-context.js +46 -0
  76. package/dist/core/feature-context.js.map +1 -0
  77. package/dist/core/feature.d.ts +234 -0
  78. package/dist/core/feature.js +13 -0
  79. package/dist/core/feature.js.map +1 -0
  80. package/dist/core/fences.d.ts +16 -0
  81. package/dist/core/fences.js +105 -0
  82. package/dist/core/fences.js.map +1 -0
  83. package/dist/core/fetch-error.d.ts +5 -0
  84. package/dist/core/fetch-error.js +11 -0
  85. package/dist/core/fetch-error.js.map +1 -0
  86. package/dist/core/index.d.ts +28 -0
  87. package/dist/core/index.js +27 -0
  88. package/dist/core/metadata-types.d.ts +27 -0
  89. package/dist/core/metadata-types.js +10 -0
  90. package/dist/core/metadata-types.js.map +1 -0
  91. package/dist/core/metadata.d.ts +39 -0
  92. package/dist/core/metadata.js +76 -0
  93. package/dist/core/metadata.js.map +1 -0
  94. package/dist/core/notify.d.ts +31 -0
  95. package/dist/core/notify.js +7 -0
  96. package/dist/core/notify.js.map +1 -0
  97. package/dist/core/pipeline.d.ts +52 -0
  98. package/dist/core/pipeline.js +78 -0
  99. package/dist/core/pipeline.js.map +1 -0
  100. package/dist/core/schema/abilities.d.ts +55 -0
  101. package/dist/core/schema/abilities.js +113 -0
  102. package/dist/core/schema/abilities.js.map +1 -0
  103. package/dist/core/schema/block-ids.d.ts +29 -0
  104. package/dist/core/schema/block-ids.js +134 -0
  105. package/dist/core/schema/block-ids.js.map +1 -0
  106. package/dist/core/schema/hex-color.d.ts +5 -0
  107. package/dist/core/schema/hex-color.js +7 -0
  108. package/dist/core/schema/hex-color.js.map +1 -0
  109. package/dist/core/schema/index.d.ts +21 -0
  110. package/dist/core/schema/index.js +33 -0
  111. package/dist/core/schema/index.js.map +1 -0
  112. package/dist/core/schema/mark-flags.d.ts +12 -0
  113. package/dist/core/schema/node-flags.d.ts +23 -0
  114. package/dist/core/schema/node-flags.js +34 -0
  115. package/dist/core/schema/node-flags.js.map +1 -0
  116. package/dist/core/schema/opaque-fence.d.ts +11 -0
  117. package/dist/core/schema/opaque-fence.js +57 -0
  118. package/dist/core/schema/opaque-fence.js.map +1 -0
  119. package/dist/core/schema/strike.d.ts +4 -0
  120. package/dist/core/schema/strike.js +9 -0
  121. package/dist/core/schema/strike.js.map +1 -0
  122. package/dist/core/selection-range.d.ts +13 -0
  123. package/dist/core/selection-range.js +28 -0
  124. package/dist/core/selection-range.js.map +1 -0
  125. package/dist/core/slash.d.ts +24 -0
  126. package/dist/core/slash.js +60 -0
  127. package/dist/core/slash.js.map +1 -0
  128. package/dist/core/store.d.ts +22 -0
  129. package/dist/core/store.js +61 -0
  130. package/dist/core/store.js.map +1 -0
  131. package/dist/core/suggestion-popup.d.ts +63 -0
  132. package/dist/core/suggestion-popup.js +57 -0
  133. package/dist/core/suggestion-popup.js.map +1 -0
  134. package/dist/core/tag-name.js +11 -0
  135. package/dist/core/tag-name.js.map +1 -0
  136. package/dist/core/toolbar-items.d.ts +10 -0
  137. package/dist/core/toolbar-items.js +206 -0
  138. package/dist/core/toolbar-items.js.map +1 -0
  139. package/dist/core/toolbar.d.ts +74 -0
  140. package/dist/core/toolbar.js +45 -0
  141. package/dist/core/toolbar.js.map +1 -0
  142. package/dist/document/DocumentSurface.d.ts +38 -0
  143. package/dist/document/DocumentSurface.js +44 -0
  144. package/dist/document/DocumentSurface.js.map +1 -0
  145. package/dist/document/DocumentSurface.vue.d.ts +56 -0
  146. package/dist/document/DocumentSurface2.js +71 -0
  147. package/dist/document/DocumentSurface2.js.map +1 -0
  148. package/dist/document/react.d.ts +2 -0
  149. package/dist/document/react.js +1 -0
  150. package/dist/document/vue.d.ts +2 -0
  151. package/dist/document/vue.js +1 -0
  152. package/dist/features/ai/agent-op-review.d.ts +69 -0
  153. package/dist/features/ai/agent-op-review.js +182 -0
  154. package/dist/features/ai/agent-op-review.js.map +1 -0
  155. package/dist/features/ai/agent-ops.d.ts +15 -0
  156. package/dist/features/ai/agent-ops.js +228 -0
  157. package/dist/features/ai/agent-ops.js.map +1 -0
  158. package/dist/features/ai/ai-apply.d.ts +76 -0
  159. package/dist/features/ai/ai-apply.js +193 -0
  160. package/dist/features/ai/ai-apply.js.map +1 -0
  161. package/dist/features/ai/ai-menu.d.ts +38 -0
  162. package/dist/features/ai/ai-menu.js +20 -0
  163. package/dist/features/ai/ai-menu.js.map +1 -0
  164. package/dist/features/ai/ai-review.d.ts +136 -0
  165. package/dist/features/ai/ai-review.js +543 -0
  166. package/dist/features/ai/ai-review.js.map +1 -0
  167. package/dist/features/ai/ai-selection-highlight.d.ts +21 -0
  168. package/dist/features/ai/ai-selection-highlight.js +44 -0
  169. package/dist/features/ai/ai-selection-highlight.js.map +1 -0
  170. package/dist/features/ai/ai-sse.d.ts +28 -0
  171. package/dist/features/ai/ai-sse.js +82 -0
  172. package/dist/features/ai/ai-sse.js.map +1 -0
  173. package/dist/features/ai/assistant.d.ts +53 -0
  174. package/dist/features/ai/assistant.js +82 -0
  175. package/dist/features/ai/assistant.js.map +1 -0
  176. package/dist/features/ai/block-actions.d.ts +20 -0
  177. package/dist/features/ai/block-actions.js +55 -0
  178. package/dist/features/ai/block-actions.js.map +1 -0
  179. package/dist/features/ai/components/AiReviewBar.js +145 -0
  180. package/dist/features/ai/components/AiReviewBar.js.map +1 -0
  181. package/dist/features/ai/components/AiReviewBar.vue.d.ts +15 -0
  182. package/dist/features/ai/components/AiSelectionMenu.js +519 -0
  183. package/dist/features/ai/components/AiSelectionMenu.js.map +1 -0
  184. package/dist/features/ai/components/AiSelectionMenu.vue.d.ts +17 -0
  185. package/dist/features/ai/components/AiSidebar.js +378 -0
  186. package/dist/features/ai/components/AiSidebar.js.map +1 -0
  187. package/dist/features/ai/components/AiSidebar.vue.d.ts +26 -0
  188. package/dist/features/ai/components/DocumentChatAnswer.js +67 -0
  189. package/dist/features/ai/components/DocumentChatAnswer.js.map +1 -0
  190. package/dist/features/ai/components/DocumentChatAnswer.vue.d.ts +13 -0
  191. package/dist/features/ai/components/DocumentChatOps.js +113 -0
  192. package/dist/features/ai/components/DocumentChatOps.js.map +1 -0
  193. package/dist/features/ai/components/DocumentChatOps.vue.d.ts +27 -0
  194. package/dist/features/ai/components/ModelQuickSwitch.js +84 -0
  195. package/dist/features/ai/components/ModelQuickSwitch.js.map +1 -0
  196. package/dist/features/ai/components/ModelQuickSwitch.vue.d.ts +23 -0
  197. package/dist/features/ai/components/SettingsAiTab.js +88 -0
  198. package/dist/features/ai/components/SettingsAiTab.js.map +1 -0
  199. package/dist/features/ai/components/SettingsAiTab.vue.d.ts +6 -0
  200. package/dist/features/ai/components/SettingsModelProfiles.js +260 -0
  201. package/dist/features/ai/components/SettingsModelProfiles.js.map +1 -0
  202. package/dist/features/ai/components/SettingsModelProfiles.vue.d.ts +6 -0
  203. package/dist/features/ai/document-chat-model.d.ts +88 -0
  204. package/dist/features/ai/document-chat-model.js +190 -0
  205. package/dist/features/ai/document-chat-model.js.map +1 -0
  206. package/dist/features/ai/document-chat.d.ts +17 -0
  207. package/dist/features/ai/document-chat.js +112 -0
  208. package/dist/features/ai/document-chat.js.map +1 -0
  209. package/dist/features/ai/feature.d.ts +25 -0
  210. package/dist/features/ai/feature.js +89 -0
  211. package/dist/features/ai/feature.js.map +1 -0
  212. package/dist/features/ai/ghost-autocomplete.d.ts +47 -0
  213. package/dist/features/ai/ghost-autocomplete.js +204 -0
  214. package/dist/features/ai/ghost-autocomplete.js.map +1 -0
  215. package/dist/features/ai/index.d.ts +24 -0
  216. package/dist/features/ai/index.js +23 -0
  217. package/dist/features/ai/model-profiles.d.ts +36 -0
  218. package/dist/features/ai/model-profiles.js +111 -0
  219. package/dist/features/ai/model-profiles.js.map +1 -0
  220. package/dist/features/ai/preview-extensions.js +14 -0
  221. package/dist/features/ai/preview-extensions.js.map +1 -0
  222. package/dist/features/ai/protocol/agent-ops.d.ts +120 -0
  223. package/dist/features/ai/protocol/agent-ops.js +298 -0
  224. package/dist/features/ai/protocol/agent-ops.js.map +1 -0
  225. package/dist/features/ai/protocol/chat.d.ts +57 -0
  226. package/dist/features/ai/protocol/chat.js +146 -0
  227. package/dist/features/ai/protocol/chat.js.map +1 -0
  228. package/dist/features/ai/protocol/complete.d.ts +21 -0
  229. package/dist/features/ai/protocol/complete.js +81 -0
  230. package/dist/features/ai/protocol/complete.js.map +1 -0
  231. package/dist/features/ai/protocol/index.d.ts +7 -0
  232. package/dist/features/ai/protocol/index.js +7 -0
  233. package/dist/features/ai/protocol/models.d.ts +48 -0
  234. package/dist/features/ai/protocol/models.js +41 -0
  235. package/dist/features/ai/protocol/models.js.map +1 -0
  236. package/dist/features/ai/protocol/schemas.d.ts +36 -0
  237. package/dist/features/ai/protocol/schemas.js +40 -0
  238. package/dist/features/ai/protocol/schemas.js.map +1 -0
  239. package/dist/features/ai/protocol/tasks.d.ts +107 -0
  240. package/dist/features/ai/protocol/tasks.js +227 -0
  241. package/dist/features/ai/protocol/tasks.js.map +1 -0
  242. package/dist/features/ai/rate-limit.d.ts +9 -0
  243. package/dist/features/ai/rate-limit.js +20 -0
  244. package/dist/features/ai/rate-limit.js.map +1 -0
  245. package/dist/features/ai/react/AiReviewBar.d.ts +12 -0
  246. package/dist/features/ai/react/AiReviewBar.js +156 -0
  247. package/dist/features/ai/react/AiReviewBar.js.map +1 -0
  248. package/dist/features/ai/react/AiSelectionMenu.d.ts +14 -0
  249. package/dist/features/ai/react/AiSelectionMenu.js +513 -0
  250. package/dist/features/ai/react/AiSelectionMenu.js.map +1 -0
  251. package/dist/features/ai/react/AiSidebar.d.ts +19 -0
  252. package/dist/features/ai/react/AiSidebar.js +339 -0
  253. package/dist/features/ai/react/AiSidebar.js.map +1 -0
  254. package/dist/features/ai/react/DocumentChatAnswer.d.ts +10 -0
  255. package/dist/features/ai/react/DocumentChatAnswer.js +70 -0
  256. package/dist/features/ai/react/DocumentChatAnswer.js.map +1 -0
  257. package/dist/features/ai/react/DocumentChatOps.d.ts +19 -0
  258. package/dist/features/ai/react/DocumentChatOps.js +111 -0
  259. package/dist/features/ai/react/DocumentChatOps.js.map +1 -0
  260. package/dist/features/ai/react/ModelQuickSwitch.d.ts +19 -0
  261. package/dist/features/ai/react/ModelQuickSwitch.js +89 -0
  262. package/dist/features/ai/react/ModelQuickSwitch.js.map +1 -0
  263. package/dist/features/ai/react/SettingsAiTab.d.ts +5 -0
  264. package/dist/features/ai/react/SettingsAiTab.js +103 -0
  265. package/dist/features/ai/react/SettingsAiTab.js.map +1 -0
  266. package/dist/features/ai/react/SettingsModelProfiles.d.ts +8 -0
  267. package/dist/features/ai/react/SettingsModelProfiles.js +318 -0
  268. package/dist/features/ai/react/SettingsModelProfiles.js.map +1 -0
  269. package/dist/features/ai/react/use-ai-assistant.d.ts +22 -0
  270. package/dist/features/ai/react/use-ai-assistant.js +36 -0
  271. package/dist/features/ai/react/use-ai-assistant.js.map +1 -0
  272. package/dist/features/ai/react/use-document-chat.d.ts +32 -0
  273. package/dist/features/ai/react/use-document-chat.js +43 -0
  274. package/dist/features/ai/react/use-document-chat.js.map +1 -0
  275. package/dist/features/ai/react/use-model-profiles.d.ts +20 -0
  276. package/dist/features/ai/react/use-model-profiles.js +33 -0
  277. package/dist/features/ai/react/use-model-profiles.js.map +1 -0
  278. package/dist/features/ai/react.d.ts +23 -0
  279. package/dist/features/ai/react.js +28 -0
  280. package/dist/features/ai/react.js.map +1 -0
  281. package/dist/features/ai/sidebar-flow.d.ts +61 -0
  282. package/dist/features/ai/sidebar-flow.js +125 -0
  283. package/dist/features/ai/sidebar-flow.js.map +1 -0
  284. package/dist/features/ai/use-ai-assistant.d.ts +22 -0
  285. package/dist/features/ai/use-ai-assistant.js +39 -0
  286. package/dist/features/ai/use-ai-assistant.js.map +1 -0
  287. package/dist/features/ai/use-document-chat.d.ts +33 -0
  288. package/dist/features/ai/use-document-chat.js +45 -0
  289. package/dist/features/ai/use-document-chat.js.map +1 -0
  290. package/dist/features/ai/use-model-profiles.d.ts +23 -0
  291. package/dist/features/ai/use-model-profiles.js +50 -0
  292. package/dist/features/ai/use-model-profiles.js.map +1 -0
  293. package/dist/features/ai/vue.d.ts +21 -0
  294. package/dist/features/ai/vue.js +28 -0
  295. package/dist/features/ai/vue.js.map +1 -0
  296. package/dist/features/authors/attribution.d.ts +36 -0
  297. package/dist/features/authors/attribution.js +94 -0
  298. package/dist/features/authors/attribution.js.map +1 -0
  299. package/dist/features/authors/author-color-styles.d.ts +12 -0
  300. package/dist/features/authors/author-color-styles.js +24 -0
  301. package/dist/features/authors/author-color-styles.js.map +1 -0
  302. package/dist/features/authors/components/AuthorColorsButton.js +50 -0
  303. package/dist/features/authors/components/AuthorColorsButton.js.map +1 -0
  304. package/dist/features/authors/components/AuthorColorsButton.vue.d.ts +11 -0
  305. package/dist/features/authors/components/AuthorColorsPanel.js +72 -0
  306. package/dist/features/authors/components/AuthorColorsPanel.js.map +1 -0
  307. package/dist/features/authors/components/AuthorColorsPanel.vue.d.ts +11 -0
  308. package/dist/features/authors/components/SettingsAuthorsTab.js +49 -0
  309. package/dist/features/authors/components/SettingsAuthorsTab.js.map +1 -0
  310. package/dist/features/authors/components/SettingsAuthorsTab.vue.d.ts +6 -0
  311. package/dist/features/authors/feature.d.ts +22 -0
  312. package/dist/features/authors/feature.js +47 -0
  313. package/dist/features/authors/feature.js.map +1 -0
  314. package/dist/features/authors/index.d.ts +7 -0
  315. package/dist/features/authors/index.js +6 -0
  316. package/dist/features/authors/react/AuthorColorsButton.d.ts +8 -0
  317. package/dist/features/authors/react/AuthorColorsButton.js +41 -0
  318. package/dist/features/authors/react/AuthorColorsButton.js.map +1 -0
  319. package/dist/features/authors/react/AuthorColorsPanel.d.ts +8 -0
  320. package/dist/features/authors/react/AuthorColorsPanel.js +125 -0
  321. package/dist/features/authors/react/AuthorColorsPanel.js.map +1 -0
  322. package/dist/features/authors/react/SettingsAuthorsTab.d.ts +5 -0
  323. package/dist/features/authors/react/SettingsAuthorsTab.js +92 -0
  324. package/dist/features/authors/react/SettingsAuthorsTab.js.map +1 -0
  325. package/dist/features/authors/react.d.ts +11 -0
  326. package/dist/features/authors/react.js +16 -0
  327. package/dist/features/authors/react.js.map +1 -0
  328. package/dist/features/authors/schema.d.ts +22 -0
  329. package/dist/features/authors/schema.js +70 -0
  330. package/dist/features/authors/schema.js.map +1 -0
  331. package/dist/features/authors/vue.d.ts +10 -0
  332. package/dist/features/authors/vue.js +16 -0
  333. package/dist/features/authors/vue.js.map +1 -0
  334. package/dist/features/block-ui/block-actions.d.ts +17 -0
  335. package/dist/features/block-ui/block-actions.js +37 -0
  336. package/dist/features/block-ui/block-actions.js.map +1 -0
  337. package/dist/features/block-ui/components/BlockActionsOverlay.js +142 -0
  338. package/dist/features/block-ui/components/BlockActionsOverlay.js.map +1 -0
  339. package/dist/features/block-ui/components/BlockActionsOverlay.vue.d.ts +25 -0
  340. package/dist/features/block-ui/components/BlockHandles.js +113 -0
  341. package/dist/features/block-ui/components/BlockHandles.js.map +1 -0
  342. package/dist/features/block-ui/components/BlockUi.js +181 -0
  343. package/dist/features/block-ui/components/BlockUi.js.map +1 -0
  344. package/dist/features/block-ui/components/BlockUi.vue.d.ts +17 -0
  345. package/dist/features/block-ui/feature.d.ts +21 -0
  346. package/dist/features/block-ui/feature.js +23 -0
  347. package/dist/features/block-ui/feature.js.map +1 -0
  348. package/dist/features/block-ui/handle-geometry.js +52 -0
  349. package/dist/features/block-ui/handle-geometry.js.map +1 -0
  350. package/dist/features/block-ui/index.d.ts +3 -0
  351. package/dist/features/block-ui/index.js +3 -0
  352. package/dist/features/block-ui/react/BlockActionsOverlay.d.ts +19 -0
  353. package/dist/features/block-ui/react/BlockActionsOverlay.js +142 -0
  354. package/dist/features/block-ui/react/BlockActionsOverlay.js.map +1 -0
  355. package/dist/features/block-ui/react/BlockHandles.d.ts +15 -0
  356. package/dist/features/block-ui/react/BlockHandles.js +104 -0
  357. package/dist/features/block-ui/react/BlockHandles.js.map +1 -0
  358. package/dist/features/block-ui/react/BlockUi.d.ts +14 -0
  359. package/dist/features/block-ui/react/BlockUi.js +174 -0
  360. package/dist/features/block-ui/react/BlockUi.js.map +1 -0
  361. package/dist/features/block-ui/react.d.ts +11 -0
  362. package/dist/features/block-ui/react.js +13 -0
  363. package/dist/features/block-ui/react.js.map +1 -0
  364. package/dist/features/block-ui/vue.d.ts +9 -0
  365. package/dist/features/block-ui/vue.js +12 -0
  366. package/dist/features/block-ui/vue.js.map +1 -0
  367. package/dist/features/collab/anchor-resolver.d.ts +7 -0
  368. package/dist/features/collab/anchor-resolver.js +92 -0
  369. package/dist/features/collab/anchor-resolver.js.map +1 -0
  370. package/dist/features/collab/feature.d.ts +22 -0
  371. package/dist/features/collab/feature.js +36 -0
  372. package/dist/features/collab/feature.js.map +1 -0
  373. package/dist/features/collab/index.d.ts +3 -0
  374. package/dist/features/collab/index.js +3 -0
  375. package/dist/features/collab/react.d.ts +7 -0
  376. package/dist/features/collab/react.js +10 -0
  377. package/dist/features/collab/react.js.map +1 -0
  378. package/dist/features/collab/vue.d.ts +6 -0
  379. package/dist/features/collab/vue.js +37 -0
  380. package/dist/features/collab/vue.js.map +1 -0
  381. package/dist/features/comments/comments-plugin.d.ts +71 -0
  382. package/dist/features/comments/comments-plugin.js +185 -0
  383. package/dist/features/comments/comments-plugin.js.map +1 -0
  384. package/dist/features/comments/components/CommentBubble.js +54 -0
  385. package/dist/features/comments/components/CommentBubble.js.map +1 -0
  386. package/dist/features/comments/components/CommentBubble.vue.d.ts +14 -0
  387. package/dist/features/comments/components/CommentComposer.js +87 -0
  388. package/dist/features/comments/components/CommentComposer.js.map +1 -0
  389. package/dist/features/comments/components/CommentComposer.vue.d.ts +21 -0
  390. package/dist/features/comments/components/CommentThreadView.js +255 -0
  391. package/dist/features/comments/components/CommentThreadView.js.map +1 -0
  392. package/dist/features/comments/components/CommentThreadView.vue.d.ts +29 -0
  393. package/dist/features/comments/components/CommentsListMenu.js +134 -0
  394. package/dist/features/comments/components/CommentsListMenu.js.map +1 -0
  395. package/dist/features/comments/components/CommentsListMenu.vue.d.ts +10 -0
  396. package/dist/features/comments/components/CommentsMargin.js +291 -0
  397. package/dist/features/comments/components/CommentsMargin.js.map +1 -0
  398. package/dist/features/comments/components/CommentsMargin.vue.d.ts +16 -0
  399. package/dist/features/comments/components/CommentsOverlay.js +39 -0
  400. package/dist/features/comments/components/CommentsOverlay.js.map +1 -0
  401. package/dist/features/comments/components/CommentsPopover.js +124 -0
  402. package/dist/features/comments/components/CommentsPopover.js.map +1 -0
  403. package/dist/features/comments/components/CommentsPopover.vue.d.ts +10 -0
  404. package/dist/features/comments/components/CommentsToolbarButton.js +61 -0
  405. package/dist/features/comments/components/CommentsToolbarButton.js.map +1 -0
  406. package/dist/features/comments/components/SettingsCommentsTab.js +46 -0
  407. package/dist/features/comments/components/SettingsCommentsTab.js.map +1 -0
  408. package/dist/features/comments/components/SettingsCommentsTab.vue.d.ts +6 -0
  409. package/dist/features/comments/feature.d.ts +39 -0
  410. package/dist/features/comments/feature.js +128 -0
  411. package/dist/features/comments/feature.js.map +1 -0
  412. package/dist/features/comments/index.d.ts +6 -0
  413. package/dist/features/comments/index.js +6 -0
  414. package/dist/features/comments/model.d.ts +87 -0
  415. package/dist/features/comments/model.js +390 -0
  416. package/dist/features/comments/model.js.map +1 -0
  417. package/dist/features/comments/react/CommentAvatar.js +24 -0
  418. package/dist/features/comments/react/CommentAvatar.js.map +1 -0
  419. package/dist/features/comments/react/CommentBubble.d.ts +11 -0
  420. package/dist/features/comments/react/CommentBubble.js +43 -0
  421. package/dist/features/comments/react/CommentBubble.js.map +1 -0
  422. package/dist/features/comments/react/CommentComposer.d.ts +15 -0
  423. package/dist/features/comments/react/CommentComposer.js +69 -0
  424. package/dist/features/comments/react/CommentComposer.js.map +1 -0
  425. package/dist/features/comments/react/CommentThreadView.d.ts +24 -0
  426. package/dist/features/comments/react/CommentThreadView.js +249 -0
  427. package/dist/features/comments/react/CommentThreadView.js.map +1 -0
  428. package/dist/features/comments/react/CommentsListMenu.d.ts +8 -0
  429. package/dist/features/comments/react/CommentsListMenu.js +115 -0
  430. package/dist/features/comments/react/CommentsListMenu.js.map +1 -0
  431. package/dist/features/comments/react/CommentsMargin.d.ts +16 -0
  432. package/dist/features/comments/react/CommentsMargin.js +294 -0
  433. package/dist/features/comments/react/CommentsMargin.js.map +1 -0
  434. package/dist/features/comments/react/CommentsOverlay.d.ts +11 -0
  435. package/dist/features/comments/react/CommentsOverlay.js +52 -0
  436. package/dist/features/comments/react/CommentsOverlay.js.map +1 -0
  437. package/dist/features/comments/react/CommentsPopover.d.ts +15 -0
  438. package/dist/features/comments/react/CommentsPopover.js +107 -0
  439. package/dist/features/comments/react/CommentsPopover.js.map +1 -0
  440. package/dist/features/comments/react/CommentsToolbarButton.d.ts +12 -0
  441. package/dist/features/comments/react/CommentsToolbarButton.js +52 -0
  442. package/dist/features/comments/react/CommentsToolbarButton.js.map +1 -0
  443. package/dist/features/comments/react/SettingsCommentsTab.d.ts +5 -0
  444. package/dist/features/comments/react/SettingsCommentsTab.js +77 -0
  445. package/dist/features/comments/react/SettingsCommentsTab.js.map +1 -0
  446. package/dist/features/comments/react/use-comments.d.ts +17 -0
  447. package/dist/features/comments/react/use-comments.js +37 -0
  448. package/dist/features/comments/react/use-comments.js.map +1 -0
  449. package/dist/features/comments/react.d.ts +23 -0
  450. package/dist/features/comments/react.js +28 -0
  451. package/dist/features/comments/react.js.map +1 -0
  452. package/dist/features/comments/schema.d.ts +51 -0
  453. package/dist/features/comments/schema.js +41 -0
  454. package/dist/features/comments/schema.js.map +1 -0
  455. package/dist/features/comments/shortcuts.js +34 -0
  456. package/dist/features/comments/shortcuts.js.map +1 -0
  457. package/dist/features/comments/use-comments.d.ts +37 -0
  458. package/dist/features/comments/use-comments.js +45 -0
  459. package/dist/features/comments/use-comments.js.map +1 -0
  460. package/dist/features/comments/vue.d.ts +20 -0
  461. package/dist/features/comments/vue.js +28 -0
  462. package/dist/features/comments/vue.js.map +1 -0
  463. package/dist/features/composites/ai-brief.d.ts +31 -0
  464. package/dist/features/composites/ai-brief.js +56 -0
  465. package/dist/features/composites/ai-brief.js.map +1 -0
  466. package/dist/features/composites/anchors.d.ts +47 -0
  467. package/dist/features/composites/anchors.js +137 -0
  468. package/dist/features/composites/anchors.js.map +1 -0
  469. package/dist/features/composites/components/CompositeChrome.js +243 -0
  470. package/dist/features/composites/components/CompositeChrome.js.map +1 -0
  471. package/dist/features/composites/components/CompositeChrome.vue.d.ts +19 -0
  472. package/dist/features/composites/components/CompositeDetails.js +158 -0
  473. package/dist/features/composites/components/CompositeDetails.js.map +1 -0
  474. package/dist/features/composites/components/CompositeDetails.vue.d.ts +19 -0
  475. package/dist/features/composites/components/CompositeFieldEditor.js +114 -0
  476. package/dist/features/composites/components/CompositeFieldEditor.js.map +1 -0
  477. package/dist/features/composites/components/CompositeFieldEditor.vue.d.ts +23 -0
  478. package/dist/features/composites/components/CompositeInspector.js +439 -0
  479. package/dist/features/composites/components/CompositeInspector.js.map +1 -0
  480. package/dist/features/composites/components/CompositeInspector.vue.d.ts +32 -0
  481. package/dist/features/composites/components/CompositeStatusMenu.js +51 -0
  482. package/dist/features/composites/components/CompositeStatusMenu.js.map +1 -0
  483. package/dist/features/composites/components/CompositeStatusMenu.vue.d.ts +28 -0
  484. package/dist/features/composites/components/CompositeSummaryEditor.js +79 -0
  485. package/dist/features/composites/components/CompositeSummaryEditor.js.map +1 -0
  486. package/dist/features/composites/components/CompositeSummaryEditor.vue.d.ts +18 -0
  487. package/dist/features/composites/components/CompositeTable.js +348 -0
  488. package/dist/features/composites/components/CompositeTable.js.map +1 -0
  489. package/dist/features/composites/components/CompositeTable.vue.d.ts +15 -0
  490. package/dist/features/composites/components/CompositeTagsEditor.js +95 -0
  491. package/dist/features/composites/components/CompositeTagsEditor.js.map +1 -0
  492. package/dist/features/composites/components/CompositeTagsEditor.vue.d.ts +13 -0
  493. package/dist/features/composites/components/CompositeView.js +46 -0
  494. package/dist/features/composites/components/CompositeView.js.map +1 -0
  495. package/dist/features/composites/components/CompositeView.vue.d.ts +96 -0
  496. package/dist/features/composites/components/SettingsEditingTab.js +119 -0
  497. package/dist/features/composites/components/SettingsEditingTab.js.map +1 -0
  498. package/dist/features/composites/components/SettingsEditingTab.vue.d.ts +11 -0
  499. package/dist/features/composites/convert.d.ts +24 -0
  500. package/dist/features/composites/convert.js +145 -0
  501. package/dist/features/composites/convert.js.map +1 -0
  502. package/dist/features/composites/editing-settings-keys.js +47 -0
  503. package/dist/features/composites/editing-settings-keys.js.map +1 -0
  504. package/dist/features/composites/feature.d.ts +30 -0
  505. package/dist/features/composites/feature.js +305 -0
  506. package/dist/features/composites/feature.js.map +1 -0
  507. package/dist/features/composites/fences.d.ts +20 -0
  508. package/dist/features/composites/fences.js +86 -0
  509. package/dist/features/composites/fences.js.map +1 -0
  510. package/dist/features/composites/heading-composites.d.ts +36 -0
  511. package/dist/features/composites/heading-composites.js +140 -0
  512. package/dist/features/composites/heading-composites.js.map +1 -0
  513. package/dist/features/composites/index.d.ts +20 -0
  514. package/dist/features/composites/index.js +20 -0
  515. package/dist/features/composites/kinds.d.ts +49 -0
  516. package/dist/features/composites/kinds.js +131 -0
  517. package/dist/features/composites/kinds.js.map +1 -0
  518. package/dist/features/composites/legacy.d.ts +8 -0
  519. package/dist/features/composites/legacy.js +25 -0
  520. package/dist/features/composites/legacy.js.map +1 -0
  521. package/dist/features/composites/markdown-export.d.ts +17 -0
  522. package/dist/features/composites/markdown-export.js +49 -0
  523. package/dist/features/composites/markdown-export.js.map +1 -0
  524. package/dist/features/composites/meta-display.js +46 -0
  525. package/dist/features/composites/meta-display.js.map +1 -0
  526. package/dist/features/composites/node-views.d.ts +17 -0
  527. package/dist/features/composites/node-views.js +18 -0
  528. package/dist/features/composites/node-views.js.map +1 -0
  529. package/dist/features/composites/nodes.d.ts +56 -0
  530. package/dist/features/composites/nodes.js +480 -0
  531. package/dist/features/composites/nodes.js.map +1 -0
  532. package/dist/features/composites/outline.d.ts +35 -0
  533. package/dist/features/composites/outline.js +69 -0
  534. package/dist/features/composites/outline.js.map +1 -0
  535. package/dist/features/composites/react/CompositeChrome.d.ts +16 -0
  536. package/dist/features/composites/react/CompositeChrome.js +234 -0
  537. package/dist/features/composites/react/CompositeChrome.js.map +1 -0
  538. package/dist/features/composites/react/CompositeDetails.d.ts +16 -0
  539. package/dist/features/composites/react/CompositeDetails.js +149 -0
  540. package/dist/features/composites/react/CompositeDetails.js.map +1 -0
  541. package/dist/features/composites/react/CompositeFieldEditor.d.ts +18 -0
  542. package/dist/features/composites/react/CompositeFieldEditor.js +131 -0
  543. package/dist/features/composites/react/CompositeFieldEditor.js.map +1 -0
  544. package/dist/features/composites/react/CompositeInspector.d.ts +23 -0
  545. package/dist/features/composites/react/CompositeInspector.js +506 -0
  546. package/dist/features/composites/react/CompositeInspector.js.map +1 -0
  547. package/dist/features/composites/react/CompositeStatusMenu.d.ts +15 -0
  548. package/dist/features/composites/react/CompositeStatusMenu.js +36 -0
  549. package/dist/features/composites/react/CompositeStatusMenu.js.map +1 -0
  550. package/dist/features/composites/react/CompositeSummaryEditor.d.ts +15 -0
  551. package/dist/features/composites/react/CompositeSummaryEditor.js +85 -0
  552. package/dist/features/composites/react/CompositeSummaryEditor.js.map +1 -0
  553. package/dist/features/composites/react/CompositeTable.d.ts +11 -0
  554. package/dist/features/composites/react/CompositeTable.js +342 -0
  555. package/dist/features/composites/react/CompositeTable.js.map +1 -0
  556. package/dist/features/composites/react/CompositeTagsEditor.d.ts +10 -0
  557. package/dist/features/composites/react/CompositeTagsEditor.js +122 -0
  558. package/dist/features/composites/react/CompositeTagsEditor.js.map +1 -0
  559. package/dist/features/composites/react/CompositeView.d.ts +6 -0
  560. package/dist/features/composites/react/CompositeView.js +30 -0
  561. package/dist/features/composites/react/CompositeView.js.map +1 -0
  562. package/dist/features/composites/react/SettingsEditingTab.d.ts +8 -0
  563. package/dist/features/composites/react/SettingsEditingTab.js +153 -0
  564. package/dist/features/composites/react/SettingsEditingTab.js.map +1 -0
  565. package/dist/features/composites/react/use-composite-anchors.d.ts +17 -0
  566. package/dist/features/composites/react/use-composite-anchors.js +46 -0
  567. package/dist/features/composites/react/use-composite-anchors.js.map +1 -0
  568. package/dist/features/composites/react/use-composite-rows.d.ts +11 -0
  569. package/dist/features/composites/react/use-composite-rows.js +26 -0
  570. package/dist/features/composites/react/use-composite-rows.js.map +1 -0
  571. package/dist/features/composites/react.d.ts +24 -0
  572. package/dist/features/composites/react.js +30 -0
  573. package/dist/features/composites/react.js.map +1 -0
  574. package/dist/features/composites/rows-model.d.ts +38 -0
  575. package/dist/features/composites/rows-model.js +92 -0
  576. package/dist/features/composites/rows-model.js.map +1 -0
  577. package/dist/features/composites/rows.d.ts +76 -0
  578. package/dist/features/composites/rows.js +159 -0
  579. package/dist/features/composites/rows.js.map +1 -0
  580. package/dist/features/composites/schema.d.ts +21 -0
  581. package/dist/features/composites/schema.js +26 -0
  582. package/dist/features/composites/schema.js.map +1 -0
  583. package/dist/features/composites/structure-mode.d.ts +11 -0
  584. package/dist/features/composites/structure-mode.js +16 -0
  585. package/dist/features/composites/structure-mode.js.map +1 -0
  586. package/dist/features/composites/structure.d.ts +19 -0
  587. package/dist/features/composites/structure.js +19 -0
  588. package/dist/features/composites/structure.js.map +1 -0
  589. package/dist/features/composites/table-model.js +117 -0
  590. package/dist/features/composites/table-model.js.map +1 -0
  591. package/dist/features/composites/tree-root.d.ts +11 -0
  592. package/dist/features/composites/tree-root.js +16 -0
  593. package/dist/features/composites/tree-root.js.map +1 -0
  594. package/dist/features/composites/use-composite-anchors.d.ts +18 -0
  595. package/dist/features/composites/use-composite-anchors.js +42 -0
  596. package/dist/features/composites/use-composite-anchors.js.map +1 -0
  597. package/dist/features/composites/use-composite-rows.d.ts +25 -0
  598. package/dist/features/composites/use-composite-rows.js +28 -0
  599. package/dist/features/composites/use-composite-rows.js.map +1 -0
  600. package/dist/features/composites/vue.d.ts +23 -0
  601. package/dist/features/composites/vue.js +30 -0
  602. package/dist/features/composites/vue.js.map +1 -0
  603. package/dist/features/media/assets.d.ts +30 -0
  604. package/dist/features/media/assets.js +26 -0
  605. package/dist/features/media/assets.js.map +1 -0
  606. package/dist/features/media/audio-recorder.d.ts +25 -0
  607. package/dist/features/media/audio-recorder.js +123 -0
  608. package/dist/features/media/audio-recorder.js.map +1 -0
  609. package/dist/features/media/components/AudioRecorderModal.js +152 -0
  610. package/dist/features/media/components/AudioRecorderModal.js.map +1 -0
  611. package/dist/features/media/components/AudioRecorderModal.vue.d.ts +15 -0
  612. package/dist/features/media/components/AudioView.js +46 -0
  613. package/dist/features/media/components/AudioView.js.map +1 -0
  614. package/dist/features/media/components/FileView.js +73 -0
  615. package/dist/features/media/components/FileView.js.map +1 -0
  616. package/dist/features/media/components/VideoView.js +47 -0
  617. package/dist/features/media/components/VideoView.js.map +1 -0
  618. package/dist/features/media/feature.d.ts +22 -0
  619. package/dist/features/media/feature.js +101 -0
  620. package/dist/features/media/feature.js.map +1 -0
  621. package/dist/features/media/file-import.d.ts +21 -0
  622. package/dist/features/media/file-import.js +76 -0
  623. package/dist/features/media/file-import.js.map +1 -0
  624. package/dist/features/media/index.d.ts +7 -0
  625. package/dist/features/media/index.js +7 -0
  626. package/dist/features/media/node-views.d.ts +28 -0
  627. package/dist/features/media/node-views.js +28 -0
  628. package/dist/features/media/node-views.js.map +1 -0
  629. package/dist/features/media/react/AudioRecorderModal.d.ts +12 -0
  630. package/dist/features/media/react/AudioRecorderModal.js +147 -0
  631. package/dist/features/media/react/AudioRecorderModal.js.map +1 -0
  632. package/dist/features/media/react/AudioView.js +32 -0
  633. package/dist/features/media/react/AudioView.js.map +1 -0
  634. package/dist/features/media/react/FileView.js +61 -0
  635. package/dist/features/media/react/FileView.js.map +1 -0
  636. package/dist/features/media/react/TitleField.js +30 -0
  637. package/dist/features/media/react/TitleField.js.map +1 -0
  638. package/dist/features/media/react/VideoView.js +33 -0
  639. package/dist/features/media/react/VideoView.js.map +1 -0
  640. package/dist/features/media/react/use-audio-recorder.d.ts +11 -0
  641. package/dist/features/media/react/use-audio-recorder.js +21 -0
  642. package/dist/features/media/react/use-audio-recorder.js.map +1 -0
  643. package/dist/features/media/react.d.ts +19 -0
  644. package/dist/features/media/react.js +37 -0
  645. package/dist/features/media/react.js.map +1 -0
  646. package/dist/features/media/schema.d.ts +59 -0
  647. package/dist/features/media/schema.js +194 -0
  648. package/dist/features/media/schema.js.map +1 -0
  649. package/dist/features/media/upload.d.ts +41 -0
  650. package/dist/features/media/upload.js +106 -0
  651. package/dist/features/media/upload.js.map +1 -0
  652. package/dist/features/media/use-audio-recorder.d.ts +12 -0
  653. package/dist/features/media/use-audio-recorder.js +21 -0
  654. package/dist/features/media/use-audio-recorder.js.map +1 -0
  655. package/dist/features/media/vue.d.ts +19 -0
  656. package/dist/features/media/vue.js +35 -0
  657. package/dist/features/media/vue.js.map +1 -0
  658. package/dist/features/mentions/index.d.ts +22 -0
  659. package/dist/features/mentions/index.js +34 -0
  660. package/dist/features/mentions/index.js.map +1 -0
  661. package/dist/features/mentions/mention-suggestion.d.ts +11 -0
  662. package/dist/features/mentions/mention-suggestion.js +34 -0
  663. package/dist/features/mentions/mention-suggestion.js.map +1 -0
  664. package/dist/features/mentions/mention-text.d.ts +18 -0
  665. package/dist/features/mentions/mention-text.js +75 -0
  666. package/dist/features/mentions/mention-text.js.map +1 -0
  667. package/dist/features/mentions/mention.d.ts +20 -0
  668. package/dist/features/mentions/mention.js +33 -0
  669. package/dist/features/mentions/mention.js.map +1 -0
  670. package/dist/features/mentions/metadata-defaults.d.ts +8 -0
  671. package/dist/features/mentions/metadata-defaults.js +30 -0
  672. package/dist/features/mentions/metadata-defaults.js.map +1 -0
  673. package/dist/features/mentions/normalize.d.ts +10 -0
  674. package/dist/features/mentions/normalize.js +31 -0
  675. package/dist/features/mentions/normalize.js.map +1 -0
  676. package/dist/features/mentions/schema.d.ts +10 -0
  677. package/dist/features/mentions/schema.js +10 -0
  678. package/dist/features/mentions/schema.js.map +1 -0
  679. package/dist/features/mentions/tag-suggestion.d.ts +11 -0
  680. package/dist/features/mentions/tag-suggestion.js +45 -0
  681. package/dist/features/mentions/tag-suggestion.js.map +1 -0
  682. package/dist/features/mentions/tag.d.ts +43 -0
  683. package/dist/features/mentions/tag.js +155 -0
  684. package/dist/features/mentions/tag.js.map +1 -0
  685. package/dist/features/tables/feature.d.ts +14 -0
  686. package/dist/features/tables/feature.js +100 -0
  687. package/dist/features/tables/feature.js.map +1 -0
  688. package/dist/features/tables/index.d.ts +3 -0
  689. package/dist/features/tables/index.js +3 -0
  690. package/dist/features/tables/schema.d.ts +6 -0
  691. package/dist/features/tables/schema.js +27 -0
  692. package/dist/features/tables/schema.js.map +1 -0
  693. package/dist/features/themes/components/SettingsAppearanceTab.js +227 -0
  694. package/dist/features/themes/components/SettingsAppearanceTab.js.map +1 -0
  695. package/dist/features/themes/components/SettingsAppearanceTab.vue.d.ts +6 -0
  696. package/dist/features/themes/feature.d.ts +24 -0
  697. package/dist/features/themes/feature.js +25 -0
  698. package/dist/features/themes/feature.js.map +1 -0
  699. package/dist/features/themes/index.d.ts +6 -0
  700. package/dist/features/themes/index.js +6 -0
  701. package/dist/features/themes/react/SettingsAppearanceTab.d.ts +5 -0
  702. package/dist/features/themes/react/SettingsAppearanceTab.js +221 -0
  703. package/dist/features/themes/react/SettingsAppearanceTab.js.map +1 -0
  704. package/dist/features/themes/react.d.ts +13 -0
  705. package/dist/features/themes/react.js +15 -0
  706. package/dist/features/themes/react.js.map +1 -0
  707. package/dist/features/themes/schema.d.ts +21 -0
  708. package/dist/features/themes/schema.js +16 -0
  709. package/dist/features/themes/schema.js.map +1 -0
  710. package/dist/features/themes/scope-css.d.ts +5 -0
  711. package/dist/features/themes/scope-css.js +142 -0
  712. package/dist/features/themes/scope-css.js.map +1 -0
  713. package/dist/features/themes/theme-runtime.d.ts +14 -0
  714. package/dist/features/themes/theme-runtime.js +147 -0
  715. package/dist/features/themes/theme-runtime.js.map +1 -0
  716. package/dist/features/themes/vue.d.ts +13 -0
  717. package/dist/features/themes/vue.js +29 -0
  718. package/dist/features/themes/vue.js.map +1 -0
  719. package/dist/features/transcript/TranscriptSegmentView.js +169 -0
  720. package/dist/features/transcript/TranscriptSegmentView.js.map +1 -0
  721. package/dist/features/transcript/TranscriptSegmentView.vue.d.ts +96 -0
  722. package/dist/features/transcript/convert.d.ts +11 -0
  723. package/dist/features/transcript/convert.js +40 -0
  724. package/dist/features/transcript/convert.js.map +1 -0
  725. package/dist/features/transcript/feature.d.ts +25 -0
  726. package/dist/features/transcript/feature.js +59 -0
  727. package/dist/features/transcript/feature.js.map +1 -0
  728. package/dist/features/transcript/index.d.ts +7 -0
  729. package/dist/features/transcript/index.js +7 -0
  730. package/dist/features/transcript/react/TranscriptSegmentView.d.ts +6 -0
  731. package/dist/features/transcript/react/TranscriptSegmentView.js +155 -0
  732. package/dist/features/transcript/react/TranscriptSegmentView.js.map +1 -0
  733. package/dist/features/transcript/react.d.ts +9 -0
  734. package/dist/features/transcript/react.js +12 -0
  735. package/dist/features/transcript/react.js.map +1 -0
  736. package/dist/features/transcript/schema.d.ts +9 -0
  737. package/dist/features/transcript/schema.js +9 -0
  738. package/dist/features/transcript/schema.js.map +1 -0
  739. package/dist/features/transcript/segment-node.d.ts +21 -0
  740. package/dist/features/transcript/segment-node.js +113 -0
  741. package/dist/features/transcript/segment-node.js.map +1 -0
  742. package/dist/features/transcript/segment.d.ts +10 -0
  743. package/dist/features/transcript/segment.js +26 -0
  744. package/dist/features/transcript/segment.js.map +1 -0
  745. package/dist/features/transcript/speakers.d.ts +8 -0
  746. package/dist/features/transcript/speakers.js +22 -0
  747. package/dist/features/transcript/speakers.js.map +1 -0
  748. package/dist/features/transcript/vue.d.ts +8 -0
  749. package/dist/features/transcript/vue.js +12 -0
  750. package/dist/features/transcript/vue.js.map +1 -0
  751. package/dist/i18n/de/ai.js +168 -0
  752. package/dist/i18n/de/ai.js.map +1 -0
  753. package/dist/i18n/de/authors.js +21 -0
  754. package/dist/i18n/de/authors.js.map +1 -0
  755. package/dist/i18n/de/block.js +16 -0
  756. package/dist/i18n/de/block.js.map +1 -0
  757. package/dist/i18n/de/comments.js +35 -0
  758. package/dist/i18n/de/comments.js.map +1 -0
  759. package/dist/i18n/de/common.js +10 -0
  760. package/dist/i18n/de/common.js.map +1 -0
  761. package/dist/i18n/de/composites.js +147 -0
  762. package/dist/i18n/de/composites.js.map +1 -0
  763. package/dist/i18n/de/integrations.js +42 -0
  764. package/dist/i18n/de/integrations.js.map +1 -0
  765. package/dist/i18n/de/markdown.js +16 -0
  766. package/dist/i18n/de/markdown.js.map +1 -0
  767. package/dist/i18n/de/media.js +27 -0
  768. package/dist/i18n/de/media.js.map +1 -0
  769. package/dist/i18n/de/mentions.js +10 -0
  770. package/dist/i18n/de/mentions.js.map +1 -0
  771. package/dist/i18n/de/outline.js +9 -0
  772. package/dist/i18n/de/outline.js.map +1 -0
  773. package/dist/i18n/de/settings.js +12 -0
  774. package/dist/i18n/de/settings.js.map +1 -0
  775. package/dist/i18n/de/tables.js +15 -0
  776. package/dist/i18n/de/tables.js.map +1 -0
  777. package/dist/i18n/de/themes.js +26 -0
  778. package/dist/i18n/de/themes.js.map +1 -0
  779. package/dist/i18n/de/toolbar.js +22 -0
  780. package/dist/i18n/de/toolbar.js.map +1 -0
  781. package/dist/i18n/de/transcript.js +10 -0
  782. package/dist/i18n/de/transcript.js.map +1 -0
  783. package/dist/i18n/de/tree.js +31 -0
  784. package/dist/i18n/de/tree.js.map +1 -0
  785. package/dist/i18n/de.d.ts +502 -0
  786. package/dist/i18n/de.js +42 -0
  787. package/dist/i18n/de.js.map +1 -0
  788. package/dist/i18n/en/ai.js +168 -0
  789. package/dist/i18n/en/ai.js.map +1 -0
  790. package/dist/i18n/en/authors.js +21 -0
  791. package/dist/i18n/en/authors.js.map +1 -0
  792. package/dist/i18n/en/block.js +16 -0
  793. package/dist/i18n/en/block.js.map +1 -0
  794. package/dist/i18n/en/comments.js +35 -0
  795. package/dist/i18n/en/comments.js.map +1 -0
  796. package/dist/i18n/en/common.js +10 -0
  797. package/dist/i18n/en/common.js.map +1 -0
  798. package/dist/i18n/en/composites.js +145 -0
  799. package/dist/i18n/en/composites.js.map +1 -0
  800. package/dist/i18n/en/integrations.js +42 -0
  801. package/dist/i18n/en/integrations.js.map +1 -0
  802. package/dist/i18n/en/markdown.js +16 -0
  803. package/dist/i18n/en/markdown.js.map +1 -0
  804. package/dist/i18n/en/media.js +27 -0
  805. package/dist/i18n/en/media.js.map +1 -0
  806. package/dist/i18n/en/mentions.js +10 -0
  807. package/dist/i18n/en/mentions.js.map +1 -0
  808. package/dist/i18n/en/outline.js +9 -0
  809. package/dist/i18n/en/outline.js.map +1 -0
  810. package/dist/i18n/en/settings.js +12 -0
  811. package/dist/i18n/en/settings.js.map +1 -0
  812. package/dist/i18n/en/tables.js +15 -0
  813. package/dist/i18n/en/tables.js.map +1 -0
  814. package/dist/i18n/en/themes.js +26 -0
  815. package/dist/i18n/en/themes.js.map +1 -0
  816. package/dist/i18n/en/toolbar.js +22 -0
  817. package/dist/i18n/en/toolbar.js.map +1 -0
  818. package/dist/i18n/en/transcript.js +10 -0
  819. package/dist/i18n/en/transcript.js.map +1 -0
  820. package/dist/i18n/en/tree.js +31 -0
  821. package/dist/i18n/en/tree.js.map +1 -0
  822. package/dist/i18n/en.js +42 -0
  823. package/dist/i18n/en.js.map +1 -0
  824. package/dist/i18n/index.d.ts +24 -0
  825. package/dist/i18n/index.js +31 -0
  826. package/dist/i18n/index.js.map +1 -0
  827. package/dist/index.d.ts +6 -0
  828. package/dist/index.js +0 -0
  829. package/dist/integrations/composite-ai/composite-fill.d.ts +17 -0
  830. package/dist/integrations/composite-ai/composite-fill.js +129 -0
  831. package/dist/integrations/composite-ai/composite-fill.js.map +1 -0
  832. package/dist/integrations/composite-ai/composite-summary.d.ts +28 -0
  833. package/dist/integrations/composite-ai/composite-summary.js +143 -0
  834. package/dist/integrations/composite-ai/composite-summary.js.map +1 -0
  835. package/dist/integrations/composite-ai/document-transcribe.d.ts +14 -0
  836. package/dist/integrations/composite-ai/document-transcribe.js +89 -0
  837. package/dist/integrations/composite-ai/document-transcribe.js.map +1 -0
  838. package/dist/integrations/composite-ai/index.d.ts +22 -0
  839. package/dist/integrations/composite-ai/index.js +80 -0
  840. package/dist/integrations/composite-ai/index.js.map +1 -0
  841. package/dist/integrations/composite-media/index.d.ts +19 -0
  842. package/dist/integrations/composite-media/index.js +72 -0
  843. package/dist/integrations/composite-media/index.js.map +1 -0
  844. package/dist/integrations/transcript-ai/index.d.ts +16 -0
  845. package/dist/integrations/transcript-ai/index.js +63 -0
  846. package/dist/integrations/transcript-ai/index.js.map +1 -0
  847. package/dist/integrations/transcript-ai/protocol.d.ts +68 -0
  848. package/dist/integrations/transcript-ai/protocol.js +132 -0
  849. package/dist/integrations/transcript-ai/protocol.js.map +1 -0
  850. package/dist/integrations/transcript-ai/transcript-cleanup.d.ts +35 -0
  851. package/dist/integrations/transcript-ai/transcript-cleanup.js +169 -0
  852. package/dist/integrations/transcript-ai/transcript-cleanup.js.map +1 -0
  853. package/dist/markdown/MarkdownSurface.d.ts +25 -0
  854. package/dist/markdown/MarkdownSurface.js +93 -0
  855. package/dist/markdown/MarkdownSurface.js.map +1 -0
  856. package/dist/markdown/MarkdownSurface.vue.d.ts +76 -0
  857. package/dist/markdown/MarkdownSurface2.js +237 -0
  858. package/dist/markdown/MarkdownSurface2.js.map +1 -0
  859. package/dist/markdown/clipboard.d.ts +17 -0
  860. package/dist/markdown/clipboard.js +125 -0
  861. package/dist/markdown/clipboard.js.map +1 -0
  862. package/dist/markdown/document.d.ts +36 -0
  863. package/dist/markdown/document.js +100 -0
  864. package/dist/markdown/document.js.map +1 -0
  865. package/dist/markdown/frontmatter.d.ts +18 -0
  866. package/dist/markdown/frontmatter.js +32 -0
  867. package/dist/markdown/frontmatter.js.map +1 -0
  868. package/dist/markdown/index.d.ts +6 -0
  869. package/dist/markdown/index.js +6 -0
  870. package/dist/markdown/policy.d.ts +34 -0
  871. package/dist/markdown/policy.js +78 -0
  872. package/dist/markdown/policy.js.map +1 -0
  873. package/dist/markdown/react.d.ts +2 -0
  874. package/dist/markdown/react.js +1 -0
  875. package/dist/markdown/source-mode.d.ts +49 -0
  876. package/dist/markdown/source-mode.js +86 -0
  877. package/dist/markdown/source-mode.js.map +1 -0
  878. package/dist/markdown/vue.d.ts +2 -0
  879. package/dist/markdown/vue.js +1 -0
  880. package/dist/nuxt/module.d.ts +62 -0
  881. package/dist/nuxt/module.js +101 -0
  882. package/dist/nuxt/module.js.map +1 -0
  883. package/dist/nuxt/runtime/install-context.d.ts +16 -0
  884. package/dist/nuxt/runtime/install-context.js +25 -0
  885. package/dist/nuxt/runtime/install-context.js.map +1 -0
  886. package/dist/nuxt/runtime/plugins/editor-context-nuxt-ui.client.ts +8 -0
  887. package/dist/nuxt/runtime/server/api/ai/chat.post.d.ts +5 -0
  888. package/dist/nuxt/runtime/server/api/ai/chat.post.js +8 -0
  889. package/dist/nuxt/runtime/server/api/ai/chat.post.js.map +1 -0
  890. package/dist/nuxt/runtime/server/api/ai/complete.post.d.ts +5 -0
  891. package/dist/nuxt/runtime/server/api/ai/complete.post.js +8 -0
  892. package/dist/nuxt/runtime/server/api/ai/complete.post.js.map +1 -0
  893. package/dist/nuxt/runtime/server/api/ai/generate.post.d.ts +5 -0
  894. package/dist/nuxt/runtime/server/api/ai/generate.post.js +8 -0
  895. package/dist/nuxt/runtime/server/api/ai/generate.post.js.map +1 -0
  896. package/dist/nuxt/runtime/server/api/ai/models.get.d.ts +5 -0
  897. package/dist/nuxt/runtime/server/api/ai/models.get.js +8 -0
  898. package/dist/nuxt/runtime/server/api/ai/models.get.js.map +1 -0
  899. package/dist/nuxt/runtime/server/api/ai/transcribe.post.d.ts +5 -0
  900. package/dist/nuxt/runtime/server/api/ai/transcribe.post.js +8 -0
  901. package/dist/nuxt/runtime/server/api/ai/transcribe.post.js.map +1 -0
  902. package/dist/nuxt/runtime/server/api/ai/transcript-cleanup.post.d.ts +5 -0
  903. package/dist/nuxt/runtime/server/api/ai/transcript-cleanup.post.js +8 -0
  904. package/dist/nuxt/runtime/server/api/ai/transcript-cleanup.post.js.map +1 -0
  905. package/dist/nuxt/runtime/server/api/editor/assets/[id]/[name].get.d.ts +5 -0
  906. package/dist/nuxt/runtime/server/api/editor/assets/[id]/[name].get.js +8 -0
  907. package/dist/nuxt/runtime/server/api/editor/assets/[id]/[name].get.js.map +1 -0
  908. package/dist/nuxt/runtime/server/api/editor/assets/[id].post.d.ts +5 -0
  909. package/dist/nuxt/runtime/server/api/editor/assets/[id].post.js +8 -0
  910. package/dist/nuxt/runtime/server/api/editor/assets/[id].post.js.map +1 -0
  911. package/dist/nuxt/runtime/server/api/editor/settings.get.d.ts +5 -0
  912. package/dist/nuxt/runtime/server/api/editor/settings.get.js +8 -0
  913. package/dist/nuxt/runtime/server/api/editor/settings.get.js.map +1 -0
  914. package/dist/nuxt/runtime/server/api/editor/settings.put.d.ts +5 -0
  915. package/dist/nuxt/runtime/server/api/editor/settings.put.js +8 -0
  916. package/dist/nuxt/runtime/server/api/editor/settings.put.js.map +1 -0
  917. package/dist/nuxt/runtime/server/api/editor/tags.get.d.ts +5 -0
  918. package/dist/nuxt/runtime/server/api/editor/tags.get.js +8 -0
  919. package/dist/nuxt/runtime/server/api/editor/tags.get.js.map +1 -0
  920. package/dist/nuxt/runtime/server/api/editor/themes/[id].delete.d.ts +5 -0
  921. package/dist/nuxt/runtime/server/api/editor/themes/[id].delete.js +8 -0
  922. package/dist/nuxt/runtime/server/api/editor/themes/[id].delete.js.map +1 -0
  923. package/dist/nuxt/runtime/server/api/editor/themes/[id].get.d.ts +5 -0
  924. package/dist/nuxt/runtime/server/api/editor/themes/[id].get.js +8 -0
  925. package/dist/nuxt/runtime/server/api/editor/themes/[id].get.js.map +1 -0
  926. package/dist/nuxt/runtime/server/api/editor/themes/index.get.d.ts +5 -0
  927. package/dist/nuxt/runtime/server/api/editor/themes/index.get.js +8 -0
  928. package/dist/nuxt/runtime/server/api/editor/themes/index.get.js.map +1 -0
  929. package/dist/nuxt/runtime/server/api/editor/themes/index.post.d.ts +5 -0
  930. package/dist/nuxt/runtime/server/api/editor/themes/index.post.js +8 -0
  931. package/dist/nuxt/runtime/server/api/editor/themes/index.post.js.map +1 -0
  932. package/dist/nuxt/runtime/server/api/editor/users.get.d.ts +5 -0
  933. package/dist/nuxt/runtime/server/api/editor/users.get.js +8 -0
  934. package/dist/nuxt/runtime/server/api/editor/users.get.js.map +1 -0
  935. package/dist/nuxt/runtime/server/plugins/collab.d.ts +5 -0
  936. package/dist/nuxt/runtime/server/plugins/collab.js +10 -0
  937. package/dist/nuxt/runtime/server/plugins/collab.js.map +1 -0
  938. package/dist/nuxt/runtime/server/plugins/editor-server.d.ts +5 -0
  939. package/dist/nuxt/runtime/server/plugins/editor-server.js +20 -0
  940. package/dist/nuxt/runtime/server/plugins/editor-server.js.map +1 -0
  941. package/dist/nuxt/runtime/server/routes/collab/[id].d.ts +5 -0
  942. package/dist/nuxt/runtime/server/routes/collab/[id].js +35 -0
  943. package/dist/nuxt/runtime/server/routes/collab/[id].js.map +1 -0
  944. package/dist/nuxt/runtime/server/utils/editor-route.d.ts +11 -0
  945. package/dist/nuxt/runtime/server/utils/editor-route.js +49 -0
  946. package/dist/nuxt/runtime/server/utils/editor-route.js.map +1 -0
  947. package/dist/outline/EditorOutline.js +124 -0
  948. package/dist/outline/EditorOutline.js.map +1 -0
  949. package/dist/outline/EditorOutline.vue.d.ts +15 -0
  950. package/dist/outline/heading-outline.d.ts +26 -0
  951. package/dist/outline/heading-outline.js +46 -0
  952. package/dist/outline/heading-outline.js.map +1 -0
  953. package/dist/outline/index.d.ts +2 -0
  954. package/dist/outline/index.js +1 -0
  955. package/dist/outline/react/EditorOutline.d.ts +12 -0
  956. package/dist/outline/react/EditorOutline.js +112 -0
  957. package/dist/outline/react/EditorOutline.js.map +1 -0
  958. package/dist/outline/react.d.ts +2 -0
  959. package/dist/outline/react.js +1 -0
  960. package/dist/outline/vue.d.ts +2 -0
  961. package/dist/outline/vue.js +1 -0
  962. package/dist/presets/advanced.d.ts +33 -0
  963. package/dist/presets/advanced.js +50 -0
  964. package/dist/presets/advanced.js.map +1 -0
  965. package/dist/presets/simple.d.ts +9 -0
  966. package/dist/presets/simple.js +12 -0
  967. package/dist/presets/simple.js.map +1 -0
  968. package/dist/react/AdvancedEditor.d.ts +23 -0
  969. package/dist/react/AdvancedEditor.js +24 -0
  970. package/dist/react/AdvancedEditor.js.map +1 -0
  971. package/dist/react/EditorSettingsModal.d.ts +14 -0
  972. package/dist/react/EditorSettingsModal.js +40 -0
  973. package/dist/react/EditorSettingsModal.js.map +1 -0
  974. package/dist/react/EditorSettingsPanel.d.ts +18 -0
  975. package/dist/react/EditorSettingsPanel.js +40 -0
  976. package/dist/react/EditorSettingsPanel.js.map +1 -0
  977. package/dist/react/EditorSurface.d.ts +61 -0
  978. package/dist/react/EditorSurface.js +277 -0
  979. package/dist/react/EditorSurface.js.map +1 -0
  980. package/dist/react/EditorToolbar.d.ts +15 -0
  981. package/dist/react/EditorToolbar.js +182 -0
  982. package/dist/react/EditorToolbar.js.map +1 -0
  983. package/dist/react/Icon.d.ts +13 -0
  984. package/dist/react/Icon.js +19 -0
  985. package/dist/react/Icon.js.map +1 -0
  986. package/dist/react/SettingsSection.d.ts +10 -0
  987. package/dist/react/SettingsSection.js +22 -0
  988. package/dist/react/SettingsSection.js.map +1 -0
  989. package/dist/react/SimpleEditor.d.ts +27 -0
  990. package/dist/react/SimpleEditor.js +22 -0
  991. package/dist/react/SimpleEditor.js.map +1 -0
  992. package/dist/react/advanced-preset.d.ts +11 -0
  993. package/dist/react/advanced-preset.js +31 -0
  994. package/dist/react/advanced-preset.js.map +1 -0
  995. package/dist/react/advanced.d.ts +4 -0
  996. package/dist/react/advanced.js +3 -0
  997. package/dist/react/context.d.ts +12 -0
  998. package/dist/react/context.js +21 -0
  999. package/dist/react/context.js.map +1 -0
  1000. package/dist/react/editor-ui.d.ts +14 -0
  1001. package/dist/react/editor-ui.js +20 -0
  1002. package/dist/react/editor-ui.js.map +1 -0
  1003. package/dist/react/index.d.ts +17 -0
  1004. package/dist/react/index.js +17 -0
  1005. package/dist/react/notify.d.ts +6 -0
  1006. package/dist/react/notify.js +25 -0
  1007. package/dist/react/notify.js.map +1 -0
  1008. package/dist/react/settings.d.ts +17 -0
  1009. package/dist/react/settings.js +27 -0
  1010. package/dist/react/settings.js.map +1 -0
  1011. package/dist/react/simple.d.ts +2 -0
  1012. package/dist/react/simple.js +1 -0
  1013. package/dist/react/styles/advanced.css +18 -0
  1014. package/dist/react/styles/themes-bridge.css +26 -0
  1015. package/dist/react/styles/ui-vars.css +20 -0
  1016. package/dist/react/suggestion-renderer.d.ts +12 -0
  1017. package/dist/react/suggestion-renderer.js +90 -0
  1018. package/dist/react/suggestion-renderer.js.map +1 -0
  1019. package/dist/react/ui/alert.js +38 -0
  1020. package/dist/react/ui/alert.js.map +1 -0
  1021. package/dist/react/ui/avatar.js +24 -0
  1022. package/dist/react/ui/avatar.js.map +1 -0
  1023. package/dist/react/ui/badge.js +30 -0
  1024. package/dist/react/ui/badge.js.map +1 -0
  1025. package/dist/react/ui/button.js +50 -0
  1026. package/dist/react/ui/button.js.map +1 -0
  1027. package/dist/react/ui/collapsible.js +19 -0
  1028. package/dist/react/ui/collapsible.js.map +1 -0
  1029. package/dist/react/ui/command.js +47 -0
  1030. package/dist/react/ui/command.js.map +1 -0
  1031. package/dist/react/ui/dialog.js +88 -0
  1032. package/dist/react/ui/dialog.js.map +1 -0
  1033. package/dist/react/ui/dropdown-menu.js +70 -0
  1034. package/dist/react/ui/dropdown-menu.js.map +1 -0
  1035. package/dist/react/ui/input-group.js +57 -0
  1036. package/dist/react/ui/input-group.js.map +1 -0
  1037. package/dist/react/ui/input.js +16 -0
  1038. package/dist/react/ui/input.js.map +1 -0
  1039. package/dist/react/ui/label.js +17 -0
  1040. package/dist/react/ui/label.js.map +1 -0
  1041. package/dist/react/ui/popover.js +36 -0
  1042. package/dist/react/ui/popover.js.map +1 -0
  1043. package/dist/react/ui/radio-group.js +29 -0
  1044. package/dist/react/ui/radio-group.js.map +1 -0
  1045. package/dist/react/ui/select.js +88 -0
  1046. package/dist/react/ui/select.js.map +1 -0
  1047. package/dist/react/ui/separator.js +18 -0
  1048. package/dist/react/ui/separator.js.map +1 -0
  1049. package/dist/react/ui/switch.js +21 -0
  1050. package/dist/react/ui/switch.js.map +1 -0
  1051. package/dist/react/ui/table.js +44 -0
  1052. package/dist/react/ui/table.js.map +1 -0
  1053. package/dist/react/ui/tabs.js +41 -0
  1054. package/dist/react/ui/tabs.js.map +1 -0
  1055. package/dist/react/ui/textarea.js +15 -0
  1056. package/dist/react/ui/textarea.js.map +1 -0
  1057. package/dist/react/ui/tooltip.js +37 -0
  1058. package/dist/react/ui/tooltip.js.map +1 -0
  1059. package/dist/react/ui/utils.d.ts +5 -0
  1060. package/dist/react/ui/utils.js +10 -0
  1061. package/dist/react/ui/utils.js.map +1 -0
  1062. package/dist/react/use-editor-i18n.d.ts +12 -0
  1063. package/dist/react/use-editor-i18n.js +17 -0
  1064. package/dist/react/use-editor-i18n.js.map +1 -0
  1065. package/dist/react/use-notifier.d.ts +11 -0
  1066. package/dist/react/use-notifier.js +25 -0
  1067. package/dist/react/use-notifier.js.map +1 -0
  1068. package/dist/react/use-store.d.ts +6 -0
  1069. package/dist/react/use-store.js +10 -0
  1070. package/dist/react/use-store.js.map +1 -0
  1071. package/dist/schema/advanced.d.ts +14 -0
  1072. package/dist/schema/advanced.js +43 -0
  1073. package/dist/schema/advanced.js.map +1 -0
  1074. package/dist/schema/simple.d.ts +10 -0
  1075. package/dist/schema/simple.js +13 -0
  1076. package/dist/schema/simple.js.map +1 -0
  1077. package/dist/server/adapter.d.ts +101 -0
  1078. package/dist/server/ai.d.ts +101 -0
  1079. package/dist/server/ai.js +105 -0
  1080. package/dist/server/ai.js.map +1 -0
  1081. package/dist/server/collab-state.d.ts +16 -0
  1082. package/dist/server/collab-state.js +43 -0
  1083. package/dist/server/collab-state.js.map +1 -0
  1084. package/dist/server/collab.d.ts +68 -0
  1085. package/dist/server/collab.js +187 -0
  1086. package/dist/server/collab.js.map +1 -0
  1087. package/dist/server/errors.d.ts +17 -0
  1088. package/dist/server/errors.js +26 -0
  1089. package/dist/server/errors.js.map +1 -0
  1090. package/dist/server/handlers/ai.d.ts +223 -0
  1091. package/dist/server/handlers/ai.js +422 -0
  1092. package/dist/server/handlers/ai.js.map +1 -0
  1093. package/dist/server/handlers/context.d.ts +64 -0
  1094. package/dist/server/handlers/context.js +85 -0
  1095. package/dist/server/handlers/context.js.map +1 -0
  1096. package/dist/server/handlers/editor.d.ts +107 -0
  1097. package/dist/server/handlers/editor.js +241 -0
  1098. package/dist/server/handlers/editor.js.map +1 -0
  1099. package/dist/server/handlers/index.d.ts +4 -0
  1100. package/dist/server/handlers/index.js +4 -0
  1101. package/dist/server/host.d.ts +61 -0
  1102. package/dist/server/host.js +105 -0
  1103. package/dist/server/host.js.map +1 -0
  1104. package/dist/server/index.d.ts +8 -0
  1105. package/dist/server/index.js +7 -0
  1106. package/dist/server/node.d.ts +24 -0
  1107. package/dist/server/node.js +54 -0
  1108. package/dist/server/node.js.map +1 -0
  1109. package/dist/server/rate-limit.d.ts +22 -0
  1110. package/dist/server/rate-limit.js +34 -0
  1111. package/dist/server/rate-limit.js.map +1 -0
  1112. package/dist/settings/index.d.ts +110 -0
  1113. package/dist/settings/index.js +114 -0
  1114. package/dist/settings/index.js.map +1 -0
  1115. package/dist/settings/values.d.ts +35 -0
  1116. package/dist/settings/values.js +41 -0
  1117. package/dist/settings/values.js.map +1 -0
  1118. package/dist/styles/ai.css +77 -0
  1119. package/dist/styles/authors.css +18 -0
  1120. package/dist/styles/block-ui.css +16 -0
  1121. package/dist/styles/collab.css +26 -0
  1122. package/dist/styles/comments.css +11 -0
  1123. package/dist/styles/composites.css +56 -0
  1124. package/dist/styles/core.css +99 -0
  1125. package/dist/styles/media.css +8 -0
  1126. package/dist/styles/mentions.css +24 -0
  1127. package/dist/styles/tables.css +25 -0
  1128. package/dist/styles/themes.css +622 -0
  1129. package/dist/styles/tokens.css +29 -0
  1130. package/dist/styles/transcript.css +13 -0
  1131. package/dist/tree/DocumentTree.js +595 -0
  1132. package/dist/tree/DocumentTree.js.map +1 -0
  1133. package/dist/tree/DocumentTree.vue.d.ts +36 -0
  1134. package/dist/tree/folder-paths.js +11 -0
  1135. package/dist/tree/folder-paths.js.map +1 -0
  1136. package/dist/tree/index.d.ts +4 -0
  1137. package/dist/tree/index.js +1 -0
  1138. package/dist/tree/react/DocumentTree.d.ts +24 -0
  1139. package/dist/tree/react/DocumentTree.js +579 -0
  1140. package/dist/tree/react/DocumentTree.js.map +1 -0
  1141. package/dist/tree/react/use-tree-view.d.ts +14 -0
  1142. package/dist/tree/react/use-tree-view.js +21 -0
  1143. package/dist/tree/react/use-tree-view.js.map +1 -0
  1144. package/dist/tree/react.d.ts +3 -0
  1145. package/dist/tree/react.js +3 -0
  1146. package/dist/tree/store.d.ts +45 -0
  1147. package/dist/tree/tree-items.js +221 -0
  1148. package/dist/tree/tree-items.js.map +1 -0
  1149. package/dist/tree/tree-view-model.d.ts +29 -0
  1150. package/dist/tree/tree-view-model.js +71 -0
  1151. package/dist/tree/tree-view-model.js.map +1 -0
  1152. package/dist/tree/tree-view.d.ts +15 -0
  1153. package/dist/tree/tree-view.js +21 -0
  1154. package/dist/tree/tree-view.js.map +1 -0
  1155. package/dist/tree/types.d.ts +23 -0
  1156. package/dist/tree/types.js +0 -0
  1157. package/dist/tree/vue.d.ts +3 -0
  1158. package/dist/tree/vue.js +3 -0
  1159. package/dist/vue/AdvancedEditor.js +100 -0
  1160. package/dist/vue/AdvancedEditor.js.map +1 -0
  1161. package/dist/vue/AdvancedEditor.vue.d.ts +71 -0
  1162. package/dist/vue/SimpleEditor.js +61 -0
  1163. package/dist/vue/SimpleEditor.js.map +1 -0
  1164. package/dist/vue/SimpleEditor.vue.d.ts +36 -0
  1165. package/dist/vue/advanced-preset.d.ts +13 -0
  1166. package/dist/vue/advanced-preset.js +33 -0
  1167. package/dist/vue/advanced-preset.js.map +1 -0
  1168. package/dist/vue/advanced.d.ts +3 -0
  1169. package/dist/vue/advanced.js +3 -0
  1170. package/dist/vue/components/EditorSettingsModal.js +69 -0
  1171. package/dist/vue/components/EditorSettingsModal.js.map +1 -0
  1172. package/dist/vue/components/EditorSettingsModal.vue.d.ts +24 -0
  1173. package/dist/vue/components/EditorSettingsPanel.js +58 -0
  1174. package/dist/vue/components/EditorSettingsPanel.js.map +1 -0
  1175. package/dist/vue/components/EditorSettingsPanel.vue.d.ts +29 -0
  1176. package/dist/vue/components/EditorSurface.js +229 -0
  1177. package/dist/vue/components/EditorSurface.js.map +1 -0
  1178. package/dist/vue/components/EditorSurface.vue.d.ts +68 -0
  1179. package/dist/vue/components/EditorToolbar.js +189 -0
  1180. package/dist/vue/components/EditorToolbar.js.map +1 -0
  1181. package/dist/vue/components/EditorToolbar.vue.d.ts +17 -0
  1182. package/dist/vue/components/SettingsSection.js +26 -0
  1183. package/dist/vue/components/SettingsSection.js.map +1 -0
  1184. package/dist/vue/components/SettingsSection.vue.d.ts +21 -0
  1185. package/dist/vue/components/SuggestionList.js +91 -0
  1186. package/dist/vue/components/SuggestionList.js.map +1 -0
  1187. package/dist/vue/components/SuggestionList.vue.d.ts +19 -0
  1188. package/dist/vue/context.d.ts +24 -0
  1189. package/dist/vue/context.js +42 -0
  1190. package/dist/vue/context.js.map +1 -0
  1191. package/dist/vue/index.d.ts +26 -0
  1192. package/dist/vue/index.js +16 -0
  1193. package/dist/vue/kit/index.d.ts +3 -0
  1194. package/dist/vue/kit/index.js +1 -0
  1195. package/dist/vue/kit/nuxt-ui.css +24 -0
  1196. package/dist/vue/kit/nuxt-ui.d.ts +31 -0
  1197. package/dist/vue/kit/nuxt-ui.js +101 -0
  1198. package/dist/vue/kit/nuxt-ui.js.map +1 -0
  1199. package/dist/vue/kit/types.d.ts +370 -0
  1200. package/dist/vue/kit/use-ui-kit.d.ts +12 -0
  1201. package/dist/vue/kit/use-ui-kit.js +17 -0
  1202. package/dist/vue/kit/use-ui-kit.js.map +1 -0
  1203. package/dist/vue/notify.d.ts +12 -0
  1204. package/dist/vue/notify.js +27 -0
  1205. package/dist/vue/notify.js.map +1 -0
  1206. package/dist/vue/settings.d.ts +16 -0
  1207. package/dist/vue/settings.js +64 -0
  1208. package/dist/vue/settings.js.map +1 -0
  1209. package/dist/vue/simple.d.ts +2 -0
  1210. package/dist/vue/simple.js +1 -0
  1211. package/dist/vue/store-ref.d.ts +20 -0
  1212. package/dist/vue/store-ref.js +59 -0
  1213. package/dist/vue/store-ref.js.map +1 -0
  1214. package/dist/vue/suggestion-renderer.d.ts +6 -0
  1215. package/dist/vue/suggestion-renderer.js +20 -0
  1216. package/dist/vue/suggestion-renderer.js.map +1 -0
  1217. package/dist/vue/use-editor-i18n.d.ts +12 -0
  1218. package/dist/vue/use-editor-i18n.js +17 -0
  1219. package/dist/vue/use-editor-i18n.js.map +1 -0
  1220. package/dist/vue/use-editor-ui.d.ts +15 -0
  1221. package/dist/vue/use-editor-ui.js +23 -0
  1222. package/dist/vue/use-editor-ui.js.map +1 -0
  1223. package/dist/vue/use-notifier.d.ts +11 -0
  1224. package/dist/vue/use-notifier.js +19 -0
  1225. package/dist/vue/use-notifier.js.map +1 -0
  1226. package/docs/extending.md +538 -0
  1227. package/docs/integration.md +537 -0
  1228. package/docs/llms.md +375 -0
  1229. package/docs/usage.md +1071 -0
  1230. package/package.json +619 -4
@@ -0,0 +1,88 @@
1
+ import { Translate } from "../../i18n/index.js";
2
+ import { ModelSlot } from "../../settings/values.js";
3
+ import "../../settings/index.js";
4
+ import { Notifier } from "../../core/notify.js";
5
+ import { ReadonlyStore } from "../../core/store.js";
6
+ import { AgentOp, AgentOpProblem } from "./protocol/agent-ops.js";
7
+ import { DocumentChatMessage } from "./protocol/chat.js";
8
+ import { ModelRef } from "./protocol/models.js";
9
+ import { AiTask } from "./protocol/tasks.js";
10
+ import "./protocol/index.js";
11
+ import { AgentScope } from "./agent-ops.js";
12
+ import { AgentOpReviewState } from "./agent-op-review.js";
13
+ import { AiTarget } from "./ai-apply.js";
14
+ import { Editor } from "@tiptap/core";
15
+ import { $Fetch } from "ofetch";
16
+ //#region src/features/ai/document-chat-model.d.ts
17
+ /**
18
+ * A block generation run from the AI sidebar's quick actions, shown as an assistant turn. Client only: it never goes
19
+ * to `/api/ai/chat`. `markdown` is the streamed result without the task heading (shown with `withTaskHeading`, applied
20
+ * as `taskResultMarkdown`), `target` the apply target captured when it started; only a result that streamed to the end
21
+ * (`done`) can be applied.
22
+ */
23
+ export interface DocumentChatGeneration {
24
+ task: AiTask;
25
+ /** The instruction of a task with `needsPrompt` (empty otherwise). */
26
+ prompt: string;
27
+ markdown: string;
28
+ target: AiTarget;
29
+ done: boolean;
30
+ }
31
+ /**
32
+ * A chat turn as shown: an assistant turn also keeps the problems of the operations the server dropped, or is a block
33
+ * generation of the sidebar (`generation`).
34
+ */
35
+ export type DocumentChatTurn = Extract<DocumentChatMessage, {
36
+ role: 'user';
37
+ }> | (Extract<DocumentChatMessage, {
38
+ role: 'assistant';
39
+ }> & {
40
+ problems?: AgentOpProblem[];
41
+ generation?: DocumentChatGeneration;
42
+ });
43
+ /** Snapshot of a conversation; every change replaces `messages`/`ops` (never mutated in place). */
44
+ export interface DocumentChatState {
45
+ messages: readonly DocumentChatTurn[];
46
+ /** Operation states by operation id. */
47
+ ops: AgentOpReviewState['ops'];
48
+ streaming: boolean;
49
+ error: string | null;
50
+ }
51
+ export interface DocumentChatOptions {
52
+ fetch: $Fetch;
53
+ modelRef: (slot: ModelSlot) => ModelRef;
54
+ /** Receives the 429 notice. */
55
+ notify: Notifier;
56
+ /** The app's translator (`EditorContext.t`): error messages, the 429 notice and the snippets of proposed operations. */
57
+ t: Translate;
58
+ }
59
+ export interface DocumentChat {
60
+ state: ReadonlyStore<DocumentChatState>;
61
+ /**
62
+ * Sends `message` about the editor's current document; `scope` limits proposed edits to the selected blocks (null:
63
+ * whole document). Returns false when it was not answered (error, rate limit, cancelled before any answer): it is
64
+ * then removed again so the caller can restore the input.
65
+ */
66
+ ask: (message: string, editor: Editor, scope: AgentScope | null) => Promise<boolean>;
67
+ abort: () => void;
68
+ reset: () => void;
69
+ /** Accepts or rejects the open hunks of operation `id`. */
70
+ decide: (editor: Editor, id: string, accept: boolean) => void;
71
+ /** Scrolls to operation `op`: its first open hunk (selected for accept/reject), else its target block. */
72
+ reveal: (editor: Editor, op: AgentOp) => boolean;
73
+ /** Appends the assistant turn of a block generation. `generation` keeps its identity in `state`. */
74
+ addGeneration: (generation: DocumentChatGeneration) => void;
75
+ /** Updates `generation` in place (same object) and publishes a new `messages` array. */
76
+ updateGeneration: (generation: DocumentChatGeneration, patch: Partial<Pick<DocumentChatGeneration, 'markdown' | 'done'>>) => void;
77
+ /** Removes the turn of `generation`. */
78
+ removeGeneration: (generation: DocumentChatGeneration) => void;
79
+ clearError: () => void;
80
+ }
81
+ /**
82
+ * Document chat state: the conversation lives only here (client side) and goes to `/api/ai/chat` in full with every
83
+ * message, together with the document as it is at that moment and the edit scope. Proposed edit operations open an
84
+ * in-document review; their decisions go to the model with the next message.
85
+ */
86
+ export declare function createDocumentChat({ fetch, modelRef, notify, t }: DocumentChatOptions): DocumentChat;
87
+ //#endregion
88
+ //# sourceMappingURL=document-chat-model.d.ts.map
@@ -0,0 +1,190 @@
1
+ import { CORE_TARGET_IDS, convertTargetId } from "../../core/convert.js";
2
+ import { aiContextOf, conversionsOf } from "../../core/pipeline.js";
3
+ import { parseConversionTarget } from "../../core/block-convert.js";
4
+ import { silentNotifier } from "../../core/notify.js";
5
+ import { createStore } from "../../core/store.js";
6
+ import { CHAT_LIMITS } from "./protocol/chat.js";
7
+ import { NO_AGENT_OPS, createAgentOpReview } from "./agent-op-review.js";
8
+ import { notifyAiRateLimited } from "./rate-limit.js";
9
+ import { postAiSse } from "./ai-sse.js";
10
+ import { documentChatText } from "./document-chat.js";
11
+ //#region src/features/ai/document-chat-model.ts
12
+ const EMPTY = {
13
+ messages: [],
14
+ ops: NO_AGENT_OPS,
15
+ streaming: false,
16
+ error: null
17
+ };
18
+ /**
19
+ * Document chat state: the conversation lives only here (client side) and goes to `/api/ai/chat` in full with every
20
+ * message, together with the document as it is at that moment and the edit scope. Proposed edit operations open an
21
+ * in-document review; their decisions go to the model with the next message.
22
+ */
23
+ function createDocumentChat({ fetch, modelRef, notify, t }) {
24
+ const store = createStore(EMPTY);
25
+ const review = createAgentOpReview({
26
+ notify: silentNotifier,
27
+ t
28
+ });
29
+ let controller = null;
30
+ const patch = (changes) => store.set({
31
+ ...store.get(),
32
+ ...changes
33
+ });
34
+ function abort() {
35
+ controller?.abort();
36
+ }
37
+ function reset() {
38
+ abort();
39
+ controller = null;
40
+ store.set(EMPTY);
41
+ review.reset();
42
+ }
43
+ /** Replaces the turn `turn` (by identity) with `next`; returns `next`. */
44
+ function replaceTurn(turn, next) {
45
+ const { messages } = store.get();
46
+ const index = messages.indexOf(turn);
47
+ if (index !== -1) patch({ messages: messages.map((m, i) => i === index ? next : m) });
48
+ return next;
49
+ }
50
+ review.state.subscribe(({ ops }) => {
51
+ if (ops !== store.get().ops) patch({ ops });
52
+ });
53
+ async function ask(message, editor, scope) {
54
+ if (store.get().streaming || !message.trim()) return false;
55
+ if (scope && !scope.ids.length) {
56
+ patch({ error: t("ai.chat.emptyScope") });
57
+ return false;
58
+ }
59
+ const { kinds, blocks, structure } = aiContextOf(editor);
60
+ const providers = conversionsOf(editor);
61
+ const targets = [
62
+ ...CORE_TARGET_IDS,
63
+ ...kinds.map((kind) => convertTargetId({
64
+ type: "composite",
65
+ kind: kind.id
66
+ })),
67
+ ...blocks.filter((block) => parseConversionTarget(providers, block.id) !== null).map((block) => block.id)
68
+ ];
69
+ const own = new AbortController();
70
+ controller = own;
71
+ const feedback = review.unreported();
72
+ const userTurn = {
73
+ role: "user",
74
+ content: message.trim(),
75
+ ...feedback.length ? { feedback } : {}
76
+ };
77
+ let answer = {
78
+ role: "assistant",
79
+ content: ""
80
+ };
81
+ const sent = [...store.get().messages, userTurn].filter((turn) => turn.role === "user" || !turn.generation).slice(-CHAT_LIMITS.messages).map((turn) => turn.role === "user" ? {
82
+ role: "user",
83
+ content: turn.content.slice(0, CHAT_LIMITS.message),
84
+ ...turn.feedback && { feedback: turn.feedback }
85
+ } : {
86
+ role: "assistant",
87
+ content: turn.content.slice(0, CHAT_LIMITS.message),
88
+ ...turn.ops?.length ? { ops: turn.ops } : {},
89
+ ...turn.dropped ? { dropped: turn.dropped } : {}
90
+ });
91
+ if (sent[0]?.role === "assistant") sent.shift();
92
+ patch({
93
+ error: null,
94
+ streaming: true,
95
+ messages: [
96
+ ...store.get().messages,
97
+ userTurn,
98
+ answer
99
+ ]
100
+ });
101
+ const received = {};
102
+ const body = {
103
+ messages: sent,
104
+ document: documentChatText(editor),
105
+ scope: scope?.ids ?? null,
106
+ nextOp: review.nextOp(),
107
+ model: modelRef("generate"),
108
+ kinds,
109
+ blocks,
110
+ targets,
111
+ structure
112
+ };
113
+ const outcome = await postAiSse(fetch, "/api/ai/chat", body, {
114
+ signal: own.signal,
115
+ t,
116
+ onDelta: (text) => {
117
+ if (controller === own) answer = replaceTurn(answer, {
118
+ ...answer,
119
+ content: answer.content + text
120
+ });
121
+ },
122
+ onEvent: (event, data) => {
123
+ if (event === "ops" && controller === own) received.proposal = data;
124
+ }
125
+ });
126
+ if (controller !== own) return false;
127
+ controller = null;
128
+ patch({ streaming: false });
129
+ const { ops: proposed = [], dropped = [] } = outcome.status === "done" ? received.proposal ?? {} : {};
130
+ if (outcome.status === "done" || outcome.status === "aborted" && answer.content) {
131
+ review.markReported(feedback.filter(({ outcome: sentOutcome }) => sentOutcome !== "pending").map(({ op }) => op));
132
+ if (proposed.length || dropped.length) {
133
+ answer = replaceTurn(answer, {
134
+ ...answer,
135
+ ops: proposed,
136
+ dropped: dropped.length,
137
+ problems: dropped
138
+ });
139
+ review.advanceOp(proposed.length);
140
+ if (!editor.isDestroyed) review.propose(editor, proposed, scope);
141
+ }
142
+ return true;
143
+ }
144
+ patch({ messages: store.get().messages.slice(0, -2) });
145
+ if (outcome.status === "rate-limited") notifyAiRateLimited(notify, t);
146
+ else if (outcome.status === "error") patch({ error: outcome.message });
147
+ return false;
148
+ }
149
+ const decide = review.decide;
150
+ const reveal = review.reveal;
151
+ function addGeneration(generation) {
152
+ patch({
153
+ error: null,
154
+ messages: [...store.get().messages, {
155
+ role: "assistant",
156
+ content: "",
157
+ generation
158
+ }]
159
+ });
160
+ }
161
+ function updateGeneration(generation, changes) {
162
+ Object.assign(generation, changes);
163
+ const { messages } = store.get();
164
+ patch({ messages: messages.map((turn) => turn.role === "assistant" && turn.generation === generation ? { ...turn } : turn) });
165
+ }
166
+ function removeGeneration(generation) {
167
+ const { messages } = store.get();
168
+ const index = messages.findIndex((turn) => turn.role === "assistant" && turn.generation === generation);
169
+ if (index !== -1) patch({ messages: messages.filter((_, i) => i !== index) });
170
+ }
171
+ function clearError() {
172
+ if (store.get().error !== null) patch({ error: null });
173
+ }
174
+ return {
175
+ state: store,
176
+ ask,
177
+ abort,
178
+ reset,
179
+ decide,
180
+ reveal,
181
+ addGeneration,
182
+ updateGeneration,
183
+ removeGeneration,
184
+ clearError
185
+ };
186
+ }
187
+ //#endregion
188
+ export { createDocumentChat };
189
+
190
+ //# sourceMappingURL=document-chat-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-chat-model.js","names":[],"sources":["../../../src/features/ai/document-chat-model.ts"],"sourcesContent":["import type { Editor } from '@tiptap/core'\nimport type { $Fetch } from 'ofetch'\nimport { aiContextOf, CORE_TARGET_IDS, convertTargetId, conversionsOf, parseConversionTarget } from '../../core'\nimport { type Notifier, silentNotifier } from '../../core/notify'\nimport { createStore, type ReadonlyStore } from '../../core/store'\nimport type { Translate } from '../../i18n'\nimport type { ModelSlot } from '../../settings'\nimport { type AgentOpReviewState, createAgentOpReview, NO_AGENT_OPS } from './agent-op-review'\nimport type { AgentScope } from './agent-ops'\nimport type { AiTarget } from './ai-apply'\nimport { postAiSse } from './ai-sse'\nimport { documentChatText } from './document-chat'\nimport { type AgentOp, type AgentOpProblem, CHAT_LIMITS, type AiTask, type DocumentChatMessage, type ModelRef } from './protocol'\nimport { notifyAiRateLimited } from './rate-limit'\n\n/**\n * A block generation run from the AI sidebar's quick actions, shown as an assistant turn. Client only: it never goes\n * to `/api/ai/chat`. `markdown` is the streamed result without the task heading (shown with `withTaskHeading`, applied\n * as `taskResultMarkdown`), `target` the apply target captured when it started; only a result that streamed to the end\n * (`done`) can be applied.\n */\nexport interface DocumentChatGeneration {\n task: AiTask\n /** The instruction of a task with `needsPrompt` (empty otherwise). */\n prompt: string\n markdown: string\n target: AiTarget\n done: boolean\n}\n\n/**\n * A chat turn as shown: an assistant turn also keeps the problems of the operations the server dropped, or is a block\n * generation of the sidebar (`generation`).\n */\nexport type DocumentChatTurn =\n | Extract<DocumentChatMessage, { role: 'user' }>\n | (Extract<DocumentChatMessage, { role: 'assistant' }> & { problems?: AgentOpProblem[], generation?: DocumentChatGeneration })\n\n/** Snapshot of a conversation; every change replaces `messages`/`ops` (never mutated in place). */\nexport interface DocumentChatState {\n messages: readonly DocumentChatTurn[]\n /** Operation states by operation id. */\n ops: AgentOpReviewState['ops']\n streaming: boolean\n error: string | null\n}\n\nexport interface DocumentChatOptions {\n fetch: $Fetch\n modelRef: (slot: ModelSlot) => ModelRef\n /** Receives the 429 notice. */\n notify: Notifier\n /** The app's translator (`EditorContext.t`): error messages, the 429 notice and the snippets of proposed operations. */\n t: Translate\n}\n\nexport interface DocumentChat {\n state: ReadonlyStore<DocumentChatState>\n /**\n * Sends `message` about the editor's current document; `scope` limits proposed edits to the selected blocks (null:\n * whole document). Returns false when it was not answered (error, rate limit, cancelled before any answer): it is\n * then removed again so the caller can restore the input.\n */\n ask: (message: string, editor: Editor, scope: AgentScope | null) => Promise<boolean>\n abort: () => void\n reset: () => void\n /** Accepts or rejects the open hunks of operation `id`. */\n decide: (editor: Editor, id: string, accept: boolean) => void\n /** Scrolls to operation `op`: its first open hunk (selected for accept/reject), else its target block. */\n reveal: (editor: Editor, op: AgentOp) => boolean\n /** Appends the assistant turn of a block generation. `generation` keeps its identity in `state`. */\n addGeneration: (generation: DocumentChatGeneration) => void\n /** Updates `generation` in place (same object) and publishes a new `messages` array. */\n updateGeneration: (generation: DocumentChatGeneration, patch: Partial<Pick<DocumentChatGeneration, 'markdown' | 'done'>>) => void\n /** Removes the turn of `generation`. */\n removeGeneration: (generation: DocumentChatGeneration) => void\n clearError: () => void\n}\n\nconst EMPTY: DocumentChatState = { messages: [], ops: NO_AGENT_OPS, streaming: false, error: null }\n\n/**\n * Document chat state: the conversation lives only here (client side) and goes to `/api/ai/chat` in full with every\n * message, together with the document as it is at that moment and the edit scope. Proposed edit operations open an\n * in-document review; their decisions go to the model with the next message.\n */\nexport function createDocumentChat({ fetch, modelRef, notify, t }: DocumentChatOptions): DocumentChat {\n const store = createStore<DocumentChatState>(EMPTY)\n const review = createAgentOpReview({ notify: silentNotifier, t })\n let controller: AbortController | null = null\n\n const patch = (changes: Partial<DocumentChatState>) => store.set({ ...store.get(), ...changes })\n\n function abort() {\n controller?.abort()\n }\n\n function reset() {\n abort()\n controller = null\n store.set(EMPTY)\n review.reset()\n }\n\n /** Replaces the turn `turn` (by identity) with `next`; returns `next`. */\n function replaceTurn<T extends DocumentChatTurn>(turn: DocumentChatTurn, next: T): T {\n const { messages } = store.get()\n const index = messages.indexOf(turn)\n if (index !== -1) patch({ messages: messages.map((m, i) => (i === index ? next : m)) })\n return next\n }\n\n // The proposed operations live in the review (the chat shows their outcomes inline, so it needs no extra notices); its state is the chat's `ops`.\n review.state.subscribe(({ ops }) => {\n if (ops !== store.get().ops) patch({ ops })\n })\n\n async function ask(message: string, editor: Editor, scope: AgentScope | null): Promise<boolean> {\n if (store.get().streaming || !message.trim()) return false\n if (scope && !scope.ids.length) {\n patch({ error: t('ai.chat.emptyScope') })\n return false\n }\n // The block model of the system prompt: the editor's `aiContext` kinds and host blocks, and what `convert` may turn blocks into.\n // Read before any state changes: a merge error in the contributions throws here and must not leave the chat streaming.\n const { kinds, blocks, structure } = aiContextOf(editor)\n const providers = conversionsOf(editor)\n const targets = [\n ...CORE_TARGET_IDS,\n ...kinds.map(kind => convertTargetId({ type: 'composite', kind: kind.id })),\n ...blocks.filter(block => parseConversionTarget(providers, block.id) !== null).map(block => block.id),\n ]\n const own = new AbortController()\n controller = own\n const feedback = review.unreported()\n const userTurn: DocumentChatTurn = { role: 'user', content: message.trim(), ...(feedback.length ? { feedback } : {}) }\n let answer: Extract<DocumentChatTurn, { role: 'assistant' }> = { role: 'assistant', content: '' }\n // The newest chat turns (block generations are the sidebar's own); the request must start with a user message.\n const sent: DocumentChatMessage[] = [...store.get().messages, userTurn].filter(turn => turn.role === 'user' || !turn.generation).slice(-CHAT_LIMITS.messages).map(turn => turn.role === 'user'\n ? { role: 'user', content: turn.content.slice(0, CHAT_LIMITS.message), ...(turn.feedback && { feedback: turn.feedback }) }\n : { role: 'assistant', content: turn.content.slice(0, CHAT_LIMITS.message), ...(turn.ops?.length ? { ops: turn.ops } : {}), ...(turn.dropped ? { dropped: turn.dropped } : {}) })\n if (sent[0]?.role === 'assistant') sent.shift()\n patch({ error: null, streaming: true, messages: [...store.get().messages, userTurn, answer] })\n const received: { proposal?: { ops: AgentOp[], dropped: AgentOpProblem[] } } = {}\n const body = { messages: sent, document: documentChatText(editor), scope: scope?.ids ?? null, nextOp: review.nextOp(), model: modelRef('generate'), kinds, blocks, targets, structure }\n const outcome = await postAiSse(fetch, '/api/ai/chat', body, {\n signal: own.signal,\n t,\n onDelta: (text) => {\n if (controller === own) answer = replaceTurn(answer, { ...answer, content: answer.content + text })\n },\n onEvent: (event, data) => {\n if (event === 'ops' && controller === own) received.proposal = data as typeof received.proposal\n },\n })\n if (controller !== own) return false // superseded by reset()\n controller = null\n patch({ streaming: false })\n const { ops: proposed = [], dropped = [] } = outcome.status === 'done' ? received.proposal ?? {} : {}\n if (outcome.status === 'done' || (outcome.status === 'aborted' && answer.content)) {\n review.markReported(feedback.filter(({ outcome: sentOutcome }) => sentOutcome !== 'pending').map(({ op }) => op))\n if (proposed.length || dropped.length) {\n answer = replaceTurn(answer, { ...answer, ops: proposed, dropped: dropped.length, problems: dropped })\n review.advanceOp(proposed.length)\n if (!editor.isDestroyed) review.propose(editor, proposed, scope)\n }\n return true\n }\n // Drop the unanswered turn: a later message should not carry a dangling one in its history.\n patch({ messages: store.get().messages.slice(0, -2) })\n if (outcome.status === 'rate-limited') notifyAiRateLimited(notify, t)\n else if (outcome.status === 'error') patch({ error: outcome.message })\n return false\n }\n\n const decide = review.decide\n const reveal = review.reveal\n\n function addGeneration(generation: DocumentChatGeneration) {\n patch({ error: null, messages: [...store.get().messages, { role: 'assistant', content: '', generation }] })\n }\n\n function updateGeneration(generation: DocumentChatGeneration, changes: Partial<Pick<DocumentChatGeneration, 'markdown' | 'done'>>) {\n Object.assign(generation, changes)\n const { messages } = store.get()\n patch({ messages: messages.map(turn => turn.role === 'assistant' && turn.generation === generation ? { ...turn } : turn) })\n }\n\n function removeGeneration(generation: DocumentChatGeneration) {\n const { messages } = store.get()\n const index = messages.findIndex(turn => turn.role === 'assistant' && turn.generation === generation)\n if (index !== -1) patch({ messages: messages.filter((_, i) => i !== index) })\n }\n\n function clearError() {\n if (store.get().error !== null) patch({ error: null })\n }\n\n return { state: store, ask, abort, reset, decide, reveal, addGeneration, updateGeneration, removeGeneration, clearError }\n}\n"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Editor, JSONContent } from "@tiptap/core";
2
+ import { Node as Node$1 } from "@tiptap/pm/model";
3
+ //#region src/features/ai/document-chat.d.ts
4
+ /**
5
+ * The document as sent to the chat: one line per text block, `[<block id>] <Markdown>` (e.g. `[…] **Anna:** Text`),
6
+ * with list markers and quote prefixes after the ID. Nested blocks carry their own IDs, so quotes from list items or
7
+ * block quotes link to exactly that paragraph. A block container below the document (a composite: the schema flags it
8
+ * `editorBlockContainer`, its title/description/tags rows `editorChrome`) is a header line `[<id>] ::: <kind> {meta} |
9
+ * <title> | <description> | Tags: #a` (empty parts left out), its body blocks two spaces further in, and a closing
10
+ * `:::` line without ID at that indent. Any other non-list block with block content (a host block such as a callout) is
11
+ * a header line `[<id>] <first line of its Markdown form without content>` (`!!! info`) with its body blocks two spaces
12
+ * further in, each with its own ID and no closing line; if that header is empty, only the body blocks appear. Cut at
13
+ * whole lines to fit `CHAT_LIMITS.document`.
14
+ */
15
+ export declare function documentChatText(editor: Editor): string;
16
+ //#endregion
17
+ //# sourceMappingURL=document-chat.d.ts.map
@@ -0,0 +1,112 @@
1
+ import { blockIdOf, findBlockById } from "../../core/schema/block-ids.js";
2
+ import { isBlockContainer, isChromeNode } from "../../core/schema/node-flags.js";
3
+ import { isWrapperBlock } from "../../core/convert.js";
4
+ import { parseBlocks } from "../../core/pipeline.js";
5
+ import { CHAT_LIMITS, CITATION_HREF_PREFIX, citationBlockId } from "./protocol/chat.js";
6
+ import { Fragment } from "@tiptap/pm/model";
7
+ //#region src/features/ai/document-chat.ts
8
+ const TRUNCATED = "[…] (Rest des Dokuments gekürzt)";
9
+ /**
10
+ * The document as sent to the chat: one line per text block, `[<block id>] <Markdown>` (e.g. `[…] **Anna:** Text`),
11
+ * with list markers and quote prefixes after the ID. Nested blocks carry their own IDs, so quotes from list items or
12
+ * block quotes link to exactly that paragraph. A block container below the document (a composite: the schema flags it
13
+ * `editorBlockContainer`, its title/description/tags rows `editorChrome`) is a header line `[<id>] ::: <kind> {meta} |
14
+ * <title> | <description> | Tags: #a` (empty parts left out), its body blocks two spaces further in, and a closing
15
+ * `:::` line without ID at that indent. Any other non-list block with block content (a host block such as a callout) is
16
+ * a header line `[<id>] <first line of its Markdown form without content>` (`!!! info`) with its body blocks two spaces
17
+ * further in, each with its own ID and no closing line; if that header is empty, only the body blocks appear. Cut at
18
+ * whole lines to fit `CHAT_LIMITS.document`.
19
+ */
20
+ function documentChatText(editor) {
21
+ const lines = [];
22
+ let size = 0;
23
+ let full = false;
24
+ const push = (line) => {
25
+ if (full || size + line.length + 1 > CHAT_LIMITS.document - 32 - 1) {
26
+ full = true;
27
+ return;
28
+ }
29
+ lines.push(line);
30
+ size += line.length + 1;
31
+ };
32
+ const markdownOf = (node) => editor.markdown.serialize({
33
+ type: "doc",
34
+ content: [node.toJSON()]
35
+ }).trim();
36
+ const emit = (node, prefix, id) => {
37
+ const markdown = markdownOf(node);
38
+ if (!markdown) return;
39
+ const text = node.type.name === "codeBlock" ? markdown : markdown.replace(/\s*\n\s*/g, " ");
40
+ push(`${id ? `[${id}] ` : ""}${prefix}${text}`);
41
+ };
42
+ const container = (node, prefix, id) => {
43
+ const meta = node.attrs.meta;
44
+ const parts = [`::: ${String(node.attrs.kind)}${meta && typeof meta === "object" && Object.keys(meta).length ? ` ${JSON.stringify(meta)}` : ""}`];
45
+ node.forEach((child) => {
46
+ if (!isChromeNode(child)) return;
47
+ const text = markdownOf(child).replace(/^(?:#+|>) ?/, "").replace(/\s*\n\s*/g, " ");
48
+ if (text) parts.push(text);
49
+ });
50
+ push(`${id ? `[${id}] ` : ""}${prefix}${parts.join(" | ")}`);
51
+ visit(node, `${prefix} `, id);
52
+ push(`${prefix} :::`);
53
+ };
54
+ const wrapper = (node, prefix, id) => {
55
+ const header = markdownOf(node.copy(Fragment.empty)).split("\n")[0] ?? "";
56
+ if (header) push(`${id ? `[${id}] ` : ""}${prefix}${header}`);
57
+ visit(node, header ? `${prefix} ` : prefix, id);
58
+ };
59
+ const visit = (node, prefix, parentId) => {
60
+ let current = prefix;
61
+ node.forEach((child, _offset, index) => {
62
+ if (full || isChromeNode(child)) return;
63
+ const id = blockIdOf(child) ?? parentId;
64
+ if (child.isTextblock || child.isLeaf) emit(child, current, id);
65
+ else if (isBlockContainer(child)) container(child, current, id);
66
+ else if (child.type.name === "blockquote") visit(child, `${current}> `, id);
67
+ else if (child.type.name === "bulletList" || child.type.name === "orderedList") {
68
+ const start = Number(child.attrs.start ?? 1);
69
+ child.forEach((item, _o, i) => visit(item, `${current}${child.type.name === "orderedList" ? `${start + i}. ` : "- "}`, id));
70
+ } else if (isWrapperBlock(child)) wrapper(child, current, id);
71
+ else visit(child, current, id);
72
+ if (index === 0) current = prefix.replace(/(?:- |\d+\. )$/, (marker) => " ".repeat(marker.length));
73
+ });
74
+ };
75
+ visit(editor.state.doc, "", null);
76
+ if (full) lines.push(TRUNCATED);
77
+ return lines.join("\n");
78
+ }
79
+ /**
80
+ * Chat answer Markdown parsed for display with the pipeline of `editor` (speaker lines become segments where a feature
81
+ * contributes them): quote links whose block exists in `doc` point to `#block-<id>`, and quote links to unknown blocks
82
+ * lose the link (plain text).
83
+ */
84
+ function documentChatAnswerContent(editor, markdown, doc) {
85
+ const resolve = (node) => {
86
+ const marks = node.marks?.flatMap((mark) => {
87
+ if (mark.type !== "link") return [mark];
88
+ const id = citationBlockId(mark.attrs?.href);
89
+ if (id === null) return [mark];
90
+ return doc && findBlockById(doc, id) ? [{
91
+ ...mark,
92
+ attrs: {
93
+ ...mark.attrs,
94
+ href: `${CITATION_HREF_PREFIX}${id}`
95
+ }
96
+ }] : [];
97
+ });
98
+ return {
99
+ ...node,
100
+ ...marks && { marks },
101
+ ...node.content && { content: node.content.map(resolve) }
102
+ };
103
+ };
104
+ return resolve({
105
+ type: "doc",
106
+ content: parseBlocks(editor, markdown).blocks
107
+ });
108
+ }
109
+ //#endregion
110
+ export { documentChatAnswerContent, documentChatText };
111
+
112
+ //# sourceMappingURL=document-chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-chat.js","names":[],"sources":["../../../src/features/ai/document-chat.ts"],"sourcesContent":["import type { Editor, JSONContent } from '@tiptap/core'\nimport { Fragment, type Node as PMNode } from '@tiptap/pm/model'\nimport { isWrapperBlock, parseBlocks } from '../../core'\nimport { blockIdOf, findBlockById, isBlockContainer, isChromeNode } from '../../core/schema'\nimport { CHAT_LIMITS, CITATION_HREF_PREFIX, citationBlockId } from './protocol'\n\n// i18n-ignore: the marker is part of the document text sent to the model\nconst TRUNCATED = '[…] (Rest des Dokuments gekürzt)'\n\n/**\n * The document as sent to the chat: one line per text block, `[<block id>] <Markdown>` (e.g. `[…] **Anna:** Text`),\n * with list markers and quote prefixes after the ID. Nested blocks carry their own IDs, so quotes from list items or\n * block quotes link to exactly that paragraph. A block container below the document (a composite: the schema flags it\n * `editorBlockContainer`, its title/description/tags rows `editorChrome`) is a header line `[<id>] ::: <kind> {meta} |\n * <title> | <description> | Tags: #a` (empty parts left out), its body blocks two spaces further in, and a closing\n * `:::` line without ID at that indent. Any other non-list block with block content (a host block such as a callout) is\n * a header line `[<id>] <first line of its Markdown form without content>` (`!!! info`) with its body blocks two spaces\n * further in, each with its own ID and no closing line; if that header is empty, only the body blocks appear. Cut at\n * whole lines to fit `CHAT_LIMITS.document`.\n */\nexport function documentChatText(editor: Editor): string {\n const lines: string[] = []\n let size = 0\n let full = false\n\n const push = (line: string) => {\n if (full || size + line.length + 1 > CHAT_LIMITS.document - TRUNCATED.length - 1) {\n full = true\n return\n }\n lines.push(line)\n size += line.length + 1\n }\n const markdownOf = (node: PMNode) => editor.markdown!.serialize({ type: 'doc', content: [node.toJSON()] }).trim()\n\n const emit = (node: PMNode, prefix: string, id: string | null) => {\n const markdown = markdownOf(node)\n if (!markdown) return\n // Hard breaks and wrapped lines would start new \"blocks\"; code keeps its lines.\n const text = node.type.name === 'codeBlock' ? markdown : markdown.replace(/\\s*\\n\\s*/g, ' ')\n push(`${id ? `[${id}] ` : ''}${prefix}${text}`)\n }\n\n const container = (node: PMNode, prefix: string, id: string | null) => {\n const meta: unknown = node.attrs.meta\n const parts = [`::: ${String(node.attrs.kind)}${meta && typeof meta === 'object' && Object.keys(meta).length ? ` ${JSON.stringify(meta)}` : ''}`]\n node.forEach((child) => {\n if (!isChromeNode(child)) return\n // The chrome's own Markdown (`## title`, `> description`, `Tags: #a`) without the block markers.\n const text = markdownOf(child).replace(/^(?:#+|>) ?/, '').replace(/\\s*\\n\\s*/g, ' ')\n if (text) parts.push(text)\n })\n push(`${id ? `[${id}] ` : ''}${prefix}${parts.join(' | ')}`)\n visit(node, `${prefix} `, id)\n push(`${prefix} :::`)\n }\n\n // A host block with block content (a callout): its own Markdown form without content as the header line, the body\n // blocks two spaces further in, each with its own ID, no closing line (the form has none).\n const wrapper = (node: PMNode, prefix: string, id: string | null) => {\n const header = markdownOf(node.copy(Fragment.empty)).split('\\n')[0] ?? ''\n if (header) push(`${id ? `[${id}] ` : ''}${prefix}${header}`)\n visit(node, header ? `${prefix} ` : prefix, id)\n }\n\n const visit = (node: PMNode, prefix: string, parentId: string | null) => {\n let current = prefix\n node.forEach((child, _offset, index) => {\n if (full || isChromeNode(child)) return\n const id = blockIdOf(child) ?? parentId\n if (child.isTextblock || child.isLeaf) emit(child, current, id)\n else if (isBlockContainer(child)) container(child, current, id)\n else if (child.type.name === 'blockquote') visit(child, `${current}> `, id)\n else if (child.type.name === 'bulletList' || child.type.name === 'orderedList') {\n const start = Number(child.attrs.start ?? 1)\n child.forEach((item, _o, i) => visit(item, `${current}${child.type.name === 'orderedList' ? `${start + i}. ` : '- '}`, id))\n }\n else if (isWrapperBlock(child)) wrapper(child, current, id)\n else visit(child, current, id)\n // Later blocks of the same list item continue under its marker instead of repeating it.\n if (index === 0) current = prefix.replace(/(?:- |\\d+\\. )$/, marker => ' '.repeat(marker.length))\n })\n }\n\n visit(editor.state.doc, '', null)\n if (full) lines.push(TRUNCATED)\n return lines.join('\\n')\n}\n\n/**\n * Chat answer Markdown parsed for display with the pipeline of `editor` (speaker lines become segments where a feature\n * contributes them): quote links whose block exists in `doc` point to `#block-<id>`, and quote links to unknown blocks\n * lose the link (plain text).\n */\nexport function documentChatAnswerContent(editor: Editor, markdown: string, doc: PMNode | undefined): JSONContent {\n const resolve = (node: JSONContent): JSONContent => {\n const marks = node.marks?.flatMap((mark) => {\n if (mark.type !== 'link') return [mark]\n const id = citationBlockId(mark.attrs?.href)\n if (id === null) return [mark]\n return doc && findBlockById(doc, id) ? [{ ...mark, attrs: { ...mark.attrs, href: `${CITATION_HREF_PREFIX}${id}` } }] : []\n })\n return { ...node, ...(marks && { marks }), ...(node.content && { content: node.content.map(resolve) }) }\n }\n return resolve({ type: 'doc', content: parseBlocks(editor, markdown).blocks })\n}\n"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { EditorFeature } from "../../core/feature.js";
2
+ import "../../core/index.js";
3
+ //#region src/features/ai/feature.d.ts
4
+ /** What a framework binding supplies to the AI feature: the components of its UI layer. */
5
+ export interface AiUi<C> {
6
+ /** The selection bubble menu and the caret menu (rewrite, translate, generate; preview and apply). */
7
+ selectionMenu: C;
8
+ /** The accept/reject bar of the in-document review. */
9
+ reviewBar: C;
10
+ /** The „KI“ settings tab component of the framework. */
11
+ settingsTab: C;
12
+ }
13
+ /**
14
+ * AI on a core editor: the selection menu and `/ai` (rewrite and generate at the caret), in-document review of
15
+ * rewrites, ghost autocomplete, the model profiles and the `ai` settings tab, the „Mit KI bearbeiten“ block action, the
16
+ * toolbar group (sidebar toggle, autocomplete switch) and Mod-Shift-k. The sidebar (`AiSidebar`) and the model switch
17
+ * are components the host places. Reads the document model through the merged `aiContext` (kinds, host blocks,
18
+ * structure) and the `formatAiResult` contribution of other
19
+ * features (defaults: no kinds, no blocks, flat structure) and maps positions through the preset's anchor resolver, so it imports
20
+ * no composites, transcript, media, mentions, collaboration or Yjs code. The model profiles come from the app context
21
+ * (`modelProfiles(ctx.app)`), shared by all editors of the app.
22
+ */
23
+ export declare function aiFeatureCore<C>(ui: AiUi<C>): EditorFeature<C>;
24
+ //#endregion
25
+ //# sourceMappingURL=feature.d.ts.map
@@ -0,0 +1,89 @@
1
+ import { AiReview } from "./ai-review.js";
2
+ import { AiSelectionHighlight } from "./ai-selection-highlight.js";
3
+ import { aiBlockAction, aiSlashCommand } from "./block-actions.js";
4
+ import { completionFetcher, ghostAutocomplete } from "./ghost-autocomplete.js";
5
+ import { modelProfiles } from "./model-profiles.js";
6
+ import { Extension } from "@tiptap/core";
7
+ //#region src/features/ai/feature.ts
8
+ /** Pause after the last keystroke before an autocomplete suggestion is requested (ms). */
9
+ const GHOST_DEBOUNCE = 500;
10
+ function sidebarShortcut(ctx) {
11
+ return Extension.create({
12
+ name: "aiSidebarShortcut",
13
+ addKeyboardShortcuts: () => ({ "Mod-Shift-k": () => {
14
+ ctx.ui.toggleSidebar();
15
+ return true;
16
+ } })
17
+ });
18
+ }
19
+ function aiToolbar(ctx) {
20
+ return [{
21
+ id: "ai",
22
+ order: 1e3,
23
+ items: [{
24
+ id: "sidebar",
25
+ order: 10,
26
+ icon: "i-lucide-panel-right",
27
+ label: ctx.t("ai.toolbar.sidebar"),
28
+ kbds: [
29
+ "meta",
30
+ "shift",
31
+ "k"
32
+ ],
33
+ run: () => ctx.ui.toggleSidebar()
34
+ }, {
35
+ id: "autocomplete",
36
+ order: 20,
37
+ icon: "i-lucide-wand-sparkles",
38
+ label: ctx.t("ai.toolbar.autocomplete"),
39
+ active: () => ctx.settings.get().ai.autocomplete,
40
+ run: () => {
41
+ ctx.settings.update((s) => {
42
+ s.ai.autocomplete = !s.ai.autocomplete;
43
+ });
44
+ }
45
+ }]
46
+ }];
47
+ }
48
+ /**
49
+ * AI on a core editor: the selection menu and `/ai` (rewrite and generate at the caret), in-document review of
50
+ * rewrites, ghost autocomplete, the model profiles and the `ai` settings tab, the „Mit KI bearbeiten“ block action, the
51
+ * toolbar group (sidebar toggle, autocomplete switch) and Mod-Shift-k. The sidebar (`AiSidebar`) and the model switch
52
+ * are components the host places. Reads the document model through the merged `aiContext` (kinds, host blocks,
53
+ * structure) and the `formatAiResult` contribution of other
54
+ * features (defaults: no kinds, no blocks, flat structure) and maps positions through the preset's anchor resolver, so it imports
55
+ * no composites, transcript, media, mentions, collaboration or Yjs code. The model profiles come from the app context
56
+ * (`modelProfiles(ctx.app)`), shared by all editors of the app.
57
+ */
58
+ function aiFeatureCore(ui) {
59
+ return {
60
+ id: "ai",
61
+ extensions: (ctx) => [
62
+ AiSelectionHighlight,
63
+ AiReview,
64
+ ghostAutocomplete({
65
+ settings: ctx.settings,
66
+ debounce: GHOST_DEBOUNCE,
67
+ fetchSuggestion: completionFetcher({
68
+ fetch: ctx.fetch,
69
+ modelRef: modelProfiles(ctx.app).modelRef
70
+ })
71
+ }),
72
+ sidebarShortcut(ctx)
73
+ ],
74
+ toolbar: aiToolbar,
75
+ blockActions: (ctx) => [aiBlockAction(ctx)],
76
+ slashCommands: (ctx) => [aiSlashCommand(ctx)],
77
+ overlays: [ui.selectionMenu, ui.reviewBar],
78
+ settingsTabs: (ctx) => [{
79
+ id: "ai",
80
+ label: ctx.t("ai.tab"),
81
+ icon: "i-lucide-sparkles",
82
+ component: ui.settingsTab
83
+ }]
84
+ };
85
+ }
86
+ //#endregion
87
+ export { aiFeatureCore };
88
+
89
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature.js","names":[],"sources":["../../../src/features/ai/feature.ts"],"sourcesContent":["import { type AnyExtension, Extension } from '@tiptap/core'\nimport type { EditorFeature, FeatureContext, ToolbarGroup } from '../../core'\nimport { AiReview } from './ai-review'\nimport { AiSelectionHighlight } from './ai-selection-highlight'\nimport { aiBlockAction, aiSlashCommand } from './block-actions'\nimport { completionFetcher, ghostAutocomplete } from './ghost-autocomplete'\nimport { modelProfiles } from './model-profiles'\n\n/** What a framework binding supplies to the AI feature: the components of its UI layer. */\nexport interface AiUi<C> {\n /** The selection bubble menu and the caret menu (rewrite, translate, generate; preview and apply). */\n selectionMenu: C\n /** The accept/reject bar of the in-document review. */\n reviewBar: C\n /** The „KI“ settings tab component of the framework. */\n settingsTab: C\n}\n\n/** Pause after the last keystroke before an autocomplete suggestion is requested (ms). */\nconst GHOST_DEBOUNCE = 500\n\n// Mod-Shift-k toggles this editor's AI sidebar while the editor has focus (shown on the toolbar's „KI-Seitenleiste“).\nfunction sidebarShortcut(ctx: FeatureContext): AnyExtension {\n return Extension.create({\n name: 'aiSidebarShortcut',\n addKeyboardShortcuts: () => ({\n 'Mod-Shift-k': () => {\n ctx.ui.toggleSidebar()\n return true\n },\n }),\n })\n}\n\nfunction aiToolbar<C>(ctx: FeatureContext): ToolbarGroup<C>[] {\n return [{\n id: 'ai',\n order: 1000,\n items: [\n {\n id: 'sidebar',\n order: 10,\n icon: 'i-lucide-panel-right',\n label: ctx.t('ai.toolbar.sidebar'),\n kbds: ['meta', 'shift', 'k'],\n run: () => ctx.ui.toggleSidebar(),\n },\n {\n id: 'autocomplete',\n order: 20,\n icon: 'i-lucide-wand-sparkles',\n label: ctx.t('ai.toolbar.autocomplete'),\n active: () => ctx.settings.get().ai.autocomplete,\n run: () => { ctx.settings.update((s) => { s.ai.autocomplete = !s.ai.autocomplete }) },\n },\n ],\n }]\n}\n\n/**\n * AI on a core editor: the selection menu and `/ai` (rewrite and generate at the caret), in-document review of\n * rewrites, ghost autocomplete, the model profiles and the `ai` settings tab, the „Mit KI bearbeiten“ block action, the\n * toolbar group (sidebar toggle, autocomplete switch) and Mod-Shift-k. The sidebar (`AiSidebar`) and the model switch\n * are components the host places. Reads the document model through the merged `aiContext` (kinds, host blocks,\n * structure) and the `formatAiResult` contribution of other\n * features (defaults: no kinds, no blocks, flat structure) and maps positions through the preset's anchor resolver, so it imports\n * no composites, transcript, media, mentions, collaboration or Yjs code. The model profiles come from the app context\n * (`modelProfiles(ctx.app)`), shared by all editors of the app.\n */\nexport function aiFeatureCore<C>(ui: AiUi<C>): EditorFeature<C> {\n return {\n id: 'ai',\n extensions: ctx => [\n AiSelectionHighlight,\n AiReview,\n ghostAutocomplete({\n settings: ctx.settings,\n debounce: GHOST_DEBOUNCE,\n fetchSuggestion: completionFetcher({ fetch: ctx.fetch, modelRef: modelProfiles(ctx.app).modelRef }),\n }),\n sidebarShortcut(ctx),\n ],\n toolbar: aiToolbar<C>,\n blockActions: ctx => [aiBlockAction(ctx)],\n slashCommands: ctx => [aiSlashCommand(ctx)],\n overlays: [ui.selectionMenu, ui.reviewBar],\n settingsTabs: ctx => [{ id: 'ai', label: ctx.t('ai.tab'), icon: 'i-lucide-sparkles', component: ui.settingsTab }],\n }\n}\n"],"mappings":";;;;;;;;AAmBA,MAAM,iBAAiB;AAGvB,SAAS,gBAAgB,KAAmC;CAC1D,OAAO,UAAU,OAAO;EACtB,MAAM;EACN,6BAA6B,EAC3B,qBAAqB;GACnB,IAAI,GAAG,cAAc;GACrB,OAAO;EACT,EACF;CACF,CAAC;AACH;AAEA,SAAS,UAAa,KAAwC;CAC5D,OAAO,CAAC;EACN,IAAI;EACJ,OAAO;EACP,OAAO,CACL;GACE,IAAI;GACJ,OAAO;GACP,MAAM;GACN,OAAO,IAAI,EAAE,oBAAoB;GACjC,MAAM;IAAC;IAAQ;IAAS;GAAG;GAC3B,WAAW,IAAI,GAAG,cAAc;EAClC,GACA;GACE,IAAI;GACJ,OAAO;GACP,MAAM;GACN,OAAO,IAAI,EAAE,yBAAyB;GACtC,cAAc,IAAI,SAAS,IAAI,CAAC,CAAC,GAAG;GACpC,WAAW;IAAE,IAAI,SAAS,QAAQ,MAAM;KAAE,EAAE,GAAG,eAAe,CAAC,EAAE,GAAG;IAAa,CAAC;GAAE;EACtF,CACF;CACF,CAAC;AACH;;;;;;;;;;;AAYA,SAAgB,cAAiB,IAA+B;CAC9D,OAAO;EACL,IAAI;EACJ,aAAY,QAAO;GACjB;GACA;GACA,kBAAkB;IAChB,UAAU,IAAI;IACd,UAAU;IACV,iBAAiB,kBAAkB;KAAE,OAAO,IAAI;KAAO,UAAU,cAAc,IAAI,GAAG,CAAC,CAAC;IAAS,CAAC;GACpG,CAAC;GACD,gBAAgB,GAAG;EACrB;EACA,SAAS;EACT,eAAc,QAAO,CAAC,cAAc,GAAG,CAAC;EACxC,gBAAe,QAAO,CAAC,eAAe,GAAG,CAAC;EAC1C,UAAU,CAAC,GAAG,eAAe,GAAG,SAAS;EACzC,eAAc,QAAO,CAAC;GAAE,IAAI;GAAM,OAAO,IAAI,EAAE,QAAQ;GAAG,MAAM;GAAqB,WAAW,GAAG;EAAY,CAAC;CAClH;AACF"}
@@ -0,0 +1,47 @@
1
+ import { ModelSlot } from "../../settings/values.js";
2
+ import { EditorSettings } from "../../settings/index.js";
3
+ import { Store } from "../../core/store.js";
4
+ import { ModelRef } from "./protocol/models.js";
5
+ import "./protocol/index.js";
6
+ import { Extension } from "@tiptap/core";
7
+ import { PluginKey } from "@tiptap/pm/state";
8
+ import { $Fetch } from "ofetch";
9
+ //#region src/features/ai/ghost-autocomplete.d.ts
10
+ export interface GhostAutocompleteOptions {
11
+ /** The app's shared settings: `ai.autocomplete` switches the suggestions on. */
12
+ settings: Store<EditorSettings>;
13
+ /** Pause after the last keystroke before a suggestion is requested (ms). */
14
+ debounce: number;
15
+ /** Fetches a continuation of `before` (document text up to the caret); '' for none. Must honour `signal`. */
16
+ fetchSuggestion: (before: string, signal: AbortSignal) => Promise<string>;
17
+ }
18
+ interface Suggestion {
19
+ text: string;
20
+ pos: number;
21
+ }
22
+ interface GhostState {
23
+ suggestion: Suggestion | null;
24
+ /** Bumped by local edits: each bump starts a new pause, so at most one request follows it. */
25
+ edits: number;
26
+ /** Bumped by local edits and caret moves: an in-flight request is stale once this changed. */
27
+ activity: number;
28
+ }
29
+ export declare const ghostAutocompleteKey: PluginKey<GhostState>;
30
+ /** What the suggestion source needs of the app: its HTTP client and the model profile of a slot (`useModelProfiles`). */
31
+ export interface CompletionHost {
32
+ fetch: $Fetch;
33
+ modelRef: (slot: ModelSlot) => ModelRef;
34
+ }
35
+ /** The suggestion source of the app behind `host`: `POST /api/ai/complete` on the profile of the `complete` slot. */
36
+ export declare function completionFetcher(host: CompletionHost): GhostAutocompleteOptions['fetchSuggestion'];
37
+ /**
38
+ * Inline AI autocomplete: after a typing pause at the end of a non-empty textblock, a short continuation is shown as grey
39
+ * ghost text after the caret. Tab accepts it as normal text, Esc dismisses it; typing, caret moves and blur clear it.
40
+ * The suggestion is a local widget decoration — never part of the document, so collaborators never see it.
41
+ * On while the editor setting `ai.autocomplete` is (see `useEditorSettings`); turning it off clears the ghost.
42
+ * Client-only: not part of `schemaExtensions()`.
43
+ */
44
+ export declare const ghostAutocomplete: (options: GhostAutocompleteOptions) => Extension<any, any>;
45
+ //#endregion
46
+ export {};
47
+ //# sourceMappingURL=ghost-autocomplete.d.ts.map