@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.
Files changed (434) hide show
  1. package/components.json +24 -0
  2. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  3. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  4. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  5. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  6. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  7. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  8. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  9. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  10. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  11. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  12. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  13. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  14. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  15. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  16. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  17. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  18. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  19. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  20. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  21. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  22. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  23. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  24. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  25. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  26. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  27. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  28. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  29. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  30. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  31. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  32. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  33. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  34. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  35. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  36. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  37. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  38. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  39. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  40. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  41. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  42. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  43. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  44. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  45. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  46. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  47. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  48. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  49. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  50. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  51. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  52. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  53. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  54. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  55. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  56. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  57. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  58. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  59. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  60. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  61. package/dist/assets/abap-BdImnpbu.js +1 -0
  62. package/dist/assets/actionscript-3-CfeIJUat.js +1 -0
  63. package/dist/assets/ada-bCR0ucgS.js +1 -0
  64. package/dist/assets/andromeeda-C-Jbm3Hp.js +1 -0
  65. package/dist/assets/angular-html-Bbf3ZyxA.js +1 -0
  66. package/dist/assets/angular-ts-C26w9mnW.js +1 -0
  67. package/dist/assets/apache-Pmp26Uib.js +1 -0
  68. package/dist/assets/apex-C7Pw0Ztw.js +1 -0
  69. package/dist/assets/apl-e980N3t4.js +1 -0
  70. package/dist/assets/applescript-Co6uUVPk.js +1 -0
  71. package/dist/assets/ara-BRHolxvo.js +1 -0
  72. package/dist/assets/arc-CGVbGqUF.js +1 -0
  73. package/dist/assets/architectureDiagram-VXUJARFQ-CqtrDEw9.js +36 -0
  74. package/dist/assets/asciidoc-Dv7Oe6Be.js +1 -0
  75. package/dist/assets/asm-D_Q5rh1f.js +1 -0
  76. package/dist/assets/astro-CjFzhNUq.js +1 -0
  77. package/dist/assets/aurora-x-D-2ljcwZ.js +1 -0
  78. package/dist/assets/awk-DMzUqQB5.js +1 -0
  79. package/dist/assets/ayu-dark-Cv9koXgw.js +1 -0
  80. package/dist/assets/ballerina-BFfxhgS-.js +1 -0
  81. package/dist/assets/bat-BkioyH1T.js +1 -0
  82. package/dist/assets/beancount-BoKiGodi.js +1 -0
  83. package/dist/assets/berry-D08WgyRC.js +1 -0
  84. package/dist/assets/bibtex-CHM0blh-.js +1 -0
  85. package/dist/assets/bicep-6nHXG8SA.js +1 -0
  86. package/dist/assets/blade-B2ZbN0F_.js +1 -0
  87. package/dist/assets/blockDiagram-VD42YOAC-CNqe-K1B.js +122 -0
  88. package/dist/assets/bsl-BO_Y6i37.js +1 -0
  89. package/dist/assets/c-BIGW1oBm.js +1 -0
  90. package/dist/assets/c4Diagram-YG6GDRKO-CPTzKGRp.js +10 -0
  91. package/dist/assets/cadence-D2CYqzqI.js +1 -0
  92. package/dist/assets/cairo-KRGpt6FW.js +1 -0
  93. package/dist/assets/catppuccin-frappe-BBxmzUt6.js +1 -0
  94. package/dist/assets/catppuccin-latte-Jep7L2Wt.js +1 -0
  95. package/dist/assets/catppuccin-macchiato-CIUZ1G5V.js +1 -0
  96. package/dist/assets/catppuccin-mocha-NBseiqgx.js +1 -0
  97. package/dist/assets/channel-CbJkpW4g.js +1 -0
  98. package/dist/assets/chunk-4BX2VUAB-CnFclA68.js +1 -0
  99. package/dist/assets/chunk-55IACEB6-CVyjVz79.js +1 -0
  100. package/dist/assets/chunk-B4BG7PRW-DiGvJtfO.js +165 -0
  101. package/dist/assets/chunk-DI55MBZ5-CiqWzq60.js +220 -0
  102. package/dist/assets/chunk-FMBD7UC4-KfYlm8ba.js +15 -0
  103. package/dist/assets/chunk-QN33PNHL-Bwbc5Dxk.js +1 -0
  104. package/dist/assets/chunk-QZHKN3VN-DlQbvjLB.js +1 -0
  105. package/dist/assets/chunk-TZMSLE5B-6_Y4HlEU.js +1 -0
  106. package/dist/assets/clarity-CHh-QcGE.js +1 -0
  107. package/dist/assets/classDiagram-2ON5EDUG--F4r2fzQ.js +1 -0
  108. package/dist/assets/classDiagram-v2-WZHVMYZB--F4r2fzQ.js +1 -0
  109. package/dist/assets/clojure-P80f7IUj.js +1 -0
  110. package/dist/assets/clone-CxJednSn.js +1 -0
  111. package/dist/assets/cmake-D1j8_8rp.js +1 -0
  112. package/dist/assets/cobol-DwXMNnPA.js +1 -0
  113. package/dist/assets/codeowners-Bp6g37R7.js +1 -0
  114. package/dist/assets/codeql-DsOJ9woJ.js +1 -0
  115. package/dist/assets/coffee-JUOWOZUj.js +1 -0
  116. package/dist/assets/common-lisp-Cg-RD9OK.js +1 -0
  117. package/dist/assets/coq-DkFqJrB1.js +1 -0
  118. package/dist/assets/cose-bilkent-S5V4N54A-BL_xZw_z.js +1 -0
  119. package/dist/assets/cpp-CofmeUqb.js +1 -0
  120. package/dist/assets/crystal-DVs0tusA.js +1 -0
  121. package/dist/assets/csharp-CHadp7IV.js +1 -0
  122. package/dist/assets/css-DPfMkruS.js +1 -0
  123. package/dist/assets/csv-fuZLfV_i.js +1 -0
  124. package/dist/assets/cue-D82EKSYY.js +1 -0
  125. package/dist/assets/cypher-COkxafJQ.js +1 -0
  126. package/dist/assets/cytoscape.esm-BlPLnP8k.js +331 -0
  127. package/dist/assets/d-85-TOEBH.js +1 -0
  128. package/dist/assets/dagre-6UL2VRFP-CKK6NwPE.js +4 -0
  129. package/dist/assets/dark-plus-C3mMm8J8.js +1 -0
  130. package/dist/assets/dart-CF10PKvl.js +1 -0
  131. package/dist/assets/dax-CEL-wOlO.js +1 -0
  132. package/dist/assets/defaultLocale-C4B-KCzX.js +1 -0
  133. package/dist/assets/desktop-BmXAJ9_W.js +1 -0
  134. package/dist/assets/diagram-PSM6KHXK-D77jB3aN.js +24 -0
  135. package/dist/assets/diagram-QEK2KX5R-C3V63KEf.js +43 -0
  136. package/dist/assets/diagram-S2PKOQOG-8vXvyFcA.js +24 -0
  137. package/dist/assets/diff-D97Zzqfu.js +1 -0
  138. package/dist/assets/docker-BcOcwvcX.js +1 -0
  139. package/dist/assets/dotenv-Da5cRb03.js +1 -0
  140. package/dist/assets/dracula-BzJJZx-M.js +1 -0
  141. package/dist/assets/dracula-soft-BXkSAIEj.js +1 -0
  142. package/dist/assets/dream-maker-BtqSS_iP.js +1 -0
  143. package/dist/assets/edge-CKszZCnI.js +1 -0
  144. package/dist/assets/elixir-Cc7HHYVZ.js +1 -0
  145. package/dist/assets/elm-DbKCFpqz.js +1 -0
  146. package/dist/assets/emacs-lisp-C9XAeP06.js +1 -0
  147. package/dist/assets/erDiagram-Q2GNP2WA-BvdZN7ll.js +60 -0
  148. package/dist/assets/erb-C7QrGF_t.js +1 -0
  149. package/dist/assets/erlang-DsQrWhSR.js +1 -0
  150. package/dist/assets/everforest-dark-BgDCqdQA.js +1 -0
  151. package/dist/assets/everforest-light-C8M2exoo.js +1 -0
  152. package/dist/assets/fennel-BYunw83y.js +1 -0
  153. package/dist/assets/fish-Bl2oy6fF.js +1 -0
  154. package/dist/assets/flowDiagram-NV44I4VS-Cmn4g1Tt.js +162 -0
  155. package/dist/assets/fluent-C4IJs8-o.js +1 -0
  156. package/dist/assets/fortran-fixed-form-BZjJHVRy.js +1 -0
  157. package/dist/assets/fortran-free-form-D22FLkUw.js +1 -0
  158. package/dist/assets/fsharp-CufqaIoK.js +1 -0
  159. package/dist/assets/ganttDiagram-LVOFAZNH-BtK3XTtk.js +267 -0
  160. package/dist/assets/gdresource-B7Tvp0Sc.js +1 -0
  161. package/dist/assets/gdscript-DTMYz4Jt.js +1 -0
  162. package/dist/assets/gdshader-DkwncUOv.js +1 -0
  163. package/dist/assets/genie-D0YGMca9.js +1 -0
  164. package/dist/assets/gherkin-DyxjwDmM.js +1 -0
  165. package/dist/assets/git-commit-F4YmCXRG.js +1 -0
  166. package/dist/assets/git-rebase-r7XF79zn.js +1 -0
  167. package/dist/assets/gitGraphDiagram-NY62KEGX-Ckd-OTVj.js +65 -0
  168. package/dist/assets/github-dark-DHJKELXO.js +1 -0
  169. package/dist/assets/github-dark-default-Cuk6v7N8.js +1 -0
  170. package/dist/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
  171. package/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
  172. package/dist/assets/github-light-DAi9KRSo.js +1 -0
  173. package/dist/assets/github-light-default-D7oLnXFd.js +1 -0
  174. package/dist/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
  175. package/dist/assets/gleam-BspZqrRM.js +1 -0
  176. package/dist/assets/glimmer-js-Dz9X99Cm.js +1 -0
  177. package/dist/assets/glimmer-ts-aQ3p29eY.js +1 -0
  178. package/dist/assets/glsl-DplSGwfg.js +1 -0
  179. package/dist/assets/gnuplot-DdkO51Og.js +1 -0
  180. package/dist/assets/go-Dn2_MT6a.js +1 -0
  181. package/dist/assets/graph-C8xl-aUs.js +1 -0
  182. package/dist/assets/graphql-Caa12_AY.js +1 -0
  183. package/dist/assets/groovy-gcz8RCvz.js +1 -0
  184. package/dist/assets/gruvbox-dark-hard-D1uDOp7C.js +1 -0
  185. package/dist/assets/gruvbox-dark-medium-DkhsQLT2.js +1 -0
  186. package/dist/assets/gruvbox-dark-soft-CcyOm34o.js +1 -0
  187. package/dist/assets/gruvbox-light-hard-DKzvysjW.js +1 -0
  188. package/dist/assets/gruvbox-light-medium-DPcUKYIF.js +1 -0
  189. package/dist/assets/gruvbox-light-soft-CGqH5EJj.js +1 -0
  190. package/dist/assets/hack-D_o3P2UH.js +1 -0
  191. package/dist/assets/haml-AZXGPtNI.js +1 -0
  192. package/dist/assets/handlebars-YebKLiTq.js +1 -0
  193. package/dist/assets/haskell-Df6bDoY_.js +1 -0
  194. package/dist/assets/haxe-CzTSHFRz.js +1 -0
  195. package/dist/assets/hcl-BWvSN4gD.js +1 -0
  196. package/dist/assets/hjson-D5-asLiD.js +1 -0
  197. package/dist/assets/hlsl-D3lLCCz7.js +1 -0
  198. package/dist/assets/houston-DnULxvSX.js +1 -0
  199. package/dist/assets/html-B8pBdPMQ.js +1 -0
  200. package/dist/assets/html-derivative-ZQ8onl8Z.js +1 -0
  201. package/dist/assets/http-C38VWM-o.js +1 -0
  202. package/dist/assets/hxml-Bvhsp5Yf.js +1 -0
  203. package/dist/assets/hy-DFXneXwc.js +1 -0
  204. package/dist/assets/imba-DGztddWO.js +1 -0
  205. package/dist/assets/index-BpNQAzdK.css +1 -0
  206. package/dist/assets/index-EdVqpCiz.js +835 -0
  207. package/dist/assets/infoDiagram-F6ZHWCRC-Z0X_yr7r.js +2 -0
  208. package/dist/assets/ini-BEwlwnbL.js +1 -0
  209. package/dist/assets/init-Gi6I4Gst.js +1 -0
  210. package/dist/assets/isUndefined-Daq2Snc8.js +1 -0
  211. package/dist/assets/java-CylS5w8V.js +1 -0
  212. package/dist/assets/javascript-BMMyXqK5.js +1 -0
  213. package/dist/assets/jinja-BJmZiE_F.js +1 -0
  214. package/dist/assets/jison-BCRtk9Os.js +1 -0
  215. package/dist/assets/journeyDiagram-XKPGCS4Q-Ce4GbjgA.js +139 -0
  216. package/dist/assets/json-Cp-IABpG.js +1 -0
  217. package/dist/assets/json5-C9tS-k6U.js +1 -0
  218. package/dist/assets/jsonc-Des-eS-w.js +1 -0
  219. package/dist/assets/jsonl-DcaNXYhu.js +1 -0
  220. package/dist/assets/jsonnet-DFQXde-d.js +1 -0
  221. package/dist/assets/jssm-C2t-YnRu.js +1 -0
  222. package/dist/assets/jsx-g9-lgVsj.js +1 -0
  223. package/dist/assets/julia-353pQ8cl.js +1 -0
  224. package/dist/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
  225. package/dist/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
  226. package/dist/assets/kanagawa-wave-DWedfzmr.js +1 -0
  227. package/dist/assets/kanban-definition-3W4ZIXB7-jKKX8cF-.js +89 -0
  228. package/dist/assets/kotlin-BdnUsdx6.js +1 -0
  229. package/dist/assets/kusto-BvAqAH-y.js +1 -0
  230. package/dist/assets/laserwave-DUszq2jm.js +1 -0
  231. package/dist/assets/latex-CPEt12BK.js +1 -0
  232. package/dist/assets/layout-CehWuyQv.js +1 -0
  233. package/dist/assets/lean-qliWkHmV.js +1 -0
  234. package/dist/assets/less-B1dDrJ26.js +1 -0
  235. package/dist/assets/light-plus-B7mTdjB0.js +1 -0
  236. package/dist/assets/linear-Do6UjTtT.js +1 -0
  237. package/dist/assets/liquid-DFk8BABL.js +1 -0
  238. package/dist/assets/llvm-D32k8WzR.js +1 -0
  239. package/dist/assets/log-2UxHyX5q.js +1 -0
  240. package/dist/assets/logo-BtOb2qkB.js +1 -0
  241. package/dist/assets/lua-BbnMAYS6.js +1 -0
  242. package/dist/assets/luau-CXu1NL6O.js +1 -0
  243. package/dist/assets/make-CHLpvVh8.js +1 -0
  244. package/dist/assets/markdown-Cvjx9yec.js +1 -0
  245. package/dist/assets/marko-BM38lbjI.js +1 -0
  246. package/dist/assets/material-theme-D5KoaKCx.js +1 -0
  247. package/dist/assets/material-theme-darker-BfHTSMKl.js +1 -0
  248. package/dist/assets/material-theme-lighter-B0m2ddpp.js +1 -0
  249. package/dist/assets/material-theme-ocean-CyktbL80.js +1 -0
  250. package/dist/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
  251. package/dist/assets/matlab-D7o27uSR.js +1 -0
  252. package/dist/assets/mdc-DvHMhoCT.js +1 -0
  253. package/dist/assets/mdx-Cmh6b_Ma.js +1 -0
  254. package/dist/assets/mermaid-DKYwYmdq.js +1 -0
  255. package/dist/assets/mermaid.core-DboFnVDg.js +197 -0
  256. package/dist/assets/min-CoD9aTVe.js +1 -0
  257. package/dist/assets/min-dark-CafNBF8u.js +1 -0
  258. package/dist/assets/min-light-CTRr51gU.js +1 -0
  259. package/dist/assets/mindmap-definition-VGOIOE7T-DHqc52RG.js +68 -0
  260. package/dist/assets/mipsasm-CKIfxQSi.js +1 -0
  261. package/dist/assets/mojo-1DNp92w6.js +1 -0
  262. package/dist/assets/monokai-D4h5O-jR.js +1 -0
  263. package/dist/assets/move-DNEoBllO.js +1 -0
  264. package/dist/assets/narrat-DRg8JJMk.js +1 -0
  265. package/dist/assets/nextflow-CUEJCptM.js +1 -0
  266. package/dist/assets/nginx-DknmC5AR.js +1 -0
  267. package/dist/assets/night-owl-C39BiMTA.js +1 -0
  268. package/dist/assets/nim-BZI_8mFl.js +1 -0
  269. package/dist/assets/nix-BepWV7mh.js +1 -0
  270. package/dist/assets/nord-Ddv68eIx.js +1 -0
  271. package/dist/assets/nushell-ChH_ziBE.js +1 -0
  272. package/dist/assets/objective-c-DXmwc3jG.js +1 -0
  273. package/dist/assets/objective-cpp-CLxacb5B.js +1 -0
  274. package/dist/assets/ocaml-C0hk2d4L.js +1 -0
  275. package/dist/assets/one-dark-pro-DVMEJ2y_.js +1 -0
  276. package/dist/assets/one-light-PoHY5YXO.js +1 -0
  277. package/dist/assets/ordinal-Cboi1Yqb.js +1 -0
  278. package/dist/assets/pascal-D93ZcfNL.js +1 -0
  279. package/dist/assets/perl-g0D2lH3a.js +1 -0
  280. package/dist/assets/php-Gk5eUrPQ.js +1 -0
  281. package/dist/assets/pieDiagram-ADFJNKIX-bG2J_WkI.js +30 -0
  282. package/dist/assets/plastic-3e1v2bzS.js +1 -0
  283. package/dist/assets/plsql-ChMvpjG-.js +1 -0
  284. package/dist/assets/po-BTJTHyun.js +1 -0
  285. package/dist/assets/poimandres-CS3Unz2-.js +1 -0
  286. package/dist/assets/polar-C0HS_06l.js +1 -0
  287. package/dist/assets/postcss-CXtECtnM.js +1 -0
  288. package/dist/assets/powerquery-CEu0bR-o.js +1 -0
  289. package/dist/assets/powershell-Dpen1YoG.js +1 -0
  290. package/dist/assets/prisma-Dd19v3D-.js +1 -0
  291. package/dist/assets/prolog-CbFg5uaA.js +1 -0
  292. package/dist/assets/proto-DyJlTyXw.js +1 -0
  293. package/dist/assets/pug-Ch9lOoSd.js +1 -0
  294. package/dist/assets/puppet-BMWR74SV.js +1 -0
  295. package/dist/assets/purescript-CklMAg4u.js +1 -0
  296. package/dist/assets/python-B6aJPvgy.js +1 -0
  297. package/dist/assets/qml-CHzV51_b.js +1 -0
  298. package/dist/assets/qmldir-C8lEn-DE.js +1 -0
  299. package/dist/assets/qss-IeuSbFQv.js +1 -0
  300. package/dist/assets/quadrantDiagram-AYHSOK5B-CDEBrcZS.js +7 -0
  301. package/dist/assets/r-DiinP2Uv.js +1 -0
  302. package/dist/assets/racket-BqYA7rlc.js +1 -0
  303. package/dist/assets/raku-DXvB9xmW.js +1 -0
  304. package/dist/assets/razor-CNXmhs1n.js +1 -0
  305. package/dist/assets/red-bN70gL4F.js +1 -0
  306. package/dist/assets/reg-C-SQnVFl.js +1 -0
  307. package/dist/assets/regexp-CDVJQ6XC.js +1 -0
  308. package/dist/assets/rel-C3B-1QV4.js +1 -0
  309. package/dist/assets/requirementDiagram-UZGBJVZJ-D88jc_6e.js +64 -0
  310. package/dist/assets/riscv-BM1_JUlF.js +1 -0
  311. package/dist/assets/rose-pine-BHrmToEH.js +1 -0
  312. package/dist/assets/rose-pine-dawn-CnK8MTSM.js +1 -0
  313. package/dist/assets/rose-pine-moon-NleAzG8P.js +1 -0
  314. package/dist/assets/rst-DKdxLoXm.js +1 -0
  315. package/dist/assets/ruby-W1VRIm2Q.js +1 -0
  316. package/dist/assets/rust-B1yitclQ.js +1 -0
  317. package/dist/assets/sankeyDiagram-TZEHDZUN-C93LzfJ0.js +10 -0
  318. package/dist/assets/sas-cz2c8ADy.js +1 -0
  319. package/dist/assets/sass-Cj5Yp3dK.js +1 -0
  320. package/dist/assets/scala-C151Ov-r.js +1 -0
  321. package/dist/assets/scheme-C98Dy4si.js +1 -0
  322. package/dist/assets/scss-OYdSNvt2.js +1 -0
  323. package/dist/assets/sdbl-DVxCFoDh.js +1 -0
  324. package/dist/assets/sequenceDiagram-WL72ISMW-DjpL4ZUq.js +145 -0
  325. package/dist/assets/shaderlab-Dg9Lc6iA.js +1 -0
  326. package/dist/assets/shellscript-Yzrsuije.js +1 -0
  327. package/dist/assets/shellsession-BADoaaVG.js +1 -0
  328. package/dist/assets/slack-dark-BthQWCQV.js +1 -0
  329. package/dist/assets/slack-ochin-DqwNpetd.js +1 -0
  330. package/dist/assets/smalltalk-BERRCDM3.js +1 -0
  331. package/dist/assets/snazzy-light-Bw305WKR.js +1 -0
  332. package/dist/assets/solarized-dark-DXbdFlpD.js +1 -0
  333. package/dist/assets/solarized-light-L9t79GZl.js +1 -0
  334. package/dist/assets/solidity-BbcW6ACK.js +1 -0
  335. package/dist/assets/soy-B_7ge1HE.js +1 -0
  336. package/dist/assets/sparql-rVzFXLq3.js +1 -0
  337. package/dist/assets/splunk-BtCnVYZw.js +1 -0
  338. package/dist/assets/sql-BLtJtn59.js +1 -0
  339. package/dist/assets/ssh-config-_ykCGR6B.js +1 -0
  340. package/dist/assets/stata-BH5u7GGu.js +1 -0
  341. package/dist/assets/stateDiagram-FKZM4ZOC-Cy4Qc8UW.js +1 -0
  342. package/dist/assets/stateDiagram-v2-4FDKWEC3-wfRa7ccT.js +1 -0
  343. package/dist/assets/stylus-BEDo0Tqx.js +1 -0
  344. package/dist/assets/svelte-Dt5jNKfG.js +1 -0
  345. package/dist/assets/swift-Dg5xB15N.js +1 -0
  346. package/dist/assets/synthwave-84-CbfX1IO0.js +1 -0
  347. package/dist/assets/system-verilog-CnnmHF94.js +1 -0
  348. package/dist/assets/systemd-4A_iFExJ.js +1 -0
  349. package/dist/assets/talonscript-CkByrt1z.js +1 -0
  350. package/dist/assets/tasl-QIJgUcNo.js +1 -0
  351. package/dist/assets/tcl-dwOrl1Do.js +1 -0
  352. package/dist/assets/templ-0CNLO7il.js +1 -0
  353. package/dist/assets/terraform-BETggiCN.js +1 -0
  354. package/dist/assets/tex-B5i3u9ba.js +1 -0
  355. package/dist/assets/timeline-definition-IT6M3QCI-DNVlI21w.js +61 -0
  356. package/dist/assets/tokyo-night-hegEt444.js +1 -0
  357. package/dist/assets/toml-vGWfd6FD.js +1 -0
  358. package/dist/assets/treemap-KMMF4GRG-Cf7rPol4.js +128 -0
  359. package/dist/assets/ts-tags-B9XN6NYQ.js +1 -0
  360. package/dist/assets/tsv-B_m7g4N7.js +1 -0
  361. package/dist/assets/tsx-COt5Ahok.js +1 -0
  362. package/dist/assets/turtle-BsS91CYL.js +1 -0
  363. package/dist/assets/twig-B_ULif71.js +1 -0
  364. package/dist/assets/typescript-DlfHMoPT.js +1 -0
  365. package/dist/assets/typespec-Df68jz8_.js +1 -0
  366. package/dist/assets/typst-DHCkPAjA.js +1 -0
  367. package/dist/assets/v-DljmTZ5-.js +1 -0
  368. package/dist/assets/vala-CsfeWuGM.js +1 -0
  369. package/dist/assets/vb-D17OF-Vu.js +1 -0
  370. package/dist/assets/verilog-BQ8w6xss.js +1 -0
  371. package/dist/assets/vesper-DU1UobuO.js +1 -0
  372. package/dist/assets/vhdl-CeAyd5Ju.js +1 -0
  373. package/dist/assets/viml-CJc9bBzg.js +1 -0
  374. package/dist/assets/vitesse-black-Bkuqu6BP.js +1 -0
  375. package/dist/assets/vitesse-dark-D0r3Knsf.js +1 -0
  376. package/dist/assets/vitesse-light-CVO1_9PV.js +1 -0
  377. package/dist/assets/vue-BEetzCYT.js +1 -0
  378. package/dist/assets/vue-html-BsD9fJC1.js +1 -0
  379. package/dist/assets/vue-vine-CCdTUzyM.js +1 -0
  380. package/dist/assets/vyper-CDx5xZoG.js +1 -0
  381. package/dist/assets/wasm-CG6Dc4jp.js +1 -0
  382. package/dist/assets/wasm-MzD3tlZU.js +1 -0
  383. package/dist/assets/wenyan-BV7otONQ.js +1 -0
  384. package/dist/assets/wgsl-Dx-B1_4e.js +1 -0
  385. package/dist/assets/wikitext-BhOHFoWU.js +1 -0
  386. package/dist/assets/wit-5i3qLPDT.js +1 -0
  387. package/dist/assets/wolfram-lXgVvXCa.js +1 -0
  388. package/dist/assets/xml-sdJ4AIDG.js +1 -0
  389. package/dist/assets/xsl-CtQFsRM5.js +1 -0
  390. package/dist/assets/xychartDiagram-PRI3JC2R-CRudqT7y.js +7 -0
  391. package/dist/assets/yaml-Buea-lGh.js +1 -0
  392. package/dist/assets/zenscript-DVFEvuxE.js +1 -0
  393. package/dist/assets/zig-VOosw3JB.js +1 -0
  394. package/dist/index.html +2 -2
  395. package/package.json +20 -12
  396. package/src/artifacts/ArtifactViewer.tsx +22 -153
  397. package/src/chat/Chat.tsx +7 -9
  398. package/src/chat/components/MessageAI.tsx +2 -3
  399. package/src/chat/components/MessageBox.tsx +2 -2
  400. package/src/chat/components/MessageTool.tsx +4 -17
  401. package/src/chat/store/index.ts +0 -21
  402. package/src/chat/tools/create_artifacts.tsx +10 -26
  403. package/src/components/ai-elements/code-block.tsx +148 -0
  404. package/src/components/ai-elements/response.tsx +22 -0
  405. package/src/components/ui/button.tsx +60 -0
  406. package/src/components/ui/sonner.tsx +38 -0
  407. package/src/graph/index.tsx +1 -1
  408. package/src/index.css +121 -0
  409. package/src/index.ts +1 -2
  410. package/src/lib/utils.ts +6 -0
  411. package/src/settings/LoginSettings.tsx +1 -1
  412. package/src/settings/SettingPanel.tsx +1 -1
  413. package/test/main.tsx +0 -2
  414. package/tsconfig.json +5 -1
  415. package/tsconfig.node.json +1 -1
  416. package/vite.config.ts +3 -3
  417. package/dist/assets/index-CRq7a-Q4.css +0 -1
  418. package/dist/assets/index-IirYMaE5.js +0 -280
  419. package/src/artifacts/ArtifactsContext.tsx +0 -99
  420. package/src/artifacts/SourceCodeViewer.tsx +0 -15
  421. package/src/chat/components/JSONViewer.tsx +0 -18
  422. package/src/chat/components/JsonToMessage/JsonToMessage.tsx +0 -120
  423. package/src/chat/components/JsonToMessage/JsonToMessageButton.tsx +0 -20
  424. package/src/chat/components/JsonToMessage/index.tsx +0 -5
  425. package/src/chat/context/ChatContext.tsx +0 -83
  426. package/src/memory/BaseDB.ts +0 -92
  427. package/src/memory/db.ts +0 -232
  428. package/src/memory/fulltext-search.ts +0 -191
  429. package/src/memory/index.ts +0 -4
  430. package/src/memory/tools.ts +0 -170
  431. package/src/sonner/Toaster.tsx +0 -117
  432. package/src/sonner/index.ts +0 -3
  433. package/src/sonner/toast.ts +0 -50
  434. package/src/sonner/types.ts +0 -21
