@musnows/scriverse 0.3.11 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. package/README.en.md +3 -1
  2. package/README.md +5 -1
  3. package/dist/ai.js +292 -19
  4. package/dist/ai.js.map +1 -1
  5. package/dist/app.js +46 -4
  6. package/dist/app.js.map +1 -1
  7. package/dist/database.js +64 -0
  8. package/dist/database.js.map +1 -1
  9. package/dist/public/app.js +1088 -274
  10. package/dist/public/character-markdown.js +12 -0
  11. package/dist/public/character-version.js +3 -1
  12. package/dist/public/index.html +76 -29
  13. package/dist/public/keyboard-shortcuts.d.ts +9 -0
  14. package/dist/public/keyboard-shortcuts.js +4 -0
  15. package/dist/public/model-config.d.ts +1 -0
  16. package/dist/public/model-config.js +12 -3
  17. package/dist/public/module-layout.d.ts +17 -0
  18. package/dist/public/module-layout.js +28 -0
  19. package/dist/public/page-route.js +1 -1
  20. package/dist/public/relationship-graph.js +62 -2
  21. package/dist/public/styles.css +330 -98
  22. package/dist/public/vendor/vditor/dist/css/content-theme/ant-design.css +210 -0
  23. package/dist/public/vendor/vditor/dist/css/content-theme/dark.css +123 -0
  24. package/dist/public/vendor/vditor/dist/css/content-theme/light.css +101 -0
  25. package/dist/public/vendor/vditor/dist/css/content-theme/wechat.css +94 -0
  26. package/dist/public/vendor/vditor/dist/images/emoji/b3log.png +0 -0
  27. package/dist/public/vendor/vditor/dist/images/emoji/chainbook.png +0 -0
  28. package/dist/public/vendor/vditor/dist/images/emoji/doge.png +0 -0
  29. package/dist/public/vendor/vditor/dist/images/emoji/hacpai.png +0 -0
  30. package/dist/public/vendor/vditor/dist/images/emoji/huaji.gif +0 -0
  31. package/dist/public/vendor/vditor/dist/images/emoji/latke.png +0 -0
  32. package/dist/public/vendor/vditor/dist/images/emoji/liandi.png +0 -0
  33. package/dist/public/vendor/vditor/dist/images/emoji/lute.png +0 -0
  34. package/dist/public/vendor/vditor/dist/images/emoji/octocat.png +0 -0
  35. package/dist/public/vendor/vditor/dist/images/emoji/pipe.png +0 -0
  36. package/dist/public/vendor/vditor/dist/images/emoji/siyuan.png +0 -0
  37. package/dist/public/vendor/vditor/dist/images/emoji/solo.png +0 -0
  38. package/dist/public/vendor/vditor/dist/images/emoji/sym.png +0 -0
  39. package/dist/public/vendor/vditor/dist/images/emoji/trollface.png +0 -0
  40. package/dist/public/vendor/vditor/dist/images/emoji/vditor.png +0 -0
  41. package/dist/public/vendor/vditor/dist/images/emoji/wide.png +0 -0
  42. package/dist/public/vendor/vditor/dist/images/emoji/wulian.png +0 -0
  43. package/dist/public/vendor/vditor/dist/images/img-loading.svg +1 -0
  44. package/dist/public/vendor/vditor/dist/images/logo.png +0 -0
  45. package/dist/public/vendor/vditor/dist/index.css +1823 -0
  46. package/dist/public/vendor/vditor/dist/index.d.ts +82 -0
  47. package/dist/public/vendor/vditor/dist/index.js +15995 -0
  48. package/dist/public/vendor/vditor/dist/index.min.js +1 -0
  49. package/dist/public/vendor/vditor/dist/js/abcjs/abcjs_basic.min.js +3 -0
  50. package/dist/public/vendor/vditor/dist/js/echarts/echarts.min.js +45 -0
  51. package/dist/public/vendor/vditor/dist/js/flowchart.js/flowchart.min.js +8 -0
  52. package/dist/public/vendor/vditor/dist/js/graphviz/full.render.js +90 -0
  53. package/dist/public/vendor/vditor/dist/js/graphviz/viz.js +333 -0
  54. package/dist/public/vendor/vditor/dist/js/highlight.js/LICENSE +29 -0
  55. package/dist/public/vendor/vditor/dist/js/highlight.js/highlight.min.js +3835 -0
  56. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/a11y-dark.min.css +7 -0
  57. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/a11y-light.min.css +7 -0
  58. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/agate.min.css +20 -0
  59. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/an-old-hope.min.css +9 -0
  60. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/androidstudio.min.css +1 -0
  61. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/ant-design.min.css +84 -0
  62. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/arduino-light.min.css +1 -0
  63. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/arta.min.css +1 -0
  64. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/ascetic.min.css +1 -0
  65. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/atom-one-dark-reasonable.min.css +1 -0
  66. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/atom-one-dark.min.css +1 -0
  67. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/atom-one-light.min.css +1 -0
  68. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/3024.min.css +7 -0
  69. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/apathy.min.css +7 -0
  70. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/apprentice.min.css +7 -0
  71. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ashes.min.css +7 -0
  72. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-cave-light.min.css +7 -0
  73. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-cave.min.css +7 -0
  74. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-dune-light.min.css +7 -0
  75. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-dune.min.css +7 -0
  76. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-estuary-light.min.css +7 -0
  77. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-estuary.min.css +7 -0
  78. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-forest-light.min.css +7 -0
  79. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-forest.min.css +7 -0
  80. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-heath-light.min.css +7 -0
  81. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-heath.min.css +7 -0
  82. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-lakeside-light.min.css +7 -0
  83. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-lakeside.min.css +7 -0
  84. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-plateau-light.min.css +7 -0
  85. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-plateau.min.css +7 -0
  86. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-savanna-light.min.css +7 -0
  87. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-savanna.min.css +7 -0
  88. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-seaside-light.min.css +7 -0
  89. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-seaside.min.css +7 -0
  90. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-sulphurpool-light.min.css +7 -0
  91. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-sulphurpool.min.css +7 -0
  92. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atlas.min.css +7 -0
  93. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/bespin.min.css +7 -0
  94. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-bathory.min.css +7 -0
  95. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-burzum.min.css +7 -0
  96. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-dark-funeral.min.css +7 -0
  97. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-gorgoroth.min.css +7 -0
  98. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-immortal.min.css +7 -0
  99. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-khold.min.css +7 -0
  100. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-marduk.min.css +7 -0
  101. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-mayhem.min.css +7 -0
  102. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-nile.min.css +7 -0
  103. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-venom.min.css +7 -0
  104. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal.min.css +7 -0
  105. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/brewer.min.css +7 -0
  106. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/bright.min.css +7 -0
  107. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/brogrammer.min.css +7 -0
  108. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/brush-trees-dark.min.css +7 -0
  109. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/brush-trees.min.css +7 -0
  110. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/chalk.min.css +7 -0
  111. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/circus.min.css +7 -0
  112. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/classic-dark.min.css +7 -0
  113. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/classic-light.min.css +7 -0
  114. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/codeschool.min.css +7 -0
  115. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/colors.min.css +7 -0
  116. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/cupcake.min.css +7 -0
  117. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/cupertino.min.css +7 -0
  118. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/danqing.min.css +7 -0
  119. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/darcula.min.css +7 -0
  120. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/dark-violet.min.css +7 -0
  121. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/darkmoss.min.css +7 -0
  122. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/darktooth.min.css +7 -0
  123. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/decaf.min.css +7 -0
  124. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/default-dark.min.css +7 -0
  125. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/default-light.min.css +7 -0
  126. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/dirtysea.min.css +7 -0
  127. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/dracula.min.css +7 -0
  128. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/edge-dark.min.css +7 -0
  129. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/edge-light.min.css +7 -0
  130. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/eighties.min.css +7 -0
  131. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/embers.min.css +7 -0
  132. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/equilibrium-dark.min.css +7 -0
  133. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/equilibrium-gray-dark.min.css +7 -0
  134. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/equilibrium-gray-light.min.css +7 -0
  135. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/equilibrium-light.min.css +7 -0
  136. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/espresso.min.css +7 -0
  137. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/eva-dim.min.css +7 -0
  138. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/eva.min.css +7 -0
  139. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/flat.min.css +7 -0
  140. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/framer.min.css +7 -0
  141. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/fruit-soda.min.css +7 -0
  142. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gigavolt.min.css +7 -0
  143. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/github.min.css +7 -0
  144. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/google-dark.min.css +7 -0
  145. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/google-light.min.css +7 -0
  146. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/grayscale-dark.min.css +7 -0
  147. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/grayscale-light.min.css +7 -0
  148. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/green-screen.min.css +7 -0
  149. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gruvbox-dark-hard.min.css +7 -0
  150. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gruvbox-dark-medium.min.css +7 -0
  151. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gruvbox-dark-pale.min.css +7 -0
  152. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gruvbox-dark-soft.min.css +7 -0
  153. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gruvbox-light-hard.min.css +7 -0
  154. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gruvbox-light-medium.min.css +7 -0
  155. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gruvbox-light-soft.min.css +7 -0
  156. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/hardcore.min.css +7 -0
  157. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/harmonic16-dark.min.css +7 -0
  158. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/harmonic16-light.min.css +7 -0
  159. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/heetch-dark.min.css +7 -0
  160. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/heetch-light.min.css +7 -0
  161. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/helios.min.css +7 -0
  162. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/hopscotch.min.css +7 -0
  163. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/horizon-dark.min.css +7 -0
  164. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/horizon-light.min.css +7 -0
  165. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/humanoid-dark.min.css +7 -0
  166. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/humanoid-light.min.css +7 -0
  167. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ia-dark.min.css +7 -0
  168. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ia-light.min.css +7 -0
  169. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/icy-dark.min.css +7 -0
  170. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ir-black.min.css +7 -0
  171. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/isotope.min.css +7 -0
  172. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/kimber.min.css +7 -0
  173. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/london-tube.min.css +7 -0
  174. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/macintosh.min.css +7 -0
  175. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/marrakesh.min.css +7 -0
  176. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/materia.min.css +7 -0
  177. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/material-darker.min.css +7 -0
  178. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/material-lighter.min.css +7 -0
  179. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/material-palenight.min.css +7 -0
  180. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/material-vivid.min.css +7 -0
  181. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/material.min.css +7 -0
  182. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/mellow-purple.min.css +7 -0
  183. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/mexico-light.min.css +7 -0
  184. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/mocha.min.css +7 -0
  185. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/monokai.min.css +7 -0
  186. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/nebula.min.css +7 -0
  187. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/nord.min.css +7 -0
  188. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/nova.min.css +7 -0
  189. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ocean.min.css +7 -0
  190. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/oceanicnext.min.css +7 -0
  191. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/one-light.min.css +7 -0
  192. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/onedark.min.css +7 -0
  193. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/outrun-dark.min.css +7 -0
  194. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/papercolor-dark.min.css +7 -0
  195. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/papercolor-light.min.css +7 -0
  196. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/paraiso.min.css +7 -0
  197. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/pasque.min.css +7 -0
  198. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/phd.min.css +7 -0
  199. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/pico.min.css +7 -0
  200. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/pop.min.css +7 -0
  201. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/porple.min.css +7 -0
  202. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/qualia.min.css +7 -0
  203. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/railscasts.min.css +7 -0
  204. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/rebecca.min.css +7 -0
  205. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ros-pine-dawn.min.css +7 -0
  206. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ros-pine-moon.min.css +7 -0
  207. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ros-pine.min.css +7 -0
  208. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/sagelight.min.css +7 -0
  209. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/sandcastle.min.css +7 -0
  210. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/seti-ui.min.css +7 -0
  211. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/shapeshifter.min.css +7 -0
  212. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/silk-dark.min.css +7 -0
  213. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/silk-light.min.css +7 -0
  214. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/snazzy.min.css +7 -0
  215. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/solar-flare-light.min.css +7 -0
  216. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/solar-flare.min.css +7 -0
  217. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/solarized-dark.min.css +7 -0
  218. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/solarized-light.min.css +7 -0
  219. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/spacemacs.min.css +7 -0
  220. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/summercamp.min.css +7 -0
  221. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/summerfruit-dark.min.css +7 -0
  222. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/summerfruit-light.min.css +7 -0
  223. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/synth-midnight-terminal-dark.min.css +7 -0
  224. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/synth-midnight-terminal-light.min.css +7 -0
  225. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/tango.min.css +7 -0
  226. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/tender.min.css +7 -0
  227. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/tomorrow-night.min.css +7 -0
  228. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/tomorrow.min.css +7 -0
  229. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/twilight.min.css +7 -0
  230. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/unikitty-dark.min.css +7 -0
  231. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/unikitty-light.min.css +7 -0
  232. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/vulcan.min.css +7 -0
  233. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-10-light.min.css +7 -0
  234. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-10.min.css +7 -0
  235. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-95-light.min.css +7 -0
  236. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-95.min.css +7 -0
  237. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-high-contrast-light.min.css +7 -0
  238. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-high-contrast.min.css +7 -0
  239. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-nt-light.min.css +7 -0
  240. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-nt.min.css +7 -0
  241. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/woodland.min.css +7 -0
  242. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/xcode-dusk.min.css +7 -0
  243. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/zenburn.min.css +7 -0
  244. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/brown-paper.min.css +1 -0
  245. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/brown-papersq.png +0 -0
  246. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/codepen-embed.min.css +1 -0
  247. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/color-brewer.min.css +1 -0
  248. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/dark.min.css +1 -0
  249. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/default.min.css +9 -0
  250. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/devibeans.min.css +7 -0
  251. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/docco.min.css +1 -0
  252. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/far.min.css +1 -0
  253. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/felipec.min.css +7 -0
  254. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/foundation.min.css +1 -0
  255. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/github-dark-dimmed.min.css +9 -0
  256. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/github-dark.min.css +10 -0
  257. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/github.min.css +10 -0
  258. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/gml.min.css +1 -0
  259. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/googlecode.min.css +1 -0
  260. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/gradient-dark.min.css +1 -0
  261. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/gradient-light.min.css +1 -0
  262. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/grayscale.min.css +1 -0
  263. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/hybrid.min.css +1 -0
  264. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/idea.min.css +1 -0
  265. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/intellij-light.min.css +1 -0
  266. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/ir-black.min.css +1 -0
  267. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/isbl-editor-dark.min.css +1 -0
  268. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/isbl-editor-light.min.css +1 -0
  269. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/kimbie-dark.min.css +1 -0
  270. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/kimbie-light.min.css +1 -0
  271. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/lightfair.min.css +1 -0
  272. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/lioshi.min.css +1 -0
  273. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/magula.min.css +1 -0
  274. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/mono-blue.min.css +1 -0
  275. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/monokai-sublime.min.css +1 -0
  276. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/monokai.min.css +1 -0
  277. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/night-owl.min.css +1 -0
  278. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/nnfx-dark.min.css +10 -0
  279. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/nnfx-light.min.css +10 -0
  280. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/nord.min.css +1 -0
  281. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/obsidian.min.css +1 -0
  282. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/panda-syntax-dark.min.css +1 -0
  283. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/panda-syntax-light.min.css +1 -0
  284. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/paraiso-dark.min.css +1 -0
  285. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/paraiso-light.min.css +1 -0
  286. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/pojoaque.jpg +0 -0
  287. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/pojoaque.min.css +1 -0
  288. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/purebasic.min.css +1 -0
  289. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/qtcreator-dark.min.css +1 -0
  290. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/qtcreator-light.min.css +1 -0
  291. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/rainbow.min.css +1 -0
  292. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/routeros.min.css +1 -0
  293. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/school-book.min.css +1 -0
  294. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/shades-of-purple.min.css +1 -0
  295. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/srcery.min.css +1 -0
  296. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/stackoverflow-dark.min.css +13 -0
  297. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/stackoverflow-light.min.css +13 -0
  298. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/sunburst.min.css +1 -0
  299. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/tokyo-night-dark.min.css +8 -0
  300. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/tokyo-night-light.min.css +8 -0
  301. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/tomorrow-night-blue.min.css +1 -0
  302. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/tomorrow-night-bright.min.css +1 -0
  303. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/vs.min.css +1 -0
  304. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/vs2015.min.css +1 -0
  305. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/xcode.min.css +1 -0
  306. package/dist/public/vendor/vditor/dist/js/highlight.js/styles/xt256.min.css +1 -0
  307. package/dist/public/vendor/vditor/dist/js/highlight.js/third-languages.js +135 -0
  308. package/dist/public/vendor/vditor/dist/js/i18n/de_DE.js +86 -0
  309. package/dist/public/vendor/vditor/dist/js/i18n/en_US.js +86 -0
  310. package/dist/public/vendor/vditor/dist/js/i18n/es_ES.js +86 -0
  311. package/dist/public/vendor/vditor/dist/js/i18n/fr_FR.js +86 -0
  312. package/dist/public/vendor/vditor/dist/js/i18n/ja_JP.js +86 -0
  313. package/dist/public/vendor/vditor/dist/js/i18n/ko_KR.js +86 -0
  314. package/dist/public/vendor/vditor/dist/js/i18n/pt_BR.js +86 -0
  315. package/dist/public/vendor/vditor/dist/js/i18n/ru_RU.js +86 -0
  316. package/dist/public/vendor/vditor/dist/js/i18n/sv_SE.js +86 -0
  317. package/dist/public/vendor/vditor/dist/js/i18n/vi_VN.js +86 -0
  318. package/dist/public/vendor/vditor/dist/js/i18n/zh_CN.js +86 -0
  319. package/dist/public/vendor/vditor/dist/js/i18n/zh_TW.js +86 -0
  320. package/dist/public/vendor/vditor/dist/js/icons/ant.js +174 -0
  321. package/dist/public/vendor/vditor/dist/js/icons/material.js +195 -0
  322. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_AMS-Regular.ttf +0 -0
  323. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_AMS-Regular.woff +0 -0
  324. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  325. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  326. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  327. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  328. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  329. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  330. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  331. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  332. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  333. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  334. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  335. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  336. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  337. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Bold.ttf +0 -0
  338. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Bold.woff +0 -0
  339. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
  340. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  341. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  342. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  343. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Italic.ttf +0 -0
  344. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Italic.woff +0 -0
  345. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
  346. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Regular.ttf +0 -0
  347. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Regular.woff +0 -0
  348. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
  349. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  350. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  351. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  352. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Math-Italic.ttf +0 -0
  353. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Math-Italic.woff +0 -0
  354. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
  355. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  356. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  357. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  358. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  359. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  360. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  361. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  362. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  363. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  364. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Script-Regular.ttf +0 -0
  365. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Script-Regular.woff +0 -0
  366. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
  367. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size1-Regular.ttf +0 -0
  368. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size1-Regular.woff +0 -0
  369. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  370. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size2-Regular.ttf +0 -0
  371. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size2-Regular.woff +0 -0
  372. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  373. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size3-Regular.ttf +0 -0
  374. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size3-Regular.woff +0 -0
  375. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  376. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size4-Regular.ttf +0 -0
  377. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size4-Regular.woff +0 -0
  378. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  379. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  380. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  381. package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  382. package/dist/public/vendor/vditor/dist/js/katex/katex.min.css +1 -0
  383. package/dist/public/vendor/vditor/dist/js/katex/katex.min.js +1 -0
  384. package/dist/public/vendor/vditor/dist/js/katex/mhchem.min.js +1 -0
  385. package/dist/public/vendor/vditor/dist/js/lute/lute.min.js +72 -0
  386. package/dist/public/vendor/vditor/dist/js/markmap/katex.min.css +1 -0
  387. package/dist/public/vendor/vditor/dist/js/markmap/markmap.min.js +8251 -0
  388. package/dist/public/vendor/vditor/dist/js/markmap/prism.css +140 -0
  389. package/dist/public/vendor/vditor/dist/js/mathjax/LICENSE +202 -0
  390. package/dist/public/vendor/vditor/dist/js/mathjax/a11y/assistive-mml.js +1 -0
  391. package/dist/public/vendor/vditor/dist/js/mathjax/a11y/complexity.js +1 -0
  392. package/dist/public/vendor/vditor/dist/js/mathjax/a11y/explorer.js +1 -0
  393. package/dist/public/vendor/vditor/dist/js/mathjax/a11y/semantic-enrich.js +1 -0
  394. package/dist/public/vendor/vditor/dist/js/mathjax/input/asciimath.js +1 -0
  395. package/dist/public/vendor/vditor/dist/js/mathjax/input/mml/entities.js +1 -0
  396. package/dist/public/vendor/vditor/dist/js/mathjax/input/mml.js +1 -0
  397. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/action.js +1 -0
  398. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/all-packages.js +1 -0
  399. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/ams.js +1 -0
  400. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/amscd.js +1 -0
  401. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/autoload.js +1 -0
  402. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/bbox.js +1 -0
  403. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/boldsymbol.js +1 -0
  404. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/braket.js +1 -0
  405. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/bussproofs.js +1 -0
  406. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/cancel.js +1 -0
  407. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/color.js +1 -0
  408. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/colorV2.js +1 -0
  409. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/configMacros.js +1 -0
  410. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/enclose.js +1 -0
  411. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/extpfeil.js +1 -0
  412. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/html.js +1 -0
  413. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/mhchem.js +1 -0
  414. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/newcommand.js +1 -0
  415. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/noerrors.js +1 -0
  416. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/noundefined.js +1 -0
  417. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/physics.js +1 -0
  418. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/require.js +1 -0
  419. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/tagFormat.js +1 -0
  420. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/textmacros.js +1 -0
  421. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/unicode.js +1 -0
  422. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/verb.js +1 -0
  423. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex-base.js +1 -0
  424. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex-full.js +1 -0
  425. package/dist/public/vendor/vditor/dist/js/mathjax/input/tex.js +1 -0
  426. package/dist/public/vendor/vditor/dist/js/mathjax/sre/mathmaps/de.js +104 -0
  427. package/dist/public/vendor/vditor/dist/js/mathjax/sre/mathmaps/en.js +110 -0
  428. package/dist/public/vendor/vditor/dist/js/mathjax/sre/mathmaps/es.js +104 -0
  429. package/dist/public/vendor/vditor/dist/js/mathjax/sre/mathmaps/fr.js +104 -0
  430. package/dist/public/vendor/vditor/dist/js/mathjax/sre/mathmaps/mathmaps_ie.js +518 -0
  431. package/dist/public/vendor/vditor/dist/js/mathjax/sre/mathmaps/nemeth.js +104 -0
  432. package/dist/public/vendor/vditor/dist/js/mathjax/sre/sre-node.js +11 -0
  433. package/dist/public/vendor/vditor/dist/js/mathjax/sre/sre_browser.js +1633 -0
  434. package/dist/public/vendor/vditor/dist/js/mathjax/tex-svg-full.js +1 -0
  435. package/dist/public/vendor/vditor/dist/js/mermaid/mermaid.min.js +2607 -0
  436. package/dist/public/vendor/vditor/dist/js/plantuml/plantuml-encoder.min.js +1 -0
  437. package/dist/public/vendor/vditor/dist/js/smiles-drawer/smiles-drawer.min.js +71 -0
  438. package/dist/public/vendor/vditor/dist/method.d.ts +51 -0
  439. package/dist/public/vendor/vditor/dist/method.js +2673 -0
  440. package/dist/public/vendor/vditor/dist/method.min.js +1 -0
  441. package/dist/public/vendor/vditor/dist/ts/constants.d.ts +45 -0
  442. package/dist/public/vendor/vditor/dist/ts/devtools/index.d.ts +7 -0
  443. package/dist/public/vendor/vditor/dist/ts/export/index.d.ts +4 -0
  444. package/dist/public/vendor/vditor/dist/ts/hint/index.d.ts +14 -0
  445. package/dist/public/vendor/vditor/dist/ts/ir/expandMarker.d.ts +1 -0
  446. package/dist/public/vendor/vditor/dist/ts/ir/highlightToolbarIR.d.ts +1 -0
  447. package/dist/public/vendor/vditor/dist/ts/ir/index.d.ts +13 -0
  448. package/dist/public/vendor/vditor/dist/ts/ir/input.d.ts +1 -0
  449. package/dist/public/vendor/vditor/dist/ts/ir/process.d.ts +8 -0
  450. package/dist/public/vendor/vditor/dist/ts/ir/processKeydown.d.ts +1 -0
  451. package/dist/public/vendor/vditor/dist/ts/markdown/SMILESRender.d.ts +1 -0
  452. package/dist/public/vendor/vditor/dist/ts/markdown/abcRender.d.ts +1 -0
  453. package/dist/public/vendor/vditor/dist/ts/markdown/adapterRender.d.ts +41 -0
  454. package/dist/public/vendor/vditor/dist/ts/markdown/anchorRender.d.ts +1 -0
  455. package/dist/public/vendor/vditor/dist/ts/markdown/chartRender.d.ts +1 -0
  456. package/dist/public/vendor/vditor/dist/ts/markdown/codeRender.d.ts +1 -0
  457. package/dist/public/vendor/vditor/dist/ts/markdown/flowchartRender.d.ts +1 -0
  458. package/dist/public/vendor/vditor/dist/ts/markdown/getHTML.d.ts +1 -0
  459. package/dist/public/vendor/vditor/dist/ts/markdown/getMarkdown.d.ts +1 -0
  460. package/dist/public/vendor/vditor/dist/ts/markdown/graphvizRender.d.ts +1 -0
  461. package/dist/public/vendor/vditor/dist/ts/markdown/highlightRender.d.ts +1 -0
  462. package/dist/public/vendor/vditor/dist/ts/markdown/lazyLoadImageRender.d.ts +6 -0
  463. package/dist/public/vendor/vditor/dist/ts/markdown/markmapRender.d.ts +1 -0
  464. package/dist/public/vendor/vditor/dist/ts/markdown/mathRender.d.ts +9 -0
  465. package/dist/public/vendor/vditor/dist/ts/markdown/mediaRender.d.ts +1 -0
  466. package/dist/public/vendor/vditor/dist/ts/markdown/mermaidRender.d.ts +1 -0
  467. package/dist/public/vendor/vditor/dist/ts/markdown/mindmapRender.d.ts +1 -0
  468. package/dist/public/vendor/vditor/dist/ts/markdown/outlineRender.d.ts +1 -0
  469. package/dist/public/vendor/vditor/dist/ts/markdown/plantumlRender.d.ts +1 -0
  470. package/dist/public/vendor/vditor/dist/ts/markdown/previewRender.d.ts +2 -0
  471. package/dist/public/vendor/vditor/dist/ts/markdown/setLute.d.ts +1 -0
  472. package/dist/public/vendor/vditor/dist/ts/markdown/speechRender.d.ts +6 -0
  473. package/dist/public/vendor/vditor/dist/ts/outline/index.d.ts +7 -0
  474. package/dist/public/vendor/vditor/dist/ts/preview/image.d.ts +1 -0
  475. package/dist/public/vendor/vditor/dist/ts/preview/index.d.ts +10 -0
  476. package/dist/public/vendor/vditor/dist/ts/resize/index.d.ts +6 -0
  477. package/dist/public/vendor/vditor/dist/ts/sv/combineFootnote.d.ts +6 -0
  478. package/dist/public/vendor/vditor/dist/ts/sv/index.d.ts +13 -0
  479. package/dist/public/vendor/vditor/dist/ts/sv/inputEvent.d.ts +1 -0
  480. package/dist/public/vendor/vditor/dist/ts/sv/process.d.ts +11 -0
  481. package/dist/public/vendor/vditor/dist/ts/sv/processKeydown.d.ts +1 -0
  482. package/dist/public/vendor/vditor/dist/ts/tip/index.d.ts +6 -0
  483. package/dist/public/vendor/vditor/dist/ts/toolbar/Both.d.ts +5 -0
  484. package/dist/public/vendor/vditor/dist/ts/toolbar/Br.d.ts +4 -0
  485. package/dist/public/vendor/vditor/dist/ts/toolbar/CodeTheme.d.ts +6 -0
  486. package/dist/public/vendor/vditor/dist/ts/toolbar/ContentTheme.d.ts +6 -0
  487. package/dist/public/vendor/vditor/dist/ts/toolbar/Counter.d.ts +6 -0
  488. package/dist/public/vendor/vditor/dist/ts/toolbar/Custom.d.ts +5 -0
  489. package/dist/public/vendor/vditor/dist/ts/toolbar/Devtools.d.ts +5 -0
  490. package/dist/public/vendor/vditor/dist/ts/toolbar/Divider.d.ts +4 -0
  491. package/dist/public/vendor/vditor/dist/ts/toolbar/EditMode.d.ts +8 -0
  492. package/dist/public/vendor/vditor/dist/ts/toolbar/Emoji.d.ts +7 -0
  493. package/dist/public/vendor/vditor/dist/ts/toolbar/Export.d.ts +6 -0
  494. package/dist/public/vendor/vditor/dist/ts/toolbar/Fullscreen.d.ts +6 -0
  495. package/dist/public/vendor/vditor/dist/ts/toolbar/Headings.d.ts +7 -0
  496. package/dist/public/vendor/vditor/dist/ts/toolbar/Help.d.ts +5 -0
  497. package/dist/public/vendor/vditor/dist/ts/toolbar/Indent.d.ts +5 -0
  498. package/dist/public/vendor/vditor/dist/ts/toolbar/Info.d.ts +5 -0
  499. package/dist/public/vendor/vditor/dist/ts/toolbar/InsertAfter.d.ts +5 -0
  500. package/dist/public/vendor/vditor/dist/ts/toolbar/InsertBefore.d.ts +5 -0
  501. package/dist/public/vendor/vditor/dist/ts/toolbar/MenuItem.d.ts +5 -0
  502. package/dist/public/vendor/vditor/dist/ts/toolbar/Outdent.d.ts +5 -0
  503. package/dist/public/vendor/vditor/dist/ts/toolbar/Outline.d.ts +5 -0
  504. package/dist/public/vendor/vditor/dist/ts/toolbar/Preview.d.ts +6 -0
  505. package/dist/public/vendor/vditor/dist/ts/toolbar/Record.d.ts +6 -0
  506. package/dist/public/vendor/vditor/dist/ts/toolbar/Redo.d.ts +5 -0
  507. package/dist/public/vendor/vditor/dist/ts/toolbar/Undo.d.ts +5 -0
  508. package/dist/public/vendor/vditor/dist/ts/toolbar/Upload.d.ts +6 -0
  509. package/dist/public/vendor/vditor/dist/ts/toolbar/index.d.ts +10 -0
  510. package/dist/public/vendor/vditor/dist/ts/toolbar/setToolbar.d.ts +20 -0
  511. package/dist/public/vendor/vditor/dist/ts/ui/initUI.d.ts +4 -0
  512. package/dist/public/vendor/vditor/dist/ts/ui/setCodeTheme.d.ts +1 -0
  513. package/dist/public/vendor/vditor/dist/ts/ui/setContentTheme.d.ts +1 -0
  514. package/dist/public/vendor/vditor/dist/ts/ui/setPreviewMode.d.ts +1 -0
  515. package/dist/public/vendor/vditor/dist/ts/ui/setTheme.d.ts +1 -0
  516. package/dist/public/vendor/vditor/dist/ts/undo/index.d.ts +19 -0
  517. package/dist/public/vendor/vditor/dist/ts/upload/getElement.d.ts +1 -0
  518. package/dist/public/vendor/vditor/dist/ts/upload/index.d.ts +8 -0
  519. package/dist/public/vendor/vditor/dist/ts/upload/setHeaders.d.ts +1 -0
  520. package/dist/public/vendor/vditor/dist/ts/util/Options.d.ts +8 -0
  521. package/dist/public/vendor/vditor/dist/ts/util/RecordMedia.d.ts +18 -0
  522. package/dist/public/vendor/vditor/dist/ts/util/addScript.d.ts +2 -0
  523. package/dist/public/vendor/vditor/dist/ts/util/addStyle.d.ts +1 -0
  524. package/dist/public/vendor/vditor/dist/ts/util/code160to32.d.ts +1 -0
  525. package/dist/public/vendor/vditor/dist/ts/util/compatibility.d.ts +7 -0
  526. package/dist/public/vendor/vditor/dist/ts/util/editorCommonEvent.d.ts +9 -0
  527. package/dist/public/vendor/vditor/dist/ts/util/fixBrowserBehavior.d.ts +39 -0
  528. package/dist/public/vendor/vditor/dist/ts/util/function.d.ts +3 -0
  529. package/dist/public/vendor/vditor/dist/ts/util/getSelectText.d.ts +1 -0
  530. package/dist/public/vendor/vditor/dist/ts/util/hasClosest.d.ts +9 -0
  531. package/dist/public/vendor/vditor/dist/ts/util/hasClosestByHeadings.d.ts +2 -0
  532. package/dist/public/vendor/vditor/dist/ts/util/highlightToolbar.d.ts +1 -0
  533. package/dist/public/vendor/vditor/dist/ts/util/hotKey.d.ts +1 -0
  534. package/dist/public/vendor/vditor/dist/ts/util/log.d.ts +1 -0
  535. package/dist/public/vendor/vditor/dist/ts/util/merge.d.ts +1 -0
  536. package/dist/public/vendor/vditor/dist/ts/util/processCode.d.ts +2 -0
  537. package/dist/public/vendor/vditor/dist/ts/util/selection.d.ts +14 -0
  538. package/dist/public/vendor/vditor/dist/ts/util/toc.d.ts +5 -0
  539. package/dist/public/vendor/vditor/dist/ts/wysiwyg/afterRenderEvent.d.ts +5 -0
  540. package/dist/public/vendor/vditor/dist/ts/wysiwyg/highlightToolbarWYSIWYG.d.ts +4 -0
  541. package/dist/public/vendor/vditor/dist/ts/wysiwyg/index.d.ts +22 -0
  542. package/dist/public/vendor/vditor/dist/ts/wysiwyg/inlineTag.d.ts +10 -0
  543. package/dist/public/vendor/vditor/dist/ts/wysiwyg/input.d.ts +1 -0
  544. package/dist/public/vendor/vditor/dist/ts/wysiwyg/processKeydown.d.ts +2 -0
  545. package/dist/public/vendor/vditor/dist/ts/wysiwyg/renderDomByMd.d.ts +5 -0
  546. package/dist/public/vendor/vditor/dist/ts/wysiwyg/setHeading.d.ts +2 -0
  547. package/dist/public/vendor/vditor/dist/ts/wysiwyg/showCode.d.ts +1 -0
  548. package/dist/public/vendor/vditor/dist/ts/wysiwyg/toolbarEvent.d.ts +1 -0
  549. package/dist/public/vendor/vditor/dist/types/index.d.ts +921 -0
  550. package/dist/public/work-permissions.d.ts +5 -2
  551. package/dist/public/work-permissions.js +40 -13
  552. package/dist/security.js +11 -0
  553. package/dist/security.js.map +1 -1
  554. package/dist/server-runtime.js +5 -2
  555. package/dist/server-runtime.js.map +1 -1
  556. package/dist/store.js +192 -34
  557. package/dist/store.js.map +1 -1
  558. package/dist/user-auth.js +36 -7
  559. package/dist/user-auth.js.map +1 -1
  560. package/dist/version.js +1 -1
  561. package/dist/version.js.map +1 -1
  562. package/dist/work-permissions.js +29 -6
  563. package/dist/work-permissions.js.map +1 -1
  564. package/package.json +2 -1
