@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.
- package/README.en.md +3 -1
- package/README.md +5 -1
- package/dist/ai.js +292 -19
- package/dist/ai.js.map +1 -1
- package/dist/app.js +46 -4
- package/dist/app.js.map +1 -1
- package/dist/database.js +64 -0
- package/dist/database.js.map +1 -1
- package/dist/public/app.js +1088 -274
- package/dist/public/character-markdown.js +12 -0
- package/dist/public/character-version.js +3 -1
- package/dist/public/index.html +76 -29
- package/dist/public/keyboard-shortcuts.d.ts +9 -0
- package/dist/public/keyboard-shortcuts.js +4 -0
- package/dist/public/model-config.d.ts +1 -0
- package/dist/public/model-config.js +12 -3
- package/dist/public/module-layout.d.ts +17 -0
- package/dist/public/module-layout.js +28 -0
- package/dist/public/page-route.js +1 -1
- package/dist/public/relationship-graph.js +62 -2
- package/dist/public/styles.css +330 -98
- package/dist/public/vendor/vditor/dist/css/content-theme/ant-design.css +210 -0
- package/dist/public/vendor/vditor/dist/css/content-theme/dark.css +123 -0
- package/dist/public/vendor/vditor/dist/css/content-theme/light.css +101 -0
- package/dist/public/vendor/vditor/dist/css/content-theme/wechat.css +94 -0
- package/dist/public/vendor/vditor/dist/images/emoji/b3log.png +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/chainbook.png +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/doge.png +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/hacpai.png +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/huaji.gif +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/latke.png +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/liandi.png +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/lute.png +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/octocat.png +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/pipe.png +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/siyuan.png +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/solo.png +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/sym.png +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/trollface.png +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/vditor.png +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/wide.png +0 -0
- package/dist/public/vendor/vditor/dist/images/emoji/wulian.png +0 -0
- package/dist/public/vendor/vditor/dist/images/img-loading.svg +1 -0
- package/dist/public/vendor/vditor/dist/images/logo.png +0 -0
- package/dist/public/vendor/vditor/dist/index.css +1823 -0
- package/dist/public/vendor/vditor/dist/index.d.ts +82 -0
- package/dist/public/vendor/vditor/dist/index.js +15995 -0
- package/dist/public/vendor/vditor/dist/index.min.js +1 -0
- package/dist/public/vendor/vditor/dist/js/abcjs/abcjs_basic.min.js +3 -0
- package/dist/public/vendor/vditor/dist/js/echarts/echarts.min.js +45 -0
- package/dist/public/vendor/vditor/dist/js/flowchart.js/flowchart.min.js +8 -0
- package/dist/public/vendor/vditor/dist/js/graphviz/full.render.js +90 -0
- package/dist/public/vendor/vditor/dist/js/graphviz/viz.js +333 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/LICENSE +29 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/highlight.min.js +3835 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/a11y-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/a11y-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/agate.min.css +20 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/an-old-hope.min.css +9 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/androidstudio.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/ant-design.min.css +84 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/arduino-light.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/arta.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/ascetic.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/atom-one-dark-reasonable.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/atom-one-dark.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/atom-one-light.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/3024.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/apathy.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/apprentice.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ashes.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-cave-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-cave.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-dune-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-dune.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-estuary-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-estuary.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-forest-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-forest.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-heath-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-heath.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-lakeside-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-lakeside.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-plateau-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-plateau.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-savanna-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-savanna.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-seaside-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-seaside.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-sulphurpool-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atelier-sulphurpool.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/atlas.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/bespin.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-bathory.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-burzum.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-dark-funeral.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-gorgoroth.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-immortal.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-khold.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-marduk.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-mayhem.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-nile.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal-venom.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/black-metal.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/brewer.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/bright.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/brogrammer.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/brush-trees-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/brush-trees.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/chalk.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/circus.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/classic-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/classic-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/codeschool.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/colors.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/cupcake.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/cupertino.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/danqing.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/darcula.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/dark-violet.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/darkmoss.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/darktooth.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/decaf.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/default-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/default-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/dirtysea.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/dracula.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/edge-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/edge-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/eighties.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/embers.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/equilibrium-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/equilibrium-gray-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/equilibrium-gray-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/equilibrium-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/espresso.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/eva-dim.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/eva.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/flat.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/framer.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/fruit-soda.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gigavolt.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/github.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/google-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/google-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/grayscale-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/grayscale-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/green-screen.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gruvbox-dark-hard.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gruvbox-dark-medium.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gruvbox-dark-pale.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gruvbox-dark-soft.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gruvbox-light-hard.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gruvbox-light-medium.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/gruvbox-light-soft.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/hardcore.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/harmonic16-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/harmonic16-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/heetch-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/heetch-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/helios.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/hopscotch.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/horizon-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/horizon-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/humanoid-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/humanoid-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ia-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ia-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/icy-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ir-black.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/isotope.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/kimber.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/london-tube.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/macintosh.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/marrakesh.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/materia.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/material-darker.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/material-lighter.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/material-palenight.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/material-vivid.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/material.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/mellow-purple.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/mexico-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/mocha.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/monokai.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/nebula.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/nord.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/nova.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ocean.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/oceanicnext.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/one-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/onedark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/outrun-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/papercolor-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/papercolor-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/paraiso.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/pasque.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/phd.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/pico.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/pop.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/porple.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/qualia.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/railscasts.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/rebecca.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ros-pine-dawn.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ros-pine-moon.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/ros-pine.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/sagelight.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/sandcastle.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/seti-ui.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/shapeshifter.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/silk-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/silk-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/snazzy.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/solar-flare-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/solar-flare.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/solarized-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/solarized-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/spacemacs.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/summercamp.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/summerfruit-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/summerfruit-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/synth-midnight-terminal-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/synth-midnight-terminal-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/tango.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/tender.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/tomorrow-night.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/tomorrow.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/twilight.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/unikitty-dark.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/unikitty-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/vulcan.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-10-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-10.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-95-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-95.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-high-contrast-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-high-contrast.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-nt-light.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/windows-nt.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/woodland.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/xcode-dusk.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/base16/zenburn.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/brown-paper.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/brown-papersq.png +0 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/codepen-embed.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/color-brewer.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/dark.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/default.min.css +9 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/devibeans.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/docco.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/far.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/felipec.min.css +7 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/foundation.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/github-dark-dimmed.min.css +9 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/github-dark.min.css +10 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/github.min.css +10 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/gml.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/googlecode.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/gradient-dark.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/gradient-light.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/grayscale.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/hybrid.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/idea.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/intellij-light.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/ir-black.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/isbl-editor-dark.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/isbl-editor-light.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/kimbie-dark.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/kimbie-light.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/lightfair.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/lioshi.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/magula.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/mono-blue.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/monokai-sublime.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/monokai.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/night-owl.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/nnfx-dark.min.css +10 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/nnfx-light.min.css +10 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/nord.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/obsidian.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/panda-syntax-dark.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/panda-syntax-light.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/paraiso-dark.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/paraiso-light.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/pojoaque.jpg +0 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/pojoaque.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/purebasic.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/qtcreator-dark.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/qtcreator-light.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/rainbow.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/routeros.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/school-book.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/shades-of-purple.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/srcery.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/stackoverflow-dark.min.css +13 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/stackoverflow-light.min.css +13 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/sunburst.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/tokyo-night-dark.min.css +8 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/tokyo-night-light.min.css +8 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/tomorrow-night-blue.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/tomorrow-night-bright.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/vs.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/vs2015.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/xcode.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/styles/xt256.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/highlight.js/third-languages.js +135 -0
- package/dist/public/vendor/vditor/dist/js/i18n/de_DE.js +86 -0
- package/dist/public/vendor/vditor/dist/js/i18n/en_US.js +86 -0
- package/dist/public/vendor/vditor/dist/js/i18n/es_ES.js +86 -0
- package/dist/public/vendor/vditor/dist/js/i18n/fr_FR.js +86 -0
- package/dist/public/vendor/vditor/dist/js/i18n/ja_JP.js +86 -0
- package/dist/public/vendor/vditor/dist/js/i18n/ko_KR.js +86 -0
- package/dist/public/vendor/vditor/dist/js/i18n/pt_BR.js +86 -0
- package/dist/public/vendor/vditor/dist/js/i18n/ru_RU.js +86 -0
- package/dist/public/vendor/vditor/dist/js/i18n/sv_SE.js +86 -0
- package/dist/public/vendor/vditor/dist/js/i18n/vi_VN.js +86 -0
- package/dist/public/vendor/vditor/dist/js/i18n/zh_CN.js +86 -0
- package/dist/public/vendor/vditor/dist/js/i18n/zh_TW.js +86 -0
- package/dist/public/vendor/vditor/dist/js/icons/ant.js +174 -0
- package/dist/public/vendor/vditor/dist/js/icons/material.js +195 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_AMS-Regular.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_AMS-Regular.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Bold.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Bold.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Italic.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Italic.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Regular.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Regular.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Math-Italic.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Math-Italic.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Script-Regular.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Script-Regular.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size1-Regular.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size1-Regular.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size2-Regular.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size2-Regular.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size3-Regular.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size3-Regular.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size4-Regular.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size4-Regular.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/dist/public/vendor/vditor/dist/js/katex/katex.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/katex/katex.min.js +1 -0
- package/dist/public/vendor/vditor/dist/js/katex/mhchem.min.js +1 -0
- package/dist/public/vendor/vditor/dist/js/lute/lute.min.js +72 -0
- package/dist/public/vendor/vditor/dist/js/markmap/katex.min.css +1 -0
- package/dist/public/vendor/vditor/dist/js/markmap/markmap.min.js +8251 -0
- package/dist/public/vendor/vditor/dist/js/markmap/prism.css +140 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/LICENSE +202 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/a11y/assistive-mml.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/a11y/complexity.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/a11y/explorer.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/a11y/semantic-enrich.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/asciimath.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/mml/entities.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/mml.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/action.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/all-packages.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/ams.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/amscd.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/autoload.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/bbox.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/boldsymbol.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/braket.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/bussproofs.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/cancel.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/color.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/colorV2.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/configMacros.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/enclose.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/extpfeil.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/html.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/mhchem.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/newcommand.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/noerrors.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/noundefined.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/physics.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/require.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/tagFormat.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/textmacros.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/unicode.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex/extensions/verb.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex-base.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex-full.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/input/tex.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/sre/mathmaps/de.js +104 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/sre/mathmaps/en.js +110 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/sre/mathmaps/es.js +104 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/sre/mathmaps/fr.js +104 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/sre/mathmaps/mathmaps_ie.js +518 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/sre/mathmaps/nemeth.js +104 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/sre/sre-node.js +11 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/sre/sre_browser.js +1633 -0
- package/dist/public/vendor/vditor/dist/js/mathjax/tex-svg-full.js +1 -0
- package/dist/public/vendor/vditor/dist/js/mermaid/mermaid.min.js +2607 -0
- package/dist/public/vendor/vditor/dist/js/plantuml/plantuml-encoder.min.js +1 -0
- package/dist/public/vendor/vditor/dist/js/smiles-drawer/smiles-drawer.min.js +71 -0
- package/dist/public/vendor/vditor/dist/method.d.ts +51 -0
- package/dist/public/vendor/vditor/dist/method.js +2673 -0
- package/dist/public/vendor/vditor/dist/method.min.js +1 -0
- package/dist/public/vendor/vditor/dist/ts/constants.d.ts +45 -0
- package/dist/public/vendor/vditor/dist/ts/devtools/index.d.ts +7 -0
- package/dist/public/vendor/vditor/dist/ts/export/index.d.ts +4 -0
- package/dist/public/vendor/vditor/dist/ts/hint/index.d.ts +14 -0
- package/dist/public/vendor/vditor/dist/ts/ir/expandMarker.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/ir/highlightToolbarIR.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/ir/index.d.ts +13 -0
- package/dist/public/vendor/vditor/dist/ts/ir/input.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/ir/process.d.ts +8 -0
- package/dist/public/vendor/vditor/dist/ts/ir/processKeydown.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/SMILESRender.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/abcRender.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/adapterRender.d.ts +41 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/anchorRender.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/chartRender.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/codeRender.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/flowchartRender.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/getHTML.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/getMarkdown.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/graphvizRender.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/highlightRender.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/lazyLoadImageRender.d.ts +6 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/markmapRender.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/mathRender.d.ts +9 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/mediaRender.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/mermaidRender.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/mindmapRender.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/outlineRender.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/plantumlRender.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/previewRender.d.ts +2 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/setLute.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/markdown/speechRender.d.ts +6 -0
- package/dist/public/vendor/vditor/dist/ts/outline/index.d.ts +7 -0
- package/dist/public/vendor/vditor/dist/ts/preview/image.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/preview/index.d.ts +10 -0
- package/dist/public/vendor/vditor/dist/ts/resize/index.d.ts +6 -0
- package/dist/public/vendor/vditor/dist/ts/sv/combineFootnote.d.ts +6 -0
- package/dist/public/vendor/vditor/dist/ts/sv/index.d.ts +13 -0
- package/dist/public/vendor/vditor/dist/ts/sv/inputEvent.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/sv/process.d.ts +11 -0
- package/dist/public/vendor/vditor/dist/ts/sv/processKeydown.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/tip/index.d.ts +6 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Both.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Br.d.ts +4 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/CodeTheme.d.ts +6 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/ContentTheme.d.ts +6 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Counter.d.ts +6 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Custom.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Devtools.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Divider.d.ts +4 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/EditMode.d.ts +8 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Emoji.d.ts +7 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Export.d.ts +6 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Fullscreen.d.ts +6 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Headings.d.ts +7 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Help.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Indent.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Info.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/InsertAfter.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/InsertBefore.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/MenuItem.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Outdent.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Outline.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Preview.d.ts +6 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Record.d.ts +6 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Redo.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Undo.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/Upload.d.ts +6 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/index.d.ts +10 -0
- package/dist/public/vendor/vditor/dist/ts/toolbar/setToolbar.d.ts +20 -0
- package/dist/public/vendor/vditor/dist/ts/ui/initUI.d.ts +4 -0
- package/dist/public/vendor/vditor/dist/ts/ui/setCodeTheme.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/ui/setContentTheme.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/ui/setPreviewMode.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/ui/setTheme.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/undo/index.d.ts +19 -0
- package/dist/public/vendor/vditor/dist/ts/upload/getElement.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/upload/index.d.ts +8 -0
- package/dist/public/vendor/vditor/dist/ts/upload/setHeaders.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/util/Options.d.ts +8 -0
- package/dist/public/vendor/vditor/dist/ts/util/RecordMedia.d.ts +18 -0
- package/dist/public/vendor/vditor/dist/ts/util/addScript.d.ts +2 -0
- package/dist/public/vendor/vditor/dist/ts/util/addStyle.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/util/code160to32.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/util/compatibility.d.ts +7 -0
- package/dist/public/vendor/vditor/dist/ts/util/editorCommonEvent.d.ts +9 -0
- package/dist/public/vendor/vditor/dist/ts/util/fixBrowserBehavior.d.ts +39 -0
- package/dist/public/vendor/vditor/dist/ts/util/function.d.ts +3 -0
- package/dist/public/vendor/vditor/dist/ts/util/getSelectText.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/util/hasClosest.d.ts +9 -0
- package/dist/public/vendor/vditor/dist/ts/util/hasClosestByHeadings.d.ts +2 -0
- package/dist/public/vendor/vditor/dist/ts/util/highlightToolbar.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/util/hotKey.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/util/log.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/util/merge.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/util/processCode.d.ts +2 -0
- package/dist/public/vendor/vditor/dist/ts/util/selection.d.ts +14 -0
- package/dist/public/vendor/vditor/dist/ts/util/toc.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/wysiwyg/afterRenderEvent.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/wysiwyg/highlightToolbarWYSIWYG.d.ts +4 -0
- package/dist/public/vendor/vditor/dist/ts/wysiwyg/index.d.ts +22 -0
- package/dist/public/vendor/vditor/dist/ts/wysiwyg/inlineTag.d.ts +10 -0
- package/dist/public/vendor/vditor/dist/ts/wysiwyg/input.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/wysiwyg/processKeydown.d.ts +2 -0
- package/dist/public/vendor/vditor/dist/ts/wysiwyg/renderDomByMd.d.ts +5 -0
- package/dist/public/vendor/vditor/dist/ts/wysiwyg/setHeading.d.ts +2 -0
- package/dist/public/vendor/vditor/dist/ts/wysiwyg/showCode.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/ts/wysiwyg/toolbarEvent.d.ts +1 -0
- package/dist/public/vendor/vditor/dist/types/index.d.ts +921 -0
- package/dist/public/work-permissions.d.ts +5 -2
- package/dist/public/work-permissions.js +40 -13
- package/dist/security.js +11 -0
- package/dist/security.js.map +1 -1
- package/dist/server-runtime.js +5 -2
- package/dist/server-runtime.js.map +1 -1
- package/dist/store.js +192 -34
- package/dist/store.js.map +1 -1
- package/dist/user-auth.js +36 -7
- package/dist/user-auth.js.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/work-permissions.js +29 -6
- package/dist/work-permissions.js.map +1 -1
- 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> |
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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"),
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
"
|
|
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
|
|
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
|
-
|
|
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:
|
|
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"),
|