@@ -1,99 +0,0 @@
1
- import React, { createContext, useContext, useState, ReactNode, useEffect } from "react";
2
- import { useChat } from "@langgraph-js/sdk/react";
3
- import { Message } from "@langgraph-js/sdk";
4
-
5
- interface Artifact {
6
- id: string;
7
- code: string;
8
- filename: string;
9
- filetype: string;
10
- version: number;
11
- }
12
-
13
- interface ArtifactsContextType {
14
- artifacts: Artifact[];
15
- currentArtifact: Artifact | null;
16
- setCurrentArtifactById: (id: string) => void;
17
- getArtifactVersions: (filename: string) => Artifact[];
18
- showArtifact: boolean;
19
- setShowArtifact: (show: boolean) => void;
20
- }
21
-
22
- const ArtifactsContext = createContext<ArtifactsContextType>({
23
- artifacts: [],
24
- currentArtifact: null,
25
- setCurrentArtifactById: () => {},
26
- getArtifactVersions: () => [],
27
- showArtifact: false,
28
- setShowArtifact: () => {},
29
- });
30
-
31
- export const useArtifacts = () => useContext(ArtifactsContext);
32
-
33
- interface ArtifactsProviderProps {
34
- children: ReactNode;
35
- }
36
-
37
- export const ArtifactsProvider: React.FC<ArtifactsProviderProps> = ({ children }) => {
38
- const [artifacts, setArtifacts] = useState<Artifact[]>([]);
39
- const [showArtifact, setShowArtifact] = useState(false);
40
- const { renderMessages } = useChat();
41
- const [currentArtifact, setCurrentArtifact] = useState<Artifact | null>(null);
42
-
43
- // 获取指定文件名的所有版本
44
- const getArtifactVersions = (filename: string) => {
45
- return artifacts.filter((artifact) => artifact.filename === filename).sort((a, b) => a.version - b.version);
46
- };
47
-
48
- useEffect(() => {
49
- if (!renderMessages) return;
50
-
51
- const createArtifacts = renderMessages.filter((message) => message.type === "tool").filter((message) => message.name === "create_artifacts");
52
-
53
- // 创建文件名到最新版本的映射
54
- const filenameToLatestVersion = new Map<string, number>();
55
-
56
- // 处理每个 artifact,分配版本号
57
- const processedArtifacts = createArtifacts.map((message) => {
58
- const content = JSON.parse(message.tool_input as string);
59
- const filename = content.filename;
60
-
61
- // 获取当前文件名的最新版本号
62
- const currentVersion = filenameToLatestVersion.get(filename) || 0;
63
- const newVersion = currentVersion + 1;
64
-
65
- // 更新最新版本号
66
- filenameToLatestVersion.set(filename, newVersion);
67
-
68
- return {
69
- id: message.id!,
70
- code: content.code,
71
- filename: filename,
72
- version: newVersion,
73
- filetype: content.filetype,
74
- };
75
- });
76
-
77
- setArtifacts(processedArtifacts);
78
- }, [renderMessages]);
79
-
80
- const setCurrentArtifactById = (id: string) => {
81
- setShowArtifact(true);
82
- setCurrentArtifact(artifacts.find((artifact) => artifact.id === id) || null);
83
- };
84
-
85
- return (
86
- <ArtifactsContext.Provider
87
- value={{
88
- artifacts,
89
- currentArtifact,
90
- setCurrentArtifactById,
91
- getArtifactVersions,
92
- showArtifact,
93
- setShowArtifact,
94
- }}
95
- >
96
- {children}
97
- </ArtifactsContext.Provider>
98
- );
99
- };
@@ -1,15 +0,0 @@
1
- import { useArtifacts } from "./ArtifactsContext";
2
-
3
- export const SourceCodeViewer: React.FC = () => {
4
- const { currentArtifact } = useArtifacts();
5
-
6
- if (!currentArtifact) {
7
- return <div className="h-full w-full flex items-center justify-center text-gray-500">请选择一个文件</div>;
8
- }
9
-
10
- return (
11
- <div className="h-full w-full overflow-auto">
12
- <pre>{currentArtifact.code}</pre>
13
- </div>
14
- );
15
- };
@@ -1,18 +0,0 @@
1
- export const JSONViewer = (props: { data: any }) => {
2
- return (
3
- /** @ts-ignore */
4
- <andypf-json-viewer
5
- indent="4"
6
- expanded="4"
7
- theme="default-light"
8
- show-data-types="false"
9
- show-toolbar="false"
10
- expand-icon-type="circle"
11
- show-copy="true"
12
- show-size="true"
13
- data={JSON.stringify(props.data)}
14
- >
15
- {/* @ts-ignore */}
16
- </andypf-json-viewer>
17
- );
18
- };
@@ -1,120 +0,0 @@
1
- import React, { useState, useEffect } from "react";
2
- import { MessagesBox } from "../MessageBox";
3
- import { RenderMessage } from "@langgraph-js/sdk";
4
- import { X } from "lucide-react";
5
-
6
- interface JsonToMessageProps {
7
- isOpen: boolean;
8
- onClose: () => void;
9
- initialJson?: string | object;
10
- }
11
-
12
- const JsonToMessage: React.FC<JsonToMessageProps> = ({ isOpen, onClose, initialJson }) => {
13
- const [jsonString, setJsonString] = useState<string>("");
14
- const [error, setError] = useState<string | null>(null);
15
- const [previewMessages, setPreviewMessages] = useState<RenderMessage[]>([]);
16
-
17
- useEffect(() => {
18
- // 重置状态当弹窗打开时
19
- if (isOpen) {
20
- let initialJsonContent = "";
21
-
22
- if (initialJson) {
23
- if (typeof initialJson === "string") {
24
- initialJsonContent = initialJson;
25
- } else {
26
- try {
27
- initialJsonContent = JSON.stringify(initialJson, null, 2);
28
- } catch (e) {
29
- console.error("Failed to stringify initial JSON", e);
30
- initialJsonContent = "";
31
- }
32
- }
33
- } else {
34
- // 默认示例消息
35
- initialJsonContent = JSON.stringify([], null, 2);
36
- }
37
-
38
- setJsonString(initialJsonContent);
39
- setError(null);
40
-
41
- // 初始化时尝试解析
42
- try {
43
- updatePreview(initialJsonContent);
44
- } catch (e) {
45
- console.error("Failed to parse initial JSON", e);
46
- }
47
- }
48
- }, [isOpen, initialJson]);
49
-
50
- // 解析JSON并更新预览
51
- const updatePreview = (jsonInput: string) => {
52
- try {
53
- const parsedJson = JSON.parse(jsonInput);
54
- let message: RenderMessage[] = [];
55
- if (Array.isArray(parsedJson)) {
56
- message = parsedJson;
57
- } else {
58
- message = parsedJson.messages;
59
- }
60
- // 确保消息有必要的字段
61
- if (!Array.isArray(message)) {
62
- throw new Error("JSON 格式无效,请检查后重试");
63
- }
64
- setPreviewMessages(message);
65
- setError(null);
66
- } catch (e) {
67
- setError("JSON 格式无效,请检查后重试");
68
- console.error("Invalid JSON format:", e);
69
- }
70
- };
71
-
72
- // 当JSON输入变化时更新预览
73
- useEffect(() => {
74
- if (jsonString) {
75
- updatePreview(jsonString);
76
- }
77
- }, [jsonString]);
78
-
79
- if (!isOpen) {
80
- return null;
81
- }
82
-
83
- return (
84
- <div className="fixed inset-0 bg-black/50 flex items-center justify-center z-50">
85
- <div className="bg-white rounded-lg shadow-xl w-[90%] max-w-[1200px] h-[80vh] max-h-[800px] flex flex-col overflow-hidden">
86
- <div className="flex justify-between items-center p-4 border-b border-gray-200">
87
- <h2 className="text-xl font-semibold text-gray-900">JSON 消息预览</h2>
88
- <button onClick={onClose} className="p-1.5 text-gray-500 hover:text-gray-900 transition-colors rounded-lg hover:bg-gray-100">
89
- <X className="w-5 h-5" />
90
- </button>
91
- </div>
92
-
93
- <div className="flex flex-1 overflow-hidden">
94
- <div className="flex-1 p-4 flex flex-col border-r border-gray-200">
95
- <textarea
96
- value={jsonString}
97
- onChange={(e) => setJsonString(e.target.value)}
98
- rows={20}
99
- placeholder="输入JSON消息格式..."
100
- className="flex-1 font-mono text-sm p-3 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent resize-none"
101
- />
102
- {error && <p className="mt-2 text-sm text-red-600">{error}</p>}
103
- </div>
104
-
105
- <div className="flex-1 p-4 overflow-y-auto bg-gray-50">
106
- <div className="bg-white rounded-lg p-4 min-h-full">
107
- {previewMessages?.length > 0 ? (
108
- <MessagesBox renderMessages={previewMessages} collapsedTools={[]} toggleToolCollapse={() => {}} client={null as any} />
109
- ) : (
110
- <div className="flex items-center justify-center h-full text-gray-500 italic">请输入有效的JSON以查看消息预览</div>
111
- )}
112
- </div>
113
- </div>
114
- </div>
115
- </div>
116
- </div>
117
- );
118
- };
119
-
120
- export default JsonToMessage;
@@ -1,20 +0,0 @@
1
- import React, { useState } from "react";
2
- import JsonToMessage from "./JsonToMessage";
3
- import { FileJson } from "lucide-react";
4
-
5
- export const JsonToMessageButton: React.FC = () => {
6
- const [isOpen, setIsOpen] = useState(false);
7
-
8
- return (
9
- <>
10
- <button
11
- onClick={() => setIsOpen(true)}
12
- className="px-3 py-1.5 text-sm font-medium text-gray-700 bg-white border border-gray-200 rounded-lg hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 flex items-center gap-1.5"
13
- >
14
- <FileJson className="w-4 h-4" />
15
- JSON 消息
16
- </button>
17
- <JsonToMessage isOpen={isOpen} onClose={() => setIsOpen(false)} />
18
- </>
19
- );
20
- };
@@ -1,5 +0,0 @@
1
- import JsonToMessage from "./JsonToMessage";
2
- import { JsonToMessageButton } from "./JsonToMessageButton";
3
-
4
- export { JsonToMessage, JsonToMessageButton };
5
- export default JsonToMessage;
@@ -1,83 +0,0 @@
1
- import React, { createContext, useContext, useMemo, ReactNode, useEffect } from "react";
2
- import { createChatStore } from "@langgraph-js/sdk";
3
- import { UnionStore, useUnionStore } from "@langgraph-js/sdk";
4
- import { useStore } from "@nanostores/react";
5
-
6
- type ChatContextType = UnionStore<ReturnType<typeof createChatStore>>;
7
-
8
- const ChatContext = createContext<ChatContextType | undefined>(undefined);
9
-
10
- export const useChat = (): ChatContextType => {
11
- const context = useContext(ChatContext);
12
- if (!context) {
13
- throw new Error("useChat must be used within a ChatProvider");
14
- }
15
- return context;
16
- };
17
-
18
- interface ChatProviderProps {
19
- children: ReactNode;
20
- defaultAgent?: string;
21
- apiUrl?: string;
22
- defaultHeaders?: Record<string, string>;
23
- withCredentials?: boolean;
24
- showHistory?: boolean;
25
- showGraph?: boolean;
26
- onInitError?: (error: any, currentAgent: string) => void;
27
- }
28
-
29
- export const ChatProvider: React.FC<ChatProviderProps> = ({
30
- children,
31
- defaultAgent = "",
32
- apiUrl = "http://localhost:8123",
33
- defaultHeaders = {},
34
- withCredentials = false,
35
- showHistory = false,
36
- showGraph = false,
37
- onInitError,
38
- }) => {
39
- const store = useMemo(() => {
40
- const F = withCredentials
41
- ? (url: string, options: RequestInit) => {
42
- options.credentials = "include";
43
- return fetch(url, options);
44
- }
45
- : fetch;
46
-
47
- return createChatStore(
48
- defaultAgent,
49
- {
50
- apiUrl,
51
- defaultHeaders,
52
- callerOptions: {
53
- fetch: F,
54
- maxRetries: 1,
55
- },
56
- },
57
- {
58
- showHistory,
59
- showGraph,
60
- }
61
- );
62
- }, [defaultAgent, apiUrl, defaultHeaders, withCredentials, showHistory, showGraph]);
63
-
64
- const unionStore = useUnionStore(store, useStore);
65
-
66
- useEffect(() => {
67
- unionStore
68
- .initClient()
69
- .then((res) => {
70
- if (unionStore.showHistory) {
71
- unionStore.refreshHistoryList();
72
- }
73
- })
74
- .catch((err) => {
75
- console.error(err);
76
- if (onInitError) {
77
- onInitError(err, unionStore.currentAgent);
78
- }
79
- });
80
- }, [unionStore, onInitError]);
81
-
82
- return <ChatContext.Provider value={unionStore}>{children}</ChatContext.Provider>;
83
- };
@@ -1,92 +0,0 @@
1
- import { IDBPDatabase } from "idb";
2
-
3
- /**
4
- * 数据库记录的基本接口
5
- */
6
- export interface BaseRecord {
7
- id?: number;
8
- [key: string]: any;
9
- }
10
-
11
- /**
12
- * 数据库配置的基本接口
13
- */
14
- export interface BaseDBConfig {
15
- dbName: string;
16
- dbVersion: number;
17
- storeName: string;
18
- }
19
-
20
- /**
21
- * 数据库操作的抽象基类
22
- */
23
- export abstract class BaseDB<T extends BaseRecord> {
24
- protected isInitialized: boolean = false;
25
- protected config: BaseDBConfig;
26
-
27
- constructor(config: BaseDBConfig) {
28
- this.config = config;
29
- }
30
-
31
- /**
32
- * 初始化数据库
33
- */
34
- public abstract initialize(): Promise<void>;
35
-
36
- /**
37
- * 添加记录
38
- */
39
- public abstract insert(record: Partial<T>): Promise<number>;
40
-
41
- /**
42
- * 更新记录
43
- */
44
- public abstract update(id: number, record: Partial<T>): Promise<void>;
45
-
46
- /**
47
- * 删除记录
48
- */
49
- public abstract delete(id: number): Promise<void>;
50
-
51
- /**
52
- * 查询记录
53
- */
54
- public abstract query(
55
- query: string,
56
- options?: {
57
- prefix?: boolean;
58
- fields?: string[];
59
- limit?: number;
60
- fuzzy?: number;
61
- }
62
- ): Promise<T[]>;
63
-
64
- public abstract get(id: number): Promise<T | undefined>;
65
-
66
- /**
67
- * 获取所有记录
68
- */
69
- public abstract getAll(): Promise<T[]>;
70
- }
71
-
72
- // 定义向量类型
73
- export type Vector = number[];
74
- // 定义数据库记录类型
75
- export interface MemoryRecord extends BaseRecord {
76
- vector?: Vector | BigUint64Array;
77
- text: string;
78
- /**
79
- * 记忆存储的路径,与 Linux 文件系统一致
80
- * @example memory://user_id/path/to/memory
81
- */
82
- path: string;
83
- /**
84
- * 引用文档的 path
85
- */
86
- referencePath?: string;
87
- type: string;
88
- /**
89
- * 记忆的标签,用于检索
90
- */
91
- tags: string[];
92
- }
package/src/memory/db.ts DELETED
@@ -1,232 +0,0 @@
1
- import { openDB, DBSchema, IDBPDatabase } from "idb";
2
- import { BaseDB, BaseRecord, BaseDBConfig, MemoryRecord, Vector } from "./BaseDB";
3
-
4
- type BinaryVector = number[];
5
-
6
- // 定义数据库模式
7
- interface VecDBSchema extends DBSchema {
8
- vectors: {
9
- key: number;
10
- value: MemoryRecord;
11
- };
12
- }
13
-
14
- // 定义默认模型类型
15
- const defaultModel = "default";
16
-
17
- // 向量化文本的抽象基类
18
- abstract class TextVectorizer {
19
- protected model: string;
20
-
21
- constructor(model: string = defaultModel) {
22
- this.model = model;
23
- }
24
-
25
- abstract vectorize(text: string): Promise<Vector>;
26
- }
27
-
28
- class OpenAIVectorizer extends TextVectorizer {
29
- private apiKey: string;
30
- public apiEndpoint: string;
31
-
32
- constructor(model: string = "text-embedding-ada-002", { apiKey, apiEndpoint }: { apiKey: string; apiEndpoint: string }) {
33
- super(model);
34
- this.apiKey = apiKey;
35
- this.apiEndpoint = apiEndpoint;
36
- }
37
-
38
- async vectorize(text: string): Promise<Vector> {
39
- try {
40
- const response = await fetch(this.apiEndpoint, {
41
- method: "POST",
42
- headers: {
43
- "Content-Type": "application/json",
44
- Authorization: `Bearer ${this.apiKey}`,
45
- },
46
- body: JSON.stringify({
47
- input: text,
48
- model: this.model,
49
- }),
50
- });
51
-
52
- if (!response.ok) {
53
- throw new Error(`OpenAI API error: ${response.statusText}`);
54
- }
55
-
56
- const data = await response.json();
57
- return data.data[0].embedding;
58
- } catch (error) {
59
- throw new Error(`Error vectorizing text: ${error}`);
60
- }
61
- }
62
- }
63
- const cosineSimilarity = (vecA: Vector, vecB: Vector): number => {
64
- const dotProduct = vecA.reduce((sum: number, val: number, index: number) => sum + val * vecB[index], 0);
65
- const magnitudeA = Math.sqrt(vecA.reduce((sum: number, val: number) => sum + val * val, 0));
66
- const magnitudeB = Math.sqrt(vecB.reduce((sum: number, val: number) => sum + val * val, 0));
67
- return dotProduct / (magnitudeA * magnitudeB);
68
- };
69
-
70
- const binarizeVector = (vector: Vector, threshold: number | null = null): BinaryVector => {
71
- if (threshold === null) {
72
- const sorted = [...vector].sort((a, b) => a - b);
73
- const mid = Math.floor(sorted.length / 2);
74
- threshold = sorted.length % 2 === 0 ? (sorted[mid - 1] + sorted[mid]) / 2 : sorted[mid];
75
- }
76
- return vector.map((val: number) => (val >= threshold! ? 1 : 0));
77
- };
78
-
79
- interface VecDBConfig extends BaseDBConfig {
80
- vectorizer: TextVectorizer;
81
- }
82
-
83
- interface QueryOptions {
84
- limit?: number;
85
- }
86
-
87
- class VecDB extends BaseDB<MemoryRecord> {
88
- private vectorizer: TextVectorizer;
89
- protected db!: IDBPDatabase<VecDBSchema>;
90
- constructor(config: VecDBConfig) {
91
- super(config);
92
- this.vectorizer = config.vectorizer;
93
- }
94
-
95
- public async initialize(): Promise<void> {
96
- if (this.isInitialized) {
97
- return;
98
- }
99
-
100
- this.db = await openDB<VecDBSchema>(this.config.dbName, this.config.dbVersion, {
101
- upgrade(db) {
102
- if (!db.objectStoreNames.contains("vectors")) {
103
- db.createObjectStore("vectors", {
104
- keyPath: "id",
105
- autoIncrement: true,
106
- });
107
- }
108
- },
109
- });
110
- this.isInitialized = true;
111
- }
112
-
113
- public async insert(data: MemoryRecord): Promise<number> {
114
- if (!this.isInitialized) {
115
- await this.initialize();
116
- }
117
-
118
- try {
119
- let embedding = data.vector;
120
- if (!embedding) {
121
- embedding = await this.vectorizer.vectorize(data.text!);
122
- }
123
-
124
- const transaction = this.db.transaction("vectors", "readwrite");
125
- const store = transaction.objectStore("vectors");
126
- const { vector: _, ...rest } = data;
127
- const record = { vector: embedding, ...rest };
128
- const key = await store.add(record);
129
- return Number(key);
130
- } catch (error) {
131
- throw new Error(`Error inserting data: ${error}`);
132
- }
133
- }
134
-
135
- public async update(key: number, data: MemoryRecord): Promise<void> {
136
- if (!this.isInitialized) {
137
- await this.initialize();
138
- }
139
-
140
- const transaction = this.db.transaction("vectors", "readwrite");
141
- const store = transaction.objectStore("vectors");
142
- const vector = data["vector"] as Vector;
143
- const updatedData = { ...data, id: key, vector };
144
- await store.put(updatedData);
145
- }
146
-
147
- public async delete(key: number): Promise<void> {
148
- if (!this.isInitialized) {
149
- await this.initialize();
150
- }
151
-
152
- const transaction = this.db.transaction("vectors", "readwrite");
153
- const store = transaction.objectStore("vectors");
154
- await store.delete(key);
155
- }
156
-
157
- public async query(queryText: string, { limit = 10 }: QueryOptions = {}): Promise<Array<MemoryRecord & { similarity: number }>> {
158
- if (!this.isInitialized) {
159
- await this.initialize();
160
- }
161
-
162
- try {
163
- const queryVector = await this.vectorizer.vectorize(queryText);
164
- const transaction = this.db.transaction("vectors", "readonly");
165
- const store = transaction.objectStore("vectors");
166
- const vectors = await store.getAll();
167
-
168
- const similarities = vectors.map((entry) => {
169
- const vector = entry.vector as Vector;
170
- const similarity = cosineSimilarity(queryVector, vector);
171
- return { ...entry, similarity };
172
- });
173
-
174
- similarities.sort((a, b) => b.similarity - a.similarity);
175
- return similarities.slice(0, limit);
176
- } catch (error) {
177
- throw new Error(`Error querying vectors: ${error}`);
178
- }
179
- }
180
-
181
- public async get(id: number): Promise<MemoryRecord | undefined> {
182
- if (!this.isInitialized) {
183
- await this.initialize();
184
- }
185
- return this.db.transaction("vectors", "readonly").objectStore("vectors").get(id);
186
- }
187
- public async getAll(): Promise<MemoryRecord[]> {
188
- if (!this.isInitialized) {
189
- await this.initialize();
190
- }
191
-
192
- const transaction = this.db.transaction("vectors", "readonly");
193
- const store = transaction.objectStore("vectors");
194
- return store.getAll();
195
- }
196
-
197
- // 保留原有的 insertBinary 方法作为特殊方法
198
- async insertBinary(data: MemoryRecord): Promise<number> {
199
- if (!this.isInitialized) {
200
- await this.initialize();
201
- }
202
-
203
- try {
204
- let embedding = data["vector"] as Vector;
205
- if (data.text) {
206
- embedding = await this.vectorizer.vectorize(data.text);
207
- }
208
-
209
- const binaryEmbedding = binarizeVector(embedding);
210
- const packedEmbedding = new BigUint64Array(new ArrayBuffer(Math.ceil(binaryEmbedding.length / 64) * 8));
211
- for (let i = 0; i < binaryEmbedding.length; i++) {
212
- const bitIndex = i % 64;
213
- const arrayIndex = Math.floor(i / 64);
214
- if (binaryEmbedding[i] === 1) {
215
- packedEmbedding[arrayIndex] |= 1n << BigInt(bitIndex);
216
- }
217
- }
218
-
219
- const transaction = this.db.transaction("vectors", "readwrite");
220
- const store = transaction.objectStore("vectors");
221
- const { vector: _, ...rest } = data;
222
- const record = { vector: packedEmbedding, ...rest };
223
- const key = await store.add(record);
224
- return Number(key);
225
- } catch (error) {
226
- throw new Error(`Error inserting binary data: ${error}`);
227
- }
228
- }
229
- }
230
-
231
- export { VecDB, TextVectorizer, OpenAIVectorizer };
232
- export type { Vector, BinaryVector, MemoryRecord, VecDBConfig };