package/README.en.md CHANGED
@@ -11,7 +11,7 @@
11
11
  </p>
12
12
 
13
13
  <p align="center">
14
- <a href="README.md">中文</a> | <a href="README.en.md">English</a>
14
+ <a href="README.md">中文</a> | English
15
15
  </p>
16
16
 
17
17
  <p align="center">
@@ -223,6 +223,8 @@ Read the [contribution guide](docs/CONTRIBUTING.md) before submitting code or do
223
223
 
224
224
  ## 🌟 Special Thanks
225
225
 
226
+ Thanks to the open-source [Vditor](https://github.com/Vanessa219/vditor) project for providing the Markdown editor, instant rendering, and split preview capabilities used by Scriverse.
227
+
226
228
  <p align="center">
227
229
  <a href="https://linux.do">
228
230
  <img src="showcase/public/linuxdo.png" alt="LINUX DO" width="420" />
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  </p>
12
12
 
13
13
  <p align="center">
14
- <a href="README.md">中文</a> | <a href="README.en.md">English</a>
14
+ 中文 | <a href="README.en.md">English</a>
15
15
  </p>
16
16
 
17
17
  <p align="center">
@@ -138,6 +138,8 @@ npm start
138
138
 
139
139
  ## AI 供应商配置
140
140
 
141
+ 配置前请先阅读 [AI 供应商兼容性与配置指南](docs/AI-PROVIDER-COMPATIBILITY.md),其中列出了已验证的服务商、基础地址、模型标识符和已知差异。
142
+
141
143
  1. 启动项目后,点击顶部“AI 管理”进入平台级配置。
142
144
  2. 新建兼容 OpenAI Chat Completions 的供应商,填写基础地址、API 密钥、并发数、RPM 与最大输出 Token。
143
145
  3. 为模型填写其支持的上下文总量(Token),再添加模型。
@@ -229,6 +231,8 @@ curl http://127.0.0.1:13210/api/health
229
231
 
230
232
  ## 🌟 Special Thanks
231
233
 
234
+ 感谢开源项目 [Vditor](https://github.com/Vanessa219/vditor),为叙界提供 Markdown 编辑器、即时渲染和分屏预览能力。
235
+
232
236
  <p align="center">
233
237
  <a href="https://linux.do">
234
238
  <img src="showcase/public/linuxdo.png" alt="LINUX DO" width="420" />
package/dist/ai.js CHANGED
@@ -19,6 +19,19 @@ export function aiErrorForLog(error) {
19
19
  const allowedParameters = new Set(["temperature", "top_p", "max_tokens", "presence_penalty", "frequency_penalty", "seed"]);
20
20
  const DEFAULT_MAX_TOKENS = 32_000;
21
21
  const DEFAULT_CONTEXT_WINDOW = 128_000;
22
+ function isGeminiProviderOrModel(provider, model) {
23
+ const endpoint = stringValue(provider, "base_url").toLowerCase();
24
+ const modelId = stringValue(model, "model_id").toLowerCase();
25
+ return endpoint.includes("gemini") || endpoint.includes("generativelanguage.googleapis.com") || modelId.includes("gemini");
26
+ }
27
+ function isKimiModelId(modelId) {
28
+ return modelId.toLowerCase().includes("kimi");
29
+ }
30
+ function thinkingParameters(provider, model) {
31
+ if (isGeminiProviderOrModel(provider, model))
32
+ return {};
33
+ return { thinking: { type: boolValue(model, "thinking_enabled") ? "enabled" : "disabled" } };
34
+ }
22
35
  const AGENT_TOOL_IDS = ["story_index", "read_chapters", "grep", "query_story_knowledge", "read_character_sections"];
23
36
  const MAX_AGENT_TOOL_ROUNDS = 6;
24
37
  const MAX_AGENT_TOOL_CALLS = 12;
@@ -189,11 +202,15 @@ export function resolveOutputTokens(usage, content) {
189
202
  }
190
203
  return estimateAiTokens(content);
191
204
  }
192
- function normalizeModelPreset(input) {
205
+ function normalizeModelPreset(input, modelId = "") {
193
206
  const maxTokens = typeof input.max_tokens === "number" && Number.isFinite(input.max_tokens)
194
207
  ? Math.round(clamp(input.max_tokens, 1, 32_768))
195
208
  : DEFAULT_MAX_TOKENS;
196
- return { ...input, max_tokens: maxTokens };
209
+ const temperature = input.temperature;
210
+ const defaultTemperature = isKimiModelId(modelId) && !(typeof temperature === "number" && Number.isFinite(temperature))
211
+ ? { temperature: 1 }
212
+ : {};
213
+ return { ...input, ...defaultTemperature, max_tokens: maxTokens };
197
214
  }
198
215
  function stringValue(row, key) {
199
216
  return String(row[key] ?? "");
@@ -278,6 +295,21 @@ const unsafeGlobalAliases = new Set([
278
295
  "怪兽之王", "怪兽女王", "君王", "女王", "吾王", "博士", "陈博士", "玲博士", "老师", "舰长", "上尉", "司令", "族长",
279
296
  "父亲", "母亲", "爸爸", "妈妈", "哥哥", "姐姐", "大哥", "妹妹", "先生", "小姐", "陛下", "尔森"
280
297
  ]);
298
+ const characterTitleSuffixPattern = /^(?<base>.+?)(?:博士|教授|老师|舰长|上尉|司令|族长|将军|队长|船长|院士|主任)$/u;
299
+ function normalizeCharacterReference(value) {
300
+ return value.normalize("NFKC").trim().replace(/\s+/gu, " ").toLocaleLowerCase("zh-CN");
301
+ }
302
+ export function stripCharacterTitleSuffix(value) {
303
+ const normalized = normalizeCharacterReference(value);
304
+ const base = normalized.match(characterTitleSuffixPattern)?.groups?.base?.trim();
305
+ return base && base !== normalized ? base : null;
306
+ }
307
+ export function areCharacterTitleVariants(left, right) {
308
+ const normalizedLeft = normalizeCharacterReference(left);
309
+ const normalizedRight = normalizeCharacterReference(right);
310
+ return stripCharacterTitleSuffix(normalizedLeft) === normalizedRight
311
+ || stripCharacterTitleSuffix(normalizedRight) === normalizedLeft;
312
+ }
281
313
  export function isSafeGlobalAlias(value) {
282
314
  const normalized = value.normalize("NFKC").trim().replace(/\s+/gu, " ").toLocaleLowerCase("zh-CN");
283
315
  if (!normalized || /^[a-z0-9]$/iu.test(normalized))
@@ -898,7 +930,7 @@ export class AiManager {
898
930
  const modelId = id("model");
899
931
  const timestamp = now();
900
932
  this.store.db.run(`INSERT INTO models (id, provider_id, display_name, model_id, purposes_json, context_note, context_window, output_note,
901
- preset_json, thinking_enabled, enabled, note, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, modelId, providerId, input.displayName, input.modelId, JSON.stringify(input.purposes ?? []), input.contextNote ?? "", input.contextWindow ?? DEFAULT_CONTEXT_WINDOW, input.outputNote ?? "", JSON.stringify(normalizeModelPreset(input.preset ?? {})), (input.thinkingEnabled ?? true) ? 1 : 0, (input.enabled ?? true) ? 1 : 0, input.note ?? "", timestamp, timestamp);
933
+ preset_json, thinking_enabled, enabled, note, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, modelId, providerId, input.displayName, input.modelId, JSON.stringify(input.purposes ?? []), input.contextNote ?? "", input.contextWindow ?? DEFAULT_CONTEXT_WINDOW, input.outputNote ?? "", JSON.stringify(normalizeModelPreset(input.preset ?? {}, input.modelId)), (input.thinkingEnabled ?? true) ? 1 : 0, (input.enabled ?? true) ? 1 : 0, input.note ?? "", timestamp, timestamp);
902
934
  this.store.audit(PLATFORM_AI_WORK_ID, "model.created", "model", modelId, { providerId, modelId: input.modelId });
903
935
  return this.getModel(modelId);
904
936
  }
@@ -937,9 +969,10 @@ export class AiManager {
937
969
  }
938
970
  updateModel(modelId, input) {
939
971
  const row = this.getModelRow(modelId);
940
- const preset = normalizeModelPreset(input.preset ?? safeJsonObject(stringValue(row, "preset_json")));
972
+ const nextModelId = input.modelId ?? stringValue(row, "model_id");
973
+ const preset = normalizeModelPreset(input.preset ?? safeJsonObject(stringValue(row, "preset_json")), nextModelId);
941
974
  this.store.db.run(`UPDATE models SET display_name = ?, model_id = ?, purposes_json = ?, context_note = ?, context_window = ?, output_note = ?,
942
- preset_json = ?, thinking_enabled = ?, enabled = ?, note = ?, updated_at = ? WHERE id = ?`, input.displayName ?? stringValue(row, "display_name"), input.modelId ?? stringValue(row, "model_id"), JSON.stringify(input.purposes ?? json(stringValue(row, "purposes_json"), [])), input.contextNote ?? stringValue(row, "context_note"), input.contextWindow ?? (numberValue(row, "context_window") || DEFAULT_CONTEXT_WINDOW), input.outputNote ?? stringValue(row, "output_note"), JSON.stringify(preset), (input.thinkingEnabled ?? boolValue(row, "thinking_enabled")) ? 1 : 0, (input.enabled ?? boolValue(row, "enabled")) ? 1 : 0, input.note ?? stringValue(row, "note"), now(), modelId);
975
+ preset_json = ?, thinking_enabled = ?, enabled = ?, note = ?, updated_at = ? WHERE id = ?`, input.displayName ?? stringValue(row, "display_name"), nextModelId, JSON.stringify(input.purposes ?? json(stringValue(row, "purposes_json"), [])), input.contextNote ?? stringValue(row, "context_note"), input.contextWindow ?? (numberValue(row, "context_window") || DEFAULT_CONTEXT_WINDOW), input.outputNote ?? stringValue(row, "output_note"), JSON.stringify(preset), (input.thinkingEnabled ?? boolValue(row, "thinking_enabled")) ? 1 : 0, (input.enabled ?? boolValue(row, "enabled")) ? 1 : 0, input.note ?? stringValue(row, "note"), now(), modelId);
943
976
  return this.getModel(modelId);
944
977
  }
945
978
  deleteModel(modelId) {
@@ -1675,8 +1708,8 @@ export class AiManager {
1675
1708
  const tools = input.disableTools ? [] : this.enabledAgentTools(input.workId, input.taskType, input.agentToolIds);
1676
1709
  const completionMessages = [...messages];
1677
1710
  const parameters = this.constrainParametersForContext(model, messages, {
1678
- ...this.sanitizeParameters({ ...preset, ...(input.parameters ?? {}), max_tokens: numberValue(provider, "max_tokens") || DEFAULT_MAX_TOKENS }),
1679
- thinking: { type: boolValue(model, "thinking_enabled") ? "enabled" : "disabled" }
1711
+ ...this.sanitizeParameters({ ...preset, ...(input.parameters ?? {}), max_tokens: numberValue(provider, "max_tokens") || DEFAULT_MAX_TOKENS }, stringValue(model, "model_id")),
1712
+ ...thinkingParameters(provider, model)
1680
1713
  });
1681
1714
  const callId = id("call");
1682
1715
  const timestamp = now();
@@ -1878,8 +1911,8 @@ export class AiManager {
1878
1911
  const preset = safeJsonObject(stringValue(model, "preset_json"));
1879
1912
  const messages = this.buildMessages(input, context);
1880
1913
  const parameters = this.constrainParametersForContext(model, messages, {
1881
- ...this.sanitizeParameters({ ...preset, ...(input.parameters ?? {}), max_tokens: numberValue(provider, "max_tokens") || DEFAULT_MAX_TOKENS }),
1882
- thinking: { type: boolValue(model, "thinking_enabled") ? "enabled" : "disabled" }
1914
+ ...this.sanitizeParameters({ ...preset, ...(input.parameters ?? {}), max_tokens: numberValue(provider, "max_tokens") || DEFAULT_MAX_TOKENS }, stringValue(model, "model_id")),
1915
+ ...thinkingParameters(provider, model)
1883
1916
  });
1884
1917
  const callId = id("call");
1885
1918
  this.store.db.run(`INSERT INTO ai_calls (id, work_id, task_type, provider_id, model_id, context_scope_json, parameters_json,
@@ -2532,6 +2565,51 @@ export class AiManager {
2532
2565
  toolCallCount: generated.toolCalls.length
2533
2566
  };
2534
2567
  }
2568
+ async verifyCharacterTitlePairs(workId, pairs, modelId, taskId) {
2569
+ const generated = await this.generateTaggedJson({
2570
+ workId,
2571
+ taskType: "book-analysis",
2572
+ signal: this.taskSignal(taskId),
2573
+ scope: { type: "none" },
2574
+ ...(modelId ? { modelId } : {}),
2575
+ parameters: { temperature: 0.1 },
2576
+ instruction: [
2577
+ "对下面列出的角色候选对进行第二次身份确认。只有确认是同一人或确认是不同人,服务端才会允许这组候选继续写入数据库。",
2578
+ "请结合候选的主名、别名、身份、种族、首次章节和原文证据判断。不能仅因为名字相似就判定 same;职称后缀相同也不是充分证据。",
2579
+ "如果信息不足、身份冲突未解决或无法确认,必须返回 uncertain。",
2580
+ "输出 JSON 数组,每项字段:pairKey、verdict(same/separate/uncertain)、confidence(0到1)、reason。必须逐项覆盖输入中的所有 pairKey,不得创造 pairKey。",
2581
+ `候选对:${JSON.stringify(pairs.map((pair) => ({
2582
+ pairKey: pair.key,
2583
+ left: pair.left,
2584
+ right: pair.right
2585
+ })))}`
2586
+ ].join("\n"),
2587
+ extraSystemPrompt: "你是角色身份二次确认器。你的输出只用于服务端写入门禁;证据不足时宁可 uncertain,不得为了减少角色数量而强行合并。"
2588
+ });
2589
+ const extracted = extractJson(generated.content);
2590
+ if (!Array.isArray(extracted))
2591
+ throw new AppError(502, "AI_INVALID_JSON", "角色身份二次确认结果必须是数组");
2592
+ const allowedPairKeys = new Set(pairs.map((pair) => pair.key));
2593
+ const decisions = new Map();
2594
+ for (const item of extracted) {
2595
+ if (!item || typeof item !== "object" || Array.isArray(item))
2596
+ continue;
2597
+ const candidate = item;
2598
+ const pairKey = typeof candidate.pairKey === "string" ? candidate.pairKey : "";
2599
+ if (!allowedPairKeys.has(pairKey) || decisions.has(pairKey))
2600
+ continue;
2601
+ const verdict = candidate.verdict === "same" || candidate.verdict === "separate" || candidate.verdict === "uncertain"
2602
+ ? candidate.verdict
2603
+ : "uncertain";
2604
+ decisions.set(pairKey, {
2605
+ pairKey,
2606
+ verdict,
2607
+ confidence: clamp(typeof candidate.confidence === "number" ? candidate.confidence : 0, 0, 1),
2608
+ reason: typeof candidate.reason === "string" && candidate.reason.trim() ? candidate.reason.trim() : "AI 未提供充分确认理由"
2609
+ });
2610
+ }
2611
+ return { decisions, callId: generated.callId };
2612
+ }
2535
2613
  async runCharacterExtraction(workId, scope, modelId, taskId) {
2536
2614
  const chapters = this.getScopeChapters(workId, scope);
2537
2615
  if (chapters.length === 0)
@@ -2552,7 +2630,7 @@ export class AiManager {
2552
2630
  instruction: [
2553
2631
  "抽取本批原文中有名字且对跨章节剧情有意义的人物或具有人格的生物。输出 JSON 数组。",
2554
2632
  "每项字段:canonicalName、aliases(仅无歧义昵称或拼写变体)、species(仅原文明确说明时填写)、identity、firstEvidence(chapterId、chapterTitle、quote)。",
2555
- "规则:合并明显拼写变体;不能把怪兽之王、怪兽女王、君王、女王、吾王、博士、舰长、上尉、司令、族长、老师、父亲、母亲、哥哥、姐姐等称号作为全局别名;不能把单字母简称作为别名;梦境或作品内虚构角色需在 identity 标明;不得创造人物;quote 必须是原文连续引文且不超过 80 字。",
2633
+ "规则:合并明显拼写变体;不能把怪兽之王、怪兽女王、君王、女王、吾王、博士、舰长、上尉、司令、族长、老师、父亲、母亲、哥哥、姐姐等单独称号作为全局别名;带具体人名的‘X博士’、‘X教授’等形式不能仅因职称后缀拆成两个角色,保留无职称姓名作为 canonicalName,并将带职称形式作为待确认的候选称呼;不能把单字母简称作为别名;梦境或作品内虚构角色需在 identity 标明;不得创造人物;quote 必须是原文连续引文且不超过 80 字。",
2556
2634
  "没有合格人物时输出 [],不得使用 Markdown 代码块。"
2557
2635
  ].join("\n"),
2558
2636
  extraSystemPrompt: [
@@ -2623,6 +2701,11 @@ export class AiManager {
2623
2701
  species: typeof candidate.species === "string" ? candidate.species.trim() : "",
2624
2702
  identity: typeof candidate.identity === "string" ? candidate.identity : "",
2625
2703
  firstChapterId: chapterId,
2704
+ firstEvidence: {
2705
+ chapterId,
2706
+ chapterTitle: typeof evidence?.chapterTitle === "string" ? evidence.chapterTitle : "",
2707
+ quote
2708
+ },
2626
2709
  references: new Set()
2627
2710
  };
2628
2711
  if (!matches.length)
@@ -2650,25 +2733,206 @@ export class AiManager {
2650
2733
  groups.splice(duplicateIndex, 1);
2651
2734
  }
2652
2735
  }
2653
- const characterIds = [];
2736
+ const existingCharacters = this.store.listCharacters(workId);
2737
+ const existingIdByGroupIndex = new Map();
2738
+ const candidateSubjects = groups.map((group, index) => ({
2739
+ key: `candidate:${index}`,
2740
+ kind: "candidate",
2741
+ name: group.name,
2742
+ aliases: [...group.aliases],
2743
+ species: group.species,
2744
+ identity: group.identity,
2745
+ firstChapterId: group.firstChapterId,
2746
+ evidence: group.firstEvidence
2747
+ }));
2748
+ for (const [index, group] of groups.entries()) {
2749
+ const existingId = [group.name, ...group.aliases]
2750
+ .map((value) => this.store.resolveCharacterReference(workId, value))
2751
+ .find((value) => Boolean(value));
2752
+ if (existingId)
2753
+ existingIdByGroupIndex.set(index, existingId);
2754
+ }
2755
+ const existingSubjects = existingCharacters.map((character) => ({
2756
+ key: `existing:${String(character.id)}`,
2757
+ kind: "existing",
2758
+ characterId: String(character.id),
2759
+ name: String(character.name),
2760
+ aliases: character.aliases.slice(),
2761
+ species: String(character.species ?? ""),
2762
+ identity: String(character.attributes.identity ?? ""),
2763
+ firstChapterId: character.firstChapterId ?? null,
2764
+ evidence: null
2765
+ }));
2766
+ const subjectNames = (subject) => [subject.name, ...subject.aliases];
2767
+ const hasTitleVariant = (left, right) => subjectNames(left).some((leftName) => subjectNames(right).some((rightName) => areCharacterTitleVariants(leftName, rightName)));
2768
+ const verificationPairs = new Map();
2769
+ const addVerificationPair = (left, right) => {
2770
+ if (left.key === right.key || !hasTitleVariant(left, right))
2771
+ return;
2772
+ if (left.kind === "existing" && right.kind === "existing")
2773
+ return;
2774
+ const ordered = [left, right].sort((first, second) => first.key.localeCompare(second.key));
2775
+ const pairKey = `${ordered[0]?.key}|${ordered[1]?.key}`;
2776
+ if (!verificationPairs.has(pairKey))
2777
+ verificationPairs.set(pairKey, { key: pairKey, left: ordered[0], right: ordered[1] });
2778
+ };
2779
+ for (let leftIndex = 0; leftIndex < candidateSubjects.length; leftIndex += 1) {
2780
+ for (let rightIndex = leftIndex + 1; rightIndex < candidateSubjects.length; rightIndex += 1) {
2781
+ if (existingIdByGroupIndex.get(leftIndex) && existingIdByGroupIndex.get(leftIndex) === existingIdByGroupIndex.get(rightIndex))
2782
+ continue;
2783
+ addVerificationPair(candidateSubjects[leftIndex], candidateSubjects[rightIndex]);
2784
+ }
2785
+ const existingId = existingIdByGroupIndex.get(leftIndex);
2786
+ for (const existing of existingSubjects) {
2787
+ if (existing.characterId === existingId)
2788
+ continue;
2789
+ addVerificationPair(candidateSubjects[leftIndex], existing);
2790
+ }
2791
+ }
2654
2792
  const skipped = [];
2655
- for (const group of groups) {
2793
+ let verificationCallId = null;
2794
+ let confirmedSameCount = 0;
2795
+ let confirmedSeparateCount = 0;
2796
+ let unresolvedCount = 0;
2797
+ const blockedGroups = new Set();
2798
+ const blockedReasons = new Map();
2799
+ const forcedExistingIds = new Map();
2800
+ const parent = groups.map((_, index) => index);
2801
+ const findRoot = (index) => {
2802
+ let root = index;
2803
+ while (parent[root] !== root)
2804
+ root = parent[root];
2805
+ while (parent[index] !== index) {
2806
+ const next = parent[index];
2807
+ parent[index] = root;
2808
+ index = next;
2809
+ }
2810
+ return root;
2811
+ };
2812
+ const unionGroups = (left, right) => {
2813
+ const leftRoot = findRoot(left);
2814
+ const rightRoot = findRoot(right);
2815
+ if (leftRoot !== rightRoot)
2816
+ parent[rightRoot] = leftRoot;
2817
+ };
2818
+ const candidateIndexByKey = new Map(candidateSubjects.map((subject, index) => [subject.key, index]));
2819
+ const verificationResults = verificationPairs.size > 0
2820
+ ? await this.verifyCharacterTitlePairs(workId, [...verificationPairs.values()], modelId, taskId)
2821
+ : { decisions: new Map(), callId: null };
2822
+ verificationCallId = verificationResults.callId;
2823
+ for (const pair of verificationPairs.values()) {
2824
+ const decision = verificationResults.decisions.get(pair.key);
2825
+ const leftIndex = candidateIndexByKey.get(pair.left.key);
2826
+ const rightIndex = candidateIndexByKey.get(pair.right.key);
2827
+ const candidateIndexes = [leftIndex, rightIndex].filter((value) => value !== undefined);
2828
+ const confirmed = decision && decision.confidence >= 0.8 && (decision.verdict === "same" || decision.verdict === "separate");
2829
+ if (!confirmed) {
2830
+ unresolvedCount += 1;
2831
+ for (const candidateIndex of candidateIndexes) {
2832
+ blockedGroups.add(candidateIndex);
2833
+ blockedReasons.set(candidateIndex, `角色身份二次确认未通过:${decision?.reason ?? "AI 未返回确认结果"}`);
2834
+ }
2835
+ continue;
2836
+ }
2837
+ if (decision.verdict === "same") {
2838
+ confirmedSameCount += 1;
2839
+ if (leftIndex !== undefined && rightIndex !== undefined) {
2840
+ unionGroups(leftIndex, rightIndex);
2841
+ }
2842
+ else if (leftIndex !== undefined || rightIndex !== undefined) {
2843
+ const candidateIndex = leftIndex ?? rightIndex;
2844
+ const existingSubject = pair.left.kind === "existing" ? pair.left : pair.right;
2845
+ const existingId = String(existingSubject.characterId);
2846
+ const root = findRoot(candidateIndex);
2847
+ const previous = forcedExistingIds.get(root);
2848
+ if (previous && previous !== existingId) {
2849
+ blockedGroups.add(root);
2850
+ blockedReasons.set(root, "角色身份二次确认指向了多个已有角色");
2851
+ }
2852
+ else {
2853
+ forcedExistingIds.set(root, existingId);
2854
+ }
2855
+ }
2856
+ }
2857
+ else {
2858
+ confirmedSeparateCount += 1;
2859
+ }
2860
+ }
2861
+ const mergedGroups = new Map();
2862
+ for (const [index, group] of groups.entries()) {
2863
+ const root = findRoot(index);
2864
+ const target = mergedGroups.get(root);
2865
+ if (!target) {
2866
+ mergedGroups.set(root, group);
2867
+ continue;
2868
+ }
2869
+ const titleFreeTarget = stripCharacterTitleSuffix(target.name);
2870
+ if (titleFreeTarget === this.normalizeReference(group.name))
2871
+ target.name = group.name;
2872
+ for (const alias of [group.name, ...group.aliases]) {
2873
+ if (this.normalizeReference(alias) !== this.normalizeReference(target.name) && this.isSafeGlobalAlias(alias))
2874
+ target.aliases.add(alias);
2875
+ }
2876
+ for (const reference of group.references)
2877
+ target.references.add(reference);
2878
+ if (!target.identity && group.identity)
2879
+ target.identity = group.identity;
2880
+ if (!target.species && group.species)
2881
+ target.species = group.species;
2882
+ if (!target.firstChapterId && group.firstChapterId)
2883
+ target.firstChapterId = group.firstChapterId;
2884
+ }
2885
+ const existingIdByRoot = new Map();
2886
+ for (const [index, existingId] of existingIdByGroupIndex) {
2887
+ const root = findRoot(index);
2888
+ const previous = existingIdByRoot.get(root);
2889
+ if (previous && previous !== existingId) {
2890
+ blockedGroups.add(root);
2891
+ blockedReasons.set(root, "同一候选组匹配到多个已有角色");
2892
+ }
2893
+ else {
2894
+ existingIdByRoot.set(root, existingId);
2895
+ }
2896
+ }
2897
+ for (const [index, existingId] of forcedExistingIds) {
2898
+ const root = findRoot(index);
2899
+ const previous = existingIdByRoot.get(root);
2900
+ if (previous && previous !== existingId) {
2901
+ blockedGroups.add(root);
2902
+ blockedReasons.set(root, "角色身份二次确认指向了多个已有角色");
2903
+ }
2904
+ else {
2905
+ existingIdByRoot.set(root, existingId);
2906
+ }
2907
+ }
2908
+ for (const index of [...blockedGroups]) {
2909
+ const root = findRoot(index);
2910
+ blockedGroups.add(root);
2911
+ if (!blockedReasons.has(root) && blockedReasons.has(index))
2912
+ blockedReasons.set(root, blockedReasons.get(index));
2913
+ }
2914
+ const characterIds = [];
2915
+ for (const [root, group] of mergedGroups) {
2916
+ if (blockedGroups.has(root)) {
2917
+ skipped.push({ name: group.name, reason: blockedReasons.get(root) ?? "角色身份二次确认未通过" });
2918
+ continue;
2919
+ }
2656
2920
  const aliases = [...group.aliases].filter((alias) => this.isSafeGlobalAlias(alias));
2657
2921
  const extractedRaceId = group.species ? this.store.resolveRaceReference(workId, group.species) : null;
2658
- const existingId = [group.name, ...aliases]
2922
+ const existingId = existingIdByRoot.get(root) ?? [group.name, ...aliases]
2659
2923
  .map((value) => this.store.resolveCharacterReference(workId, value))
2660
2924
  .find((value) => Boolean(value));
2661
2925
  try {
2662
2926
  if (existingId) {
2663
2927
  const existing = this.store.getCharacter(existingId);
2664
- const mergedAliases = [...new Set([...existing.aliases, ...aliases])]
2928
+ const mergedAliases = [...new Set([...existing.aliases, group.name, ...aliases])]
2665
2929
  .filter((alias) => this.isSafeGlobalAlias(alias) && this.normalizeReference(alias) !== this.normalizeReference(String(existing.name)));
2666
2930
  const updated = this.store.updateCharacter(existingId, {
2667
2931
  aliases: mergedAliases,
2668
2932
  raceId: existing.raceId ?? extractedRaceId,
2669
2933
  attributes: { ...existing.attributes, ...(group.identity ? { identity: group.identity } : {}) },
2670
2934
  firstChapterId: existing.firstChapterId ?? group.firstChapterId
2671
- });
2935
+ }, "ai", taskId ?? null, "全书角色抽取及身份二次确认");
2672
2936
  characterIds.push(String(updated.id));
2673
2937
  }
2674
2938
  else {
@@ -2688,14 +2952,21 @@ export class AiManager {
2688
2952
  }
2689
2953
  return {
2690
2954
  characterIds: [...new Set(characterIds)],
2691
- candidateCount: groups.length,
2955
+ candidateCount: mergedGroups.size,
2692
2956
  savedCount: new Set(characterIds).size,
2693
2957
  skipped,
2694
2958
  batchCount: chunks.length,
2695
2959
  coveredChapterCount: chapters.length,
2696
2960
  fallbackSegmentCount,
2697
2961
  policyOmittedSegmentCount,
2698
- callIds
2962
+ callIds,
2963
+ verification: {
2964
+ pairCount: verificationPairs.size,
2965
+ confirmedSameCount,
2966
+ confirmedSeparateCount,
2967
+ unresolvedCount,
2968
+ callId: verificationCallId
2969
+ }
2699
2970
  };
2700
2971
  }
2701
2972
  async runRelationshipAnalysis(workId, scope, modelId, taskId) {
@@ -3709,7 +3980,7 @@ export class AiManager {
3709
3980
  if (!boolValue(model, "enabled"))
3710
3981
  throw new AppError(409, "MODEL_DISABLED", "模型已停用,不能创建新任务");
3711
3982
  }
3712
- sanitizeParameters(input) {
3983
+ sanitizeParameters(input, modelId = "") {
3713
3984
  const output = {};
3714
3985
  for (const [key, value] of Object.entries(input)) {
3715
3986
  if (!allowedParameters.has(key))
@@ -3719,6 +3990,8 @@ export class AiManager {
3719
3990
  }
3720
3991
  if (typeof output.temperature === "number")
3721
3992
  output.temperature = clamp(output.temperature, 0, 2);
3993
+ if (isKimiModelId(modelId) && typeof output.temperature !== "number")
3994
+ output.temperature = 1;
3722
3995
  if (typeof output.top_p === "number")
3723
3996
  output.top_p = clamp(output.top_p, 0, 1);
3724
3997
  output.max_tokens = typeof output.max_tokens === "number"
@@ -3780,7 +4053,7 @@ export class AiManager {
3780
4053
  contextNote: stringValue(row, "context_note"),
3781
4054
  contextWindow: numberValue(row, "context_window") || DEFAULT_CONTEXT_WINDOW,
3782
4055
  outputNote: stringValue(row, "output_note"),
3783
- preset: normalizeModelPreset(safeJsonObject(stringValue(row, "preset_json"))),
4056
+ preset: normalizeModelPreset(safeJsonObject(stringValue(row, "preset_json")), stringValue(row, "model_id")),
3784
4057
  thinkingEnabled: boolValue(row, "thinking_enabled"),
3785
4058
  enabled: boolValue(row, "enabled"),
3786
4059
  note: stringValue(row, "note"),