@langgraph-js/ui 3.0.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components.json +24 -0
- package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/assets/abap-BdImnpbu.js +1 -0
- package/dist/assets/actionscript-3-CfeIJUat.js +1 -0
- package/dist/assets/ada-bCR0ucgS.js +1 -0
- package/dist/assets/andromeeda-C-Jbm3Hp.js +1 -0
- package/dist/assets/angular-html-Bbf3ZyxA.js +1 -0
- package/dist/assets/angular-ts-C26w9mnW.js +1 -0
- package/dist/assets/apache-Pmp26Uib.js +1 -0
- package/dist/assets/apex-C7Pw0Ztw.js +1 -0
- package/dist/assets/apl-e980N3t4.js +1 -0
- package/dist/assets/applescript-Co6uUVPk.js +1 -0
- package/dist/assets/ara-BRHolxvo.js +1 -0
- package/dist/assets/arc-CGVbGqUF.js +1 -0
- package/dist/assets/architectureDiagram-VXUJARFQ-CqtrDEw9.js +36 -0
- package/dist/assets/asciidoc-Dv7Oe6Be.js +1 -0
- package/dist/assets/asm-D_Q5rh1f.js +1 -0
- package/dist/assets/astro-CjFzhNUq.js +1 -0
- package/dist/assets/aurora-x-D-2ljcwZ.js +1 -0
- package/dist/assets/awk-DMzUqQB5.js +1 -0
- package/dist/assets/ayu-dark-Cv9koXgw.js +1 -0
- package/dist/assets/ballerina-BFfxhgS-.js +1 -0
- package/dist/assets/bat-BkioyH1T.js +1 -0
- package/dist/assets/beancount-BoKiGodi.js +1 -0
- package/dist/assets/berry-D08WgyRC.js +1 -0
- package/dist/assets/bibtex-CHM0blh-.js +1 -0
- package/dist/assets/bicep-6nHXG8SA.js +1 -0
- package/dist/assets/blade-B2ZbN0F_.js +1 -0
- package/dist/assets/blockDiagram-VD42YOAC-CNqe-K1B.js +122 -0
- package/dist/assets/bsl-BO_Y6i37.js +1 -0
- package/dist/assets/c-BIGW1oBm.js +1 -0
- package/dist/assets/c4Diagram-YG6GDRKO-CPTzKGRp.js +10 -0
- package/dist/assets/cadence-D2CYqzqI.js +1 -0
- package/dist/assets/cairo-KRGpt6FW.js +1 -0
- package/dist/assets/catppuccin-frappe-BBxmzUt6.js +1 -0
- package/dist/assets/catppuccin-latte-Jep7L2Wt.js +1 -0
- package/dist/assets/catppuccin-macchiato-CIUZ1G5V.js +1 -0
- package/dist/assets/catppuccin-mocha-NBseiqgx.js +1 -0
- package/dist/assets/channel-CbJkpW4g.js +1 -0
- package/dist/assets/chunk-4BX2VUAB-CnFclA68.js +1 -0
- package/dist/assets/chunk-55IACEB6-CVyjVz79.js +1 -0
- package/dist/assets/chunk-B4BG7PRW-DiGvJtfO.js +165 -0
- package/dist/assets/chunk-DI55MBZ5-CiqWzq60.js +220 -0
- package/dist/assets/chunk-FMBD7UC4-KfYlm8ba.js +15 -0
- package/dist/assets/chunk-QN33PNHL-Bwbc5Dxk.js +1 -0
- package/dist/assets/chunk-QZHKN3VN-DlQbvjLB.js +1 -0
- package/dist/assets/chunk-TZMSLE5B-6_Y4HlEU.js +1 -0
- package/dist/assets/clarity-CHh-QcGE.js +1 -0
- package/dist/assets/classDiagram-2ON5EDUG--F4r2fzQ.js +1 -0
- package/dist/assets/classDiagram-v2-WZHVMYZB--F4r2fzQ.js +1 -0
- package/dist/assets/clojure-P80f7IUj.js +1 -0
- package/dist/assets/clone-CxJednSn.js +1 -0
- package/dist/assets/cmake-D1j8_8rp.js +1 -0
- package/dist/assets/cobol-DwXMNnPA.js +1 -0
- package/dist/assets/codeowners-Bp6g37R7.js +1 -0
- package/dist/assets/codeql-DsOJ9woJ.js +1 -0
- package/dist/assets/coffee-JUOWOZUj.js +1 -0
- package/dist/assets/common-lisp-Cg-RD9OK.js +1 -0
- package/dist/assets/coq-DkFqJrB1.js +1 -0
- package/dist/assets/cose-bilkent-S5V4N54A-BL_xZw_z.js +1 -0
- package/dist/assets/cpp-CofmeUqb.js +1 -0
- package/dist/assets/crystal-DVs0tusA.js +1 -0
- package/dist/assets/csharp-CHadp7IV.js +1 -0
- package/dist/assets/css-DPfMkruS.js +1 -0
- package/dist/assets/csv-fuZLfV_i.js +1 -0
- package/dist/assets/cue-D82EKSYY.js +1 -0
- package/dist/assets/cypher-COkxafJQ.js +1 -0
- package/dist/assets/cytoscape.esm-BlPLnP8k.js +331 -0
- package/dist/assets/d-85-TOEBH.js +1 -0
- package/dist/assets/dagre-6UL2VRFP-CKK6NwPE.js +4 -0
- package/dist/assets/dark-plus-C3mMm8J8.js +1 -0
- package/dist/assets/dart-CF10PKvl.js +1 -0
- package/dist/assets/dax-CEL-wOlO.js +1 -0
- package/dist/assets/defaultLocale-C4B-KCzX.js +1 -0
- package/dist/assets/desktop-BmXAJ9_W.js +1 -0
- package/dist/assets/diagram-PSM6KHXK-D77jB3aN.js +24 -0
- package/dist/assets/diagram-QEK2KX5R-C3V63KEf.js +43 -0
- package/dist/assets/diagram-S2PKOQOG-8vXvyFcA.js +24 -0
- package/dist/assets/diff-D97Zzqfu.js +1 -0
- package/dist/assets/docker-BcOcwvcX.js +1 -0
- package/dist/assets/dotenv-Da5cRb03.js +1 -0
- package/dist/assets/dracula-BzJJZx-M.js +1 -0
- package/dist/assets/dracula-soft-BXkSAIEj.js +1 -0
- package/dist/assets/dream-maker-BtqSS_iP.js +1 -0
- package/dist/assets/edge-CKszZCnI.js +1 -0
- package/dist/assets/elixir-Cc7HHYVZ.js +1 -0
- package/dist/assets/elm-DbKCFpqz.js +1 -0
- package/dist/assets/emacs-lisp-C9XAeP06.js +1 -0
- package/dist/assets/erDiagram-Q2GNP2WA-BvdZN7ll.js +60 -0
- package/dist/assets/erb-C7QrGF_t.js +1 -0
- package/dist/assets/erlang-DsQrWhSR.js +1 -0
- package/dist/assets/everforest-dark-BgDCqdQA.js +1 -0
- package/dist/assets/everforest-light-C8M2exoo.js +1 -0
- package/dist/assets/fennel-BYunw83y.js +1 -0
- package/dist/assets/fish-Bl2oy6fF.js +1 -0
- package/dist/assets/flowDiagram-NV44I4VS-Cmn4g1Tt.js +162 -0
- package/dist/assets/fluent-C4IJs8-o.js +1 -0
- package/dist/assets/fortran-fixed-form-BZjJHVRy.js +1 -0
- package/dist/assets/fortran-free-form-D22FLkUw.js +1 -0
- package/dist/assets/fsharp-CufqaIoK.js +1 -0
- package/dist/assets/ganttDiagram-LVOFAZNH-BtK3XTtk.js +267 -0
- package/dist/assets/gdresource-B7Tvp0Sc.js +1 -0
- package/dist/assets/gdscript-DTMYz4Jt.js +1 -0
- package/dist/assets/gdshader-DkwncUOv.js +1 -0
- package/dist/assets/genie-D0YGMca9.js +1 -0
- package/dist/assets/gherkin-DyxjwDmM.js +1 -0
- package/dist/assets/git-commit-F4YmCXRG.js +1 -0
- package/dist/assets/git-rebase-r7XF79zn.js +1 -0
- package/dist/assets/gitGraphDiagram-NY62KEGX-Ckd-OTVj.js +65 -0
- package/dist/assets/github-dark-DHJKELXO.js +1 -0
- package/dist/assets/github-dark-default-Cuk6v7N8.js +1 -0
- package/dist/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
- package/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
- package/dist/assets/github-light-DAi9KRSo.js +1 -0
- package/dist/assets/github-light-default-D7oLnXFd.js +1 -0
- package/dist/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
- package/dist/assets/gleam-BspZqrRM.js +1 -0
- package/dist/assets/glimmer-js-Dz9X99Cm.js +1 -0
- package/dist/assets/glimmer-ts-aQ3p29eY.js +1 -0
- package/dist/assets/glsl-DplSGwfg.js +1 -0
- package/dist/assets/gnuplot-DdkO51Og.js +1 -0
- package/dist/assets/go-Dn2_MT6a.js +1 -0
- package/dist/assets/graph-C8xl-aUs.js +1 -0
- package/dist/assets/graphql-Caa12_AY.js +1 -0
- package/dist/assets/groovy-gcz8RCvz.js +1 -0
- package/dist/assets/gruvbox-dark-hard-D1uDOp7C.js +1 -0
- package/dist/assets/gruvbox-dark-medium-DkhsQLT2.js +1 -0
- package/dist/assets/gruvbox-dark-soft-CcyOm34o.js +1 -0
- package/dist/assets/gruvbox-light-hard-DKzvysjW.js +1 -0
- package/dist/assets/gruvbox-light-medium-DPcUKYIF.js +1 -0
- package/dist/assets/gruvbox-light-soft-CGqH5EJj.js +1 -0
- package/dist/assets/hack-D_o3P2UH.js +1 -0
- package/dist/assets/haml-AZXGPtNI.js +1 -0
- package/dist/assets/handlebars-YebKLiTq.js +1 -0
- package/dist/assets/haskell-Df6bDoY_.js +1 -0
- package/dist/assets/haxe-CzTSHFRz.js +1 -0
- package/dist/assets/hcl-BWvSN4gD.js +1 -0
- package/dist/assets/hjson-D5-asLiD.js +1 -0
- package/dist/assets/hlsl-D3lLCCz7.js +1 -0
- package/dist/assets/houston-DnULxvSX.js +1 -0
- package/dist/assets/html-B8pBdPMQ.js +1 -0
- package/dist/assets/html-derivative-ZQ8onl8Z.js +1 -0
- package/dist/assets/http-C38VWM-o.js +1 -0
- package/dist/assets/hxml-Bvhsp5Yf.js +1 -0
- package/dist/assets/hy-DFXneXwc.js +1 -0
- package/dist/assets/imba-DGztddWO.js +1 -0
- package/dist/assets/index-BpNQAzdK.css +1 -0
- package/dist/assets/index-EdVqpCiz.js +835 -0
- package/dist/assets/infoDiagram-F6ZHWCRC-Z0X_yr7r.js +2 -0
- package/dist/assets/ini-BEwlwnbL.js +1 -0
- package/dist/assets/init-Gi6I4Gst.js +1 -0
- package/dist/assets/isUndefined-Daq2Snc8.js +1 -0
- package/dist/assets/java-CylS5w8V.js +1 -0
- package/dist/assets/javascript-BMMyXqK5.js +1 -0
- package/dist/assets/jinja-BJmZiE_F.js +1 -0
- package/dist/assets/jison-BCRtk9Os.js +1 -0
- package/dist/assets/journeyDiagram-XKPGCS4Q-Ce4GbjgA.js +139 -0
- package/dist/assets/json-Cp-IABpG.js +1 -0
- package/dist/assets/json5-C9tS-k6U.js +1 -0
- package/dist/assets/jsonc-Des-eS-w.js +1 -0
- package/dist/assets/jsonl-DcaNXYhu.js +1 -0
- package/dist/assets/jsonnet-DFQXde-d.js +1 -0
- package/dist/assets/jssm-C2t-YnRu.js +1 -0
- package/dist/assets/jsx-g9-lgVsj.js +1 -0
- package/dist/assets/julia-353pQ8cl.js +1 -0
- package/dist/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
- package/dist/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
- package/dist/assets/kanagawa-wave-DWedfzmr.js +1 -0
- package/dist/assets/kanban-definition-3W4ZIXB7-jKKX8cF-.js +89 -0
- package/dist/assets/kotlin-BdnUsdx6.js +1 -0
- package/dist/assets/kusto-BvAqAH-y.js +1 -0
- package/dist/assets/laserwave-DUszq2jm.js +1 -0
- package/dist/assets/latex-CPEt12BK.js +1 -0
- package/dist/assets/layout-CehWuyQv.js +1 -0
- package/dist/assets/lean-qliWkHmV.js +1 -0
- package/dist/assets/less-B1dDrJ26.js +1 -0
- package/dist/assets/light-plus-B7mTdjB0.js +1 -0
- package/dist/assets/linear-Do6UjTtT.js +1 -0
- package/dist/assets/liquid-DFk8BABL.js +1 -0
- package/dist/assets/llvm-D32k8WzR.js +1 -0
- package/dist/assets/log-2UxHyX5q.js +1 -0
- package/dist/assets/logo-BtOb2qkB.js +1 -0
- package/dist/assets/lua-BbnMAYS6.js +1 -0
- package/dist/assets/luau-CXu1NL6O.js +1 -0
- package/dist/assets/make-CHLpvVh8.js +1 -0
- package/dist/assets/markdown-Cvjx9yec.js +1 -0
- package/dist/assets/marko-BM38lbjI.js +1 -0
- package/dist/assets/material-theme-D5KoaKCx.js +1 -0
- package/dist/assets/material-theme-darker-BfHTSMKl.js +1 -0
- package/dist/assets/material-theme-lighter-B0m2ddpp.js +1 -0
- package/dist/assets/material-theme-ocean-CyktbL80.js +1 -0
- package/dist/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
- package/dist/assets/matlab-D7o27uSR.js +1 -0
- package/dist/assets/mdc-DvHMhoCT.js +1 -0
- package/dist/assets/mdx-Cmh6b_Ma.js +1 -0
- package/dist/assets/mermaid-DKYwYmdq.js +1 -0
- package/dist/assets/mermaid.core-DboFnVDg.js +197 -0
- package/dist/assets/min-CoD9aTVe.js +1 -0
- package/dist/assets/min-dark-CafNBF8u.js +1 -0
- package/dist/assets/min-light-CTRr51gU.js +1 -0
- package/dist/assets/mindmap-definition-VGOIOE7T-DHqc52RG.js +68 -0
- package/dist/assets/mipsasm-CKIfxQSi.js +1 -0
- package/dist/assets/mojo-1DNp92w6.js +1 -0
- package/dist/assets/monokai-D4h5O-jR.js +1 -0
- package/dist/assets/move-DNEoBllO.js +1 -0
- package/dist/assets/narrat-DRg8JJMk.js +1 -0
- package/dist/assets/nextflow-CUEJCptM.js +1 -0
- package/dist/assets/nginx-DknmC5AR.js +1 -0
- package/dist/assets/night-owl-C39BiMTA.js +1 -0
- package/dist/assets/nim-BZI_8mFl.js +1 -0
- package/dist/assets/nix-BepWV7mh.js +1 -0
- package/dist/assets/nord-Ddv68eIx.js +1 -0
- package/dist/assets/nushell-ChH_ziBE.js +1 -0
- package/dist/assets/objective-c-DXmwc3jG.js +1 -0
- package/dist/assets/objective-cpp-CLxacb5B.js +1 -0
- package/dist/assets/ocaml-C0hk2d4L.js +1 -0
- package/dist/assets/one-dark-pro-DVMEJ2y_.js +1 -0
- package/dist/assets/one-light-PoHY5YXO.js +1 -0
- package/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dist/assets/pascal-D93ZcfNL.js +1 -0
- package/dist/assets/perl-g0D2lH3a.js +1 -0
- package/dist/assets/php-Gk5eUrPQ.js +1 -0
- package/dist/assets/pieDiagram-ADFJNKIX-bG2J_WkI.js +30 -0
- package/dist/assets/plastic-3e1v2bzS.js +1 -0
- package/dist/assets/plsql-ChMvpjG-.js +1 -0
- package/dist/assets/po-BTJTHyun.js +1 -0
- package/dist/assets/poimandres-CS3Unz2-.js +1 -0
- package/dist/assets/polar-C0HS_06l.js +1 -0
- package/dist/assets/postcss-CXtECtnM.js +1 -0
- package/dist/assets/powerquery-CEu0bR-o.js +1 -0
- package/dist/assets/powershell-Dpen1YoG.js +1 -0
- package/dist/assets/prisma-Dd19v3D-.js +1 -0
- package/dist/assets/prolog-CbFg5uaA.js +1 -0
- package/dist/assets/proto-DyJlTyXw.js +1 -0
- package/dist/assets/pug-Ch9lOoSd.js +1 -0
- package/dist/assets/puppet-BMWR74SV.js +1 -0
- package/dist/assets/purescript-CklMAg4u.js +1 -0
- package/dist/assets/python-B6aJPvgy.js +1 -0
- package/dist/assets/qml-CHzV51_b.js +1 -0
- package/dist/assets/qmldir-C8lEn-DE.js +1 -0
- package/dist/assets/qss-IeuSbFQv.js +1 -0
- package/dist/assets/quadrantDiagram-AYHSOK5B-CDEBrcZS.js +7 -0
- package/dist/assets/r-DiinP2Uv.js +1 -0
- package/dist/assets/racket-BqYA7rlc.js +1 -0
- package/dist/assets/raku-DXvB9xmW.js +1 -0
- package/dist/assets/razor-CNXmhs1n.js +1 -0
- package/dist/assets/red-bN70gL4F.js +1 -0
- package/dist/assets/reg-C-SQnVFl.js +1 -0
- package/dist/assets/regexp-CDVJQ6XC.js +1 -0
- package/dist/assets/rel-C3B-1QV4.js +1 -0
- package/dist/assets/requirementDiagram-UZGBJVZJ-D88jc_6e.js +64 -0
- package/dist/assets/riscv-BM1_JUlF.js +1 -0
- package/dist/assets/rose-pine-BHrmToEH.js +1 -0
- package/dist/assets/rose-pine-dawn-CnK8MTSM.js +1 -0
- package/dist/assets/rose-pine-moon-NleAzG8P.js +1 -0
- package/dist/assets/rst-DKdxLoXm.js +1 -0
- package/dist/assets/ruby-W1VRIm2Q.js +1 -0
- package/dist/assets/rust-B1yitclQ.js +1 -0
- package/dist/assets/sankeyDiagram-TZEHDZUN-C93LzfJ0.js +10 -0
- package/dist/assets/sas-cz2c8ADy.js +1 -0
- package/dist/assets/sass-Cj5Yp3dK.js +1 -0
- package/dist/assets/scala-C151Ov-r.js +1 -0
- package/dist/assets/scheme-C98Dy4si.js +1 -0
- package/dist/assets/scss-OYdSNvt2.js +1 -0
- package/dist/assets/sdbl-DVxCFoDh.js +1 -0
- package/dist/assets/sequenceDiagram-WL72ISMW-DjpL4ZUq.js +145 -0
- package/dist/assets/shaderlab-Dg9Lc6iA.js +1 -0
- package/dist/assets/shellscript-Yzrsuije.js +1 -0
- package/dist/assets/shellsession-BADoaaVG.js +1 -0
- package/dist/assets/slack-dark-BthQWCQV.js +1 -0
- package/dist/assets/slack-ochin-DqwNpetd.js +1 -0
- package/dist/assets/smalltalk-BERRCDM3.js +1 -0
- package/dist/assets/snazzy-light-Bw305WKR.js +1 -0
- package/dist/assets/solarized-dark-DXbdFlpD.js +1 -0
- package/dist/assets/solarized-light-L9t79GZl.js +1 -0
- package/dist/assets/solidity-BbcW6ACK.js +1 -0
- package/dist/assets/soy-B_7ge1HE.js +1 -0
- package/dist/assets/sparql-rVzFXLq3.js +1 -0
- package/dist/assets/splunk-BtCnVYZw.js +1 -0
- package/dist/assets/sql-BLtJtn59.js +1 -0
- package/dist/assets/ssh-config-_ykCGR6B.js +1 -0
- package/dist/assets/stata-BH5u7GGu.js +1 -0
- package/dist/assets/stateDiagram-FKZM4ZOC-Cy4Qc8UW.js +1 -0
- package/dist/assets/stateDiagram-v2-4FDKWEC3-wfRa7ccT.js +1 -0
- package/dist/assets/stylus-BEDo0Tqx.js +1 -0
- package/dist/assets/svelte-Dt5jNKfG.js +1 -0
- package/dist/assets/swift-Dg5xB15N.js +1 -0
- package/dist/assets/synthwave-84-CbfX1IO0.js +1 -0
- package/dist/assets/system-verilog-CnnmHF94.js +1 -0
- package/dist/assets/systemd-4A_iFExJ.js +1 -0
- package/dist/assets/talonscript-CkByrt1z.js +1 -0
- package/dist/assets/tasl-QIJgUcNo.js +1 -0
- package/dist/assets/tcl-dwOrl1Do.js +1 -0
- package/dist/assets/templ-0CNLO7il.js +1 -0
- package/dist/assets/terraform-BETggiCN.js +1 -0
- package/dist/assets/tex-B5i3u9ba.js +1 -0
- package/dist/assets/timeline-definition-IT6M3QCI-DNVlI21w.js +61 -0
- package/dist/assets/tokyo-night-hegEt444.js +1 -0
- package/dist/assets/toml-vGWfd6FD.js +1 -0
- package/dist/assets/treemap-KMMF4GRG-Cf7rPol4.js +128 -0
- package/dist/assets/ts-tags-B9XN6NYQ.js +1 -0
- package/dist/assets/tsv-B_m7g4N7.js +1 -0
- package/dist/assets/tsx-COt5Ahok.js +1 -0
- package/dist/assets/turtle-BsS91CYL.js +1 -0
- package/dist/assets/twig-B_ULif71.js +1 -0
- package/dist/assets/typescript-DlfHMoPT.js +1 -0
- package/dist/assets/typespec-Df68jz8_.js +1 -0
- package/dist/assets/typst-DHCkPAjA.js +1 -0
- package/dist/assets/v-DljmTZ5-.js +1 -0
- package/dist/assets/vala-CsfeWuGM.js +1 -0
- package/dist/assets/vb-D17OF-Vu.js +1 -0
- package/dist/assets/verilog-BQ8w6xss.js +1 -0
- package/dist/assets/vesper-DU1UobuO.js +1 -0
- package/dist/assets/vhdl-CeAyd5Ju.js +1 -0
- package/dist/assets/viml-CJc9bBzg.js +1 -0
- package/dist/assets/vitesse-black-Bkuqu6BP.js +1 -0
- package/dist/assets/vitesse-dark-D0r3Knsf.js +1 -0
- package/dist/assets/vitesse-light-CVO1_9PV.js +1 -0
- package/dist/assets/vue-BEetzCYT.js +1 -0
- package/dist/assets/vue-html-BsD9fJC1.js +1 -0
- package/dist/assets/vue-vine-CCdTUzyM.js +1 -0
- package/dist/assets/vyper-CDx5xZoG.js +1 -0
- package/dist/assets/wasm-CG6Dc4jp.js +1 -0
- package/dist/assets/wasm-MzD3tlZU.js +1 -0
- package/dist/assets/wenyan-BV7otONQ.js +1 -0
- package/dist/assets/wgsl-Dx-B1_4e.js +1 -0
- package/dist/assets/wikitext-BhOHFoWU.js +1 -0
- package/dist/assets/wit-5i3qLPDT.js +1 -0
- package/dist/assets/wolfram-lXgVvXCa.js +1 -0
- package/dist/assets/xml-sdJ4AIDG.js +1 -0
- package/dist/assets/xsl-CtQFsRM5.js +1 -0
- package/dist/assets/xychartDiagram-PRI3JC2R-CRudqT7y.js +7 -0
- package/dist/assets/yaml-Buea-lGh.js +1 -0
- package/dist/assets/zenscript-DVFEvuxE.js +1 -0
- package/dist/assets/zig-VOosw3JB.js +1 -0
- package/dist/index.html +2 -2
- package/package.json +20 -12
- package/src/artifacts/ArtifactViewer.tsx +22 -153
- package/src/chat/Chat.tsx +7 -9
- package/src/chat/components/MessageAI.tsx +2 -3
- package/src/chat/components/MessageBox.tsx +2 -2
- package/src/chat/components/MessageTool.tsx +4 -17
- package/src/chat/store/index.ts +0 -21
- package/src/chat/tools/create_artifacts.tsx +10 -26
- package/src/components/ai-elements/code-block.tsx +148 -0
- package/src/components/ai-elements/response.tsx +22 -0
- package/src/components/ui/button.tsx +60 -0
- package/src/components/ui/sonner.tsx +38 -0
- package/src/graph/index.tsx +1 -1
- package/src/index.css +121 -0
- package/src/index.ts +1 -2
- package/src/lib/utils.ts +6 -0
- package/src/settings/LoginSettings.tsx +1 -1
- package/src/settings/SettingPanel.tsx +1 -1
- package/test/main.tsx +0 -2
- package/tsconfig.json +5 -1
- package/tsconfig.node.json +1 -1
- package/vite.config.ts +3 -3
- package/dist/assets/index-CRq7a-Q4.css +0 -1
- package/dist/assets/index-IirYMaE5.js +0 -280
- package/src/artifacts/ArtifactsContext.tsx +0 -99
- package/src/artifacts/SourceCodeViewer.tsx +0 -15
- package/src/chat/components/JSONViewer.tsx +0 -18
- package/src/chat/components/JsonToMessage/JsonToMessage.tsx +0 -120
- package/src/chat/components/JsonToMessage/JsonToMessageButton.tsx +0 -20
- package/src/chat/components/JsonToMessage/index.tsx +0 -5
- package/src/chat/context/ChatContext.tsx +0 -83
- package/src/memory/BaseDB.ts +0 -92
- package/src/memory/db.ts +0 -232
- package/src/memory/fulltext-search.ts +0 -191
- package/src/memory/index.ts +0 -4
- package/src/memory/tools.ts +0 -170
- package/src/sonner/Toaster.tsx +0 -117
- package/src/sonner/index.ts +0 -3
- package/src/sonner/toast.ts +0 -50
- package/src/sonner/types.ts +0 -21
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
// minisearch-idb-chinese-search.ts
|
|
2
|
-
|
|
3
|
-
import MiniSearch, { AsPlainObject, type Options, type SearchOptions, type SearchResult } from "minisearch";
|
|
4
|
-
import { openDB, type IDBPDatabase } from "idb";
|
|
5
|
-
import { BaseDB, BaseDBConfig } from "./BaseDB";
|
|
6
|
-
import { MemoryRecord } from "./db";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* 搜索服务配置接口
|
|
10
|
-
*/
|
|
11
|
-
export interface FullTextSearchConfig extends BaseDBConfig {
|
|
12
|
-
miniSearchOptions?: Partial<Options<MemoryRecord>>;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// 默认配置
|
|
16
|
-
const DEFAULT_CONFIG: Required<FullTextSearchConfig> = {
|
|
17
|
-
dbName: "minisearch_memory_db",
|
|
18
|
-
dbVersion: 1,
|
|
19
|
-
storeName: "memory",
|
|
20
|
-
miniSearchOptions: {
|
|
21
|
-
fields: ["text", "path", "tags", "referencePath"],
|
|
22
|
-
storeFields: ["text", "path", "tags", "referencePath"],
|
|
23
|
-
tokenize: chineseWordSegmenter,
|
|
24
|
-
},
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
// --- 1. 中文分词器 ---
|
|
28
|
-
/**
|
|
29
|
-
* 中文分词器,使用 Intl.Segmenter 将中文文本分割成词语。
|
|
30
|
-
* @param text 需要分词的中文文本。
|
|
31
|
-
* @returns 词语数组。
|
|
32
|
-
*/
|
|
33
|
-
function chineseWordSegmenter(text: string): string[] {
|
|
34
|
-
// 移除所有空格,因为中文词语之间通常没有空格
|
|
35
|
-
const cleanText = text.replace(/ /g, "");
|
|
36
|
-
|
|
37
|
-
// 使用 Intl.Segmenter 进行词语分词
|
|
38
|
-
// 'zh-CN' 或 'cn' 都可以表示中文(中国大陆)
|
|
39
|
-
const segmenter = new Intl.Segmenter("zh-CN", { granularity: "word" });
|
|
40
|
-
|
|
41
|
-
// 获取分词结果并只保留词语内容
|
|
42
|
-
const segments = Array.from(segmenter.segment(cleanText)).map((item) => item.segment);
|
|
43
|
-
|
|
44
|
-
return segments;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export class FullTextSearchService extends BaseDB<MemoryRecord> {
|
|
48
|
-
private miniSearch!: MiniSearch<MemoryRecord>;
|
|
49
|
-
protected config: Required<FullTextSearchConfig>;
|
|
50
|
-
protected db!: IDBPDatabase;
|
|
51
|
-
constructor(config?: FullTextSearchConfig) {
|
|
52
|
-
const mergedConfig = {
|
|
53
|
-
...DEFAULT_CONFIG,
|
|
54
|
-
...config,
|
|
55
|
-
miniSearchOptions: {
|
|
56
|
-
...DEFAULT_CONFIG.miniSearchOptions,
|
|
57
|
-
...(config?.miniSearchOptions || {}),
|
|
58
|
-
},
|
|
59
|
-
};
|
|
60
|
-
super(mergedConfig);
|
|
61
|
-
this.config = mergedConfig;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
public async initialize(): Promise<void> {
|
|
65
|
-
if (this.isInitialized) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const { storeName } = this.config;
|
|
70
|
-
this.db = await openDB(this.config.dbName, this.config.dbVersion, {
|
|
71
|
-
upgrade(db) {
|
|
72
|
-
if (!db.objectStoreNames.contains(storeName)) {
|
|
73
|
-
db.createObjectStore(storeName, { keyPath: "id", autoIncrement: true });
|
|
74
|
-
}
|
|
75
|
-
if (!db.objectStoreNames.contains("minisearch_index")) {
|
|
76
|
-
db.createObjectStore("minisearch_index");
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
// 确保 miniSearchOptions 包含所有必需的字段
|
|
82
|
-
const miniSearchOptions: Options<MemoryRecord> = {
|
|
83
|
-
fields: this.config.miniSearchOptions.fields || ["text"],
|
|
84
|
-
storeFields: this.config.miniSearchOptions.storeFields || ["text"],
|
|
85
|
-
tokenize: this.config.miniSearchOptions.tokenize || chineseWordSegmenter,
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
this.miniSearch = new MiniSearch(miniSearchOptions);
|
|
89
|
-
|
|
90
|
-
try {
|
|
91
|
-
const savedIndex = await this.loadMiniSearchIndex();
|
|
92
|
-
if (savedIndex) {
|
|
93
|
-
console.log(savedIndex);
|
|
94
|
-
this.miniSearch = await MiniSearch.loadJSAsync(savedIndex, miniSearchOptions);
|
|
95
|
-
console.log("MiniSearch index loaded from IndexedDB.");
|
|
96
|
-
} else {
|
|
97
|
-
console.log("No saved index found, building from documents...");
|
|
98
|
-
const allDocs = await this.getAll();
|
|
99
|
-
if (allDocs.length > 0) {
|
|
100
|
-
this.miniSearch.addAll(allDocs);
|
|
101
|
-
await this.saveMiniSearchIndex(this.miniSearch.toJSON());
|
|
102
|
-
console.log(`MiniSearch index built from ${allDocs.length} documents and saved.`);
|
|
103
|
-
} else {
|
|
104
|
-
console.log("No documents found, index is empty.");
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
this.isInitialized = true;
|
|
108
|
-
} catch (error) {
|
|
109
|
-
console.error("Failed to initialize FullTextSearchService:", error);
|
|
110
|
-
throw error;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
public async insert(doc: Partial<MemoryRecord>): Promise<number> {
|
|
115
|
-
const transaction = this.db.transaction(this.config.storeName, "readwrite");
|
|
116
|
-
const store = transaction.objectStore(this.config.storeName);
|
|
117
|
-
const newDoc: MemoryRecord = { ...doc } as MemoryRecord;
|
|
118
|
-
|
|
119
|
-
const id = await store.add(newDoc);
|
|
120
|
-
newDoc.id = Number(id);
|
|
121
|
-
|
|
122
|
-
await transaction.done;
|
|
123
|
-
|
|
124
|
-
this.miniSearch.add(newDoc);
|
|
125
|
-
await this.saveMiniSearchIndex(this.miniSearch.toJSON());
|
|
126
|
-
|
|
127
|
-
return newDoc.id;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
public async update(id: number, doc: Partial<MemoryRecord>): Promise<void> {
|
|
131
|
-
const transaction = this.db.transaction(this.config.storeName, "readwrite");
|
|
132
|
-
const store = transaction.objectStore(this.config.storeName);
|
|
133
|
-
const updatedDoc = { ...doc, id } as MemoryRecord;
|
|
134
|
-
await store.put(updatedDoc);
|
|
135
|
-
|
|
136
|
-
// MiniSearch 没有 update 方法,我们需要先删除再添加
|
|
137
|
-
const existingDoc = await store.get(id);
|
|
138
|
-
if (existingDoc) {
|
|
139
|
-
this.miniSearch.remove(existingDoc);
|
|
140
|
-
}
|
|
141
|
-
this.miniSearch.add(updatedDoc);
|
|
142
|
-
await this.saveMiniSearchIndex(this.miniSearch.toJSON());
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
public async delete(id: number): Promise<void> {
|
|
146
|
-
const transaction = this.db.transaction(this.config.storeName, "readwrite");
|
|
147
|
-
const store = transaction.objectStore(this.config.storeName);
|
|
148
|
-
const doc = await store.get(id);
|
|
149
|
-
if (doc) {
|
|
150
|
-
this.miniSearch.remove(doc);
|
|
151
|
-
}
|
|
152
|
-
await store.delete(id);
|
|
153
|
-
await this.saveMiniSearchIndex(this.miniSearch.toJSON());
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
public async query(query: string, options?: SearchOptions & { limit?: number }): Promise<MemoryRecord[]> {
|
|
157
|
-
const results = this.miniSearch.search(query, options);
|
|
158
|
-
// 将 SearchResult 转换为 MemoryRecord
|
|
159
|
-
return results.slice(0, options?.limit ?? 5).map((i) => {
|
|
160
|
-
const { id, text, ...rest } = i;
|
|
161
|
-
return {
|
|
162
|
-
id,
|
|
163
|
-
text,
|
|
164
|
-
tags: rest.tags,
|
|
165
|
-
path: rest.path,
|
|
166
|
-
type: rest.type,
|
|
167
|
-
score: Math.round(i.score),
|
|
168
|
-
referencePath: rest.referencePath,
|
|
169
|
-
} as unknown as MemoryRecord;
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
public async get(id: number): Promise<MemoryRecord | undefined> {
|
|
174
|
-
return this.db.transaction(this.config.storeName, "readonly").objectStore(this.config.storeName).get(id);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
public async getAll(): Promise<MemoryRecord[]> {
|
|
178
|
-
return this.db.transaction(this.config.storeName, "readonly").objectStore(this.config.storeName).getAll();
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
private async loadMiniSearchIndex(): Promise<AsPlainObject | null> {
|
|
182
|
-
return this.db.transaction("minisearch_index", "readonly").objectStore("minisearch_index").get("indexData");
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
private async saveMiniSearchIndex(indexData: AsPlainObject): Promise<void> {
|
|
186
|
-
const tx = this.db.transaction("minisearch_index", "readwrite");
|
|
187
|
-
const store = tx.objectStore("minisearch_index");
|
|
188
|
-
await store.put(indexData, "indexData");
|
|
189
|
-
await tx.done;
|
|
190
|
-
}
|
|
191
|
-
}
|
package/src/memory/index.ts
DELETED
package/src/memory/tools.ts
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import { createToolUI } from "@langgraph-js/sdk";
|
|
2
|
-
import type { BaseDB, MemoryRecord } from "./BaseDB";
|
|
3
|
-
|
|
4
|
-
// 获取命名空间(这里简化为标识符)
|
|
5
|
-
function getNamespace(userId?: string): string {
|
|
6
|
-
return userId || "default";
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
// 确保 JSON 可序列化
|
|
10
|
-
function ensureJsonSerializable(content: any): any {
|
|
11
|
-
if (typeof content === "string" || typeof content === "number" || typeof content === "boolean" || content === null) {
|
|
12
|
-
return content;
|
|
13
|
-
}
|
|
14
|
-
if (Array.isArray(content) || typeof content === "object") {
|
|
15
|
-
return content;
|
|
16
|
-
}
|
|
17
|
-
return String(content);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export const createMemoryTool = (store: BaseDB<MemoryRecord>) => {
|
|
21
|
-
return {
|
|
22
|
-
manageMemory: createToolUI({
|
|
23
|
-
name: "manage_memory",
|
|
24
|
-
description: `这是一个**结构化**工具,用于**管理跨对话的持久化记忆**,以保留上下文、用户偏好和学习到的见解。它支持**创建、更新、检索和删除记忆条目**,从而在互动中保持连续性和个性化。
|
|
25
|
-
|
|
26
|
-
### 你需要记录记忆的场景
|
|
27
|
-
|
|
28
|
-
1. 请你第一时间敏锐记录下用户的细节偏好,包括对话风格、习惯、内容、方式等。
|
|
29
|
-
2. 记录下高价值的问答,比如用户对你的纠正、任务过程中的关键信息
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
### 核心功能
|
|
33
|
-
|
|
34
|
-
该工具具备以下关键能力:
|
|
35
|
-
|
|
36
|
-
* **记忆生命周期管理:** 对记忆条目进行**全生命周期管理**,包括创建、更新、检索和删除。
|
|
37
|
-
* **分段与标签支持:** 支持**分段或打标签的记忆条目**,方便分类和高效检索。
|
|
38
|
-
* **存储选项灵活:** 提供**临时和永久两种存储选项**,以适应不同类型信息的存储需求。
|
|
39
|
-
`,
|
|
40
|
-
parameters: [
|
|
41
|
-
{
|
|
42
|
-
name: "path",
|
|
43
|
-
type: "string",
|
|
44
|
-
description: "记忆路径(创建时需要)",
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
name: "tags",
|
|
48
|
-
type: "string[]",
|
|
49
|
-
description: "记忆标签(创建或更新时需要)",
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
name: "content",
|
|
53
|
-
type: "string",
|
|
54
|
-
description: "记忆内容(创建或更新时需要)",
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
name: "action",
|
|
58
|
-
type: "string",
|
|
59
|
-
enum: ["create", "update", "delete"],
|
|
60
|
-
description: "操作类型:create(创建)、update(更新)、delete(删除)",
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
name: "id",
|
|
64
|
-
type: "string",
|
|
65
|
-
description: "记忆ID(更新或删除时需要,创建时会自动生成)",
|
|
66
|
-
required: false,
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
name: "referencePath",
|
|
70
|
-
type: "string",
|
|
71
|
-
description: "引用文档的 URL",
|
|
72
|
-
required: false,
|
|
73
|
-
},
|
|
74
|
-
],
|
|
75
|
-
handler: async (args) => {
|
|
76
|
-
const { content, action, id, tags, path, referencePath } = args;
|
|
77
|
-
|
|
78
|
-
if ((action === "delete" || action === "update") && !id) {
|
|
79
|
-
throw new Error("删除或更新记忆时必须提供记忆ID");
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if ((action === "create" || action === "update") && !content) {
|
|
83
|
-
throw new Error("创建或更新记忆时必须提供内容");
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
try {
|
|
87
|
-
if (action === "delete") {
|
|
88
|
-
await store.delete(Number(id));
|
|
89
|
-
return `已删除记忆 ${id}`;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const memoryData: MemoryRecord = {
|
|
93
|
-
text: content as string,
|
|
94
|
-
content: ensureJsonSerializable(content),
|
|
95
|
-
createdAt: new Date().toISOString(),
|
|
96
|
-
updatedAt: new Date().toISOString(),
|
|
97
|
-
namespace: getNamespace(),
|
|
98
|
-
tags: tags as string[],
|
|
99
|
-
path: path as string,
|
|
100
|
-
type: "document",
|
|
101
|
-
referencePath: referencePath as string,
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
if (action === "create") {
|
|
105
|
-
const key = await store.insert(memoryData);
|
|
106
|
-
return `已创建记忆 ${key}`;
|
|
107
|
-
} else {
|
|
108
|
-
await store.update(Number(id), memoryData);
|
|
109
|
-
return `已更新记忆 ${id}`;
|
|
110
|
-
}
|
|
111
|
-
} catch (error) {
|
|
112
|
-
throw new Error(`记忆操作失败: ${error}`);
|
|
113
|
-
}
|
|
114
|
-
},
|
|
115
|
-
}),
|
|
116
|
-
searchMemory: createToolUI({
|
|
117
|
-
name: "search_memory",
|
|
118
|
-
description: `搜索长期记忆中的相关信息,帮助维护对话上下文`,
|
|
119
|
-
parameters: [
|
|
120
|
-
{
|
|
121
|
-
name: "query",
|
|
122
|
-
type: "string",
|
|
123
|
-
description: "请使用中文关键词进行搜索",
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
name: "tags",
|
|
127
|
-
type: "string[]",
|
|
128
|
-
description: "记忆标签",
|
|
129
|
-
required: false,
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
name: "path",
|
|
133
|
-
type: "string",
|
|
134
|
-
description: "记忆路径,memory://user_id/path/to/memory_name",
|
|
135
|
-
required: false,
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
name: "limit",
|
|
139
|
-
type: "number",
|
|
140
|
-
description: "返回结果的最大数量(默认10)",
|
|
141
|
-
required: false,
|
|
142
|
-
},
|
|
143
|
-
],
|
|
144
|
-
handler: async (args) => {
|
|
145
|
-
const { query, limit = 10, tags, path } = args;
|
|
146
|
-
|
|
147
|
-
if (!query || (typeof query === "string" && query.trim().length === 0)) {
|
|
148
|
-
throw new Error("搜索查询不能为空");
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
try {
|
|
152
|
-
const results = await store.query(query.toString(), {
|
|
153
|
-
limit: limit as number,
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
return {
|
|
157
|
-
query: query.toString(),
|
|
158
|
-
results: results,
|
|
159
|
-
total: results.length,
|
|
160
|
-
limit: Number(limit),
|
|
161
|
-
};
|
|
162
|
-
} catch (error) {
|
|
163
|
-
throw new Error(`搜索记忆失败: ${error}`);
|
|
164
|
-
}
|
|
165
|
-
},
|
|
166
|
-
}),
|
|
167
|
-
};
|
|
168
|
-
};
|
|
169
|
-
|
|
170
|
-
export { getNamespace, ensureJsonSerializable };
|
package/src/sonner/Toaster.tsx
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { useStore } from "@nanostores/react";
|
|
3
|
-
import { toasts, removeToast } from "./toast";
|
|
4
|
-
import { Toast } from "./types";
|
|
5
|
-
|
|
6
|
-
const ToastItem: React.FC<{ toast: Toast }> = ({ toast }: { toast: Toast }) => {
|
|
7
|
-
const getToastStyles = (type: Toast["type"]) => {
|
|
8
|
-
const baseStyles = "flex items-start gap-3 p-4 rounded-2xl shadow-sm backdrop-blur-md border transition-all duration-300 max-w-sm";
|
|
9
|
-
|
|
10
|
-
switch (type) {
|
|
11
|
-
case "success":
|
|
12
|
-
return `${baseStyles} bg-white/90 dark:bg-gray-800/90 text-green-700 dark:text-green-300 border-green-200/50 dark:border-green-800/50`;
|
|
13
|
-
case "error":
|
|
14
|
-
return `${baseStyles} bg-white/90 dark:bg-gray-800/90 text-red-700 dark:text-red-300 border-red-200/50 dark:border-red-800/50`;
|
|
15
|
-
case "warning":
|
|
16
|
-
return `${baseStyles} bg-white/90 dark:bg-gray-800/90 text-orange-700 dark:text-orange-300 border-orange-200/50 dark:border-orange-800/50`;
|
|
17
|
-
case "info":
|
|
18
|
-
default:
|
|
19
|
-
return `${baseStyles} bg-white/90 dark:bg-gray-800/90 text-blue-700 dark:text-blue-300 border-blue-200/50 dark:border-blue-800/50`;
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
const getIcon = (type: Toast["type"]) => {
|
|
24
|
-
const iconClasses = "w-5 h-5 flex-shrink-0 mt-0.5 opacity-80";
|
|
25
|
-
|
|
26
|
-
switch (type) {
|
|
27
|
-
case "success":
|
|
28
|
-
return (
|
|
29
|
-
<svg className={iconClasses} fill="currentColor" viewBox="0 0 20 20">
|
|
30
|
-
<path
|
|
31
|
-
fillRule="evenodd"
|
|
32
|
-
d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"
|
|
33
|
-
clipRule="evenodd"
|
|
34
|
-
/>
|
|
35
|
-
</svg>
|
|
36
|
-
);
|
|
37
|
-
case "error":
|
|
38
|
-
return (
|
|
39
|
-
<svg className={iconClasses} fill="currentColor" viewBox="0 0 20 20">
|
|
40
|
-
<path
|
|
41
|
-
fillRule="evenodd"
|
|
42
|
-
d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z"
|
|
43
|
-
clipRule="evenodd"
|
|
44
|
-
/>
|
|
45
|
-
</svg>
|
|
46
|
-
);
|
|
47
|
-
case "warning":
|
|
48
|
-
return (
|
|
49
|
-
<svg className={iconClasses} fill="currentColor" viewBox="0 0 20 20">
|
|
50
|
-
<path
|
|
51
|
-
fillRule="evenodd"
|
|
52
|
-
d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z"
|
|
53
|
-
clipRule="evenodd"
|
|
54
|
-
/>
|
|
55
|
-
</svg>
|
|
56
|
-
);
|
|
57
|
-
case "info":
|
|
58
|
-
default:
|
|
59
|
-
return (
|
|
60
|
-
<svg className={iconClasses} fill="currentColor" viewBox="0 0 20 20">
|
|
61
|
-
<path
|
|
62
|
-
fillRule="evenodd"
|
|
63
|
-
d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z"
|
|
64
|
-
clipRule="evenodd"
|
|
65
|
-
/>
|
|
66
|
-
</svg>
|
|
67
|
-
);
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
return (
|
|
72
|
-
<div className={getToastStyles(toast.type)}>
|
|
73
|
-
<div className="flex-shrink-0">{getIcon(toast.type)}</div>
|
|
74
|
-
|
|
75
|
-
<div className="flex-1 min-w-0">
|
|
76
|
-
<div className="text-sm font-medium">{toast.title}</div>
|
|
77
|
-
{toast.description && <div className="text-sm opacity-90 mt-1">{toast.description}</div>}
|
|
78
|
-
{toast.action && (
|
|
79
|
-
<button
|
|
80
|
-
onClick={toast.action.onClick}
|
|
81
|
-
className="text-sm font-medium text-current/80 hover:text-current mt-2 px-2 py-1 rounded-md hover:bg-white/10 transition-colors focus:outline-none focus:ring-2 focus:ring-current/50"
|
|
82
|
-
>
|
|
83
|
-
{toast.action.label}
|
|
84
|
-
</button>
|
|
85
|
-
)}
|
|
86
|
-
</div>
|
|
87
|
-
|
|
88
|
-
<button
|
|
89
|
-
onClick={() => removeToast(toast.id)}
|
|
90
|
-
className="flex-shrink-0 ml-2 p-1 rounded-full opacity-60 hover:opacity-100 hover:bg-black/10 dark:hover:bg-white/20 transition-all focus:outline-none focus:ring-2 focus:ring-current/50"
|
|
91
|
-
aria-label="关闭通知"
|
|
92
|
-
>
|
|
93
|
-
<svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
94
|
-
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" />
|
|
95
|
-
</svg>
|
|
96
|
-
</button>
|
|
97
|
-
</div>
|
|
98
|
-
);
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
export const Toaster: React.FC = () => {
|
|
102
|
-
const currentToasts = useStore(toasts);
|
|
103
|
-
|
|
104
|
-
if (currentToasts.length === 0) {
|
|
105
|
-
return null;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return (
|
|
109
|
-
<div className="fixed top-4 right-4 z-50 space-y-2 pointer-events-none">
|
|
110
|
-
{currentToasts.map((toast: Toast) => (
|
|
111
|
-
<div key={toast.id} className="pointer-events-auto animate-in slide-in-from-right-2 fade-in duration-200">
|
|
112
|
-
<ToastItem toast={toast} />
|
|
113
|
-
</div>
|
|
114
|
-
))}
|
|
115
|
-
</div>
|
|
116
|
-
);
|
|
117
|
-
};
|
package/src/sonner/index.ts
DELETED
package/src/sonner/toast.ts
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { atom } from "nanostores";
|
|
2
|
-
import { Toast, ToastType, ToastOptions } from "./types";
|
|
3
|
-
|
|
4
|
-
let toastCounter = 0;
|
|
5
|
-
|
|
6
|
-
export const toasts = atom<Toast[]>([]);
|
|
7
|
-
|
|
8
|
-
const createToast = (type: ToastType, title: string, description?: string, options?: ToastOptions): string => {
|
|
9
|
-
const id = `toast-${++toastCounter}`;
|
|
10
|
-
|
|
11
|
-
const toast: Toast = {
|
|
12
|
-
id,
|
|
13
|
-
type,
|
|
14
|
-
title,
|
|
15
|
-
description,
|
|
16
|
-
duration: options?.duration ?? 4000,
|
|
17
|
-
action: options?.action,
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
toasts.set([...toasts.get(), toast]);
|
|
21
|
-
|
|
22
|
-
// Auto remove after duration
|
|
23
|
-
if (toast.duration && toast.duration > 0) {
|
|
24
|
-
setTimeout(() => {
|
|
25
|
-
removeToast(id);
|
|
26
|
-
}, toast.duration);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
return id;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export const toast = {
|
|
33
|
-
success: (title: string, description?: string, options?: ToastOptions) => createToast("success", title, description, options),
|
|
34
|
-
|
|
35
|
-
error: (title: string, description?: string, options?: ToastOptions) => createToast("error", title, description, options),
|
|
36
|
-
|
|
37
|
-
warning: (title: string, description?: string, options?: ToastOptions) => createToast("warning", title, description, options),
|
|
38
|
-
|
|
39
|
-
info: (title: string, description?: string, options?: ToastOptions) => createToast("info", title, description, options),
|
|
40
|
-
|
|
41
|
-
custom: (type: ToastType, title: string, description?: string, options?: ToastOptions) => createToast(type, title, description, options),
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
export const removeToast = (id: string) => {
|
|
45
|
-
toasts.set(toasts.get().filter((toast) => toast.id !== id));
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export const clearToasts = () => {
|
|
49
|
-
toasts.set([]);
|
|
50
|
-
};
|
package/src/sonner/types.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export type ToastType = "success" | "error" | "warning" | "info";
|
|
2
|
-
|
|
3
|
-
export interface Toast {
|
|
4
|
-
id: string;
|
|
5
|
-
type: ToastType;
|
|
6
|
-
title: string;
|
|
7
|
-
description?: string;
|
|
8
|
-
duration?: number;
|
|
9
|
-
action?: {
|
|
10
|
-
label: string;
|
|
11
|
-
onClick: () => void;
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface ToastOptions {
|
|
16
|
-
duration?: number;
|
|
17
|
-
action?: {
|
|
18
|
-
label: string;
|
|
19
|
-
onClick: () => void;
|
|
20
|
-
};
|
|
21
|
-
}
|