diff --git a/LICENSE b/LICENSE index 75b8af53..50db81eb 100644 --- a/LICENSE +++ b/LICENSE @@ -18,70 +18,18 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI -------------------------------------------------------------------- Other third-party components: + +In case you believe there have been errors in the attribution below, you may submit the concerns to us for review and correction. Open Source Software Licensed under the Apache-2.0: -------------------------------------------------------------------- -1. otel-1.37.0 -Copyright (c) 2025 opentelemetry-go original author and authors +1. paddle-1.1.15 +Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved, -2. stdr-1.2.2 -Copyright (c) 2021 stdr original author and authors +2. playwright-1.56.0 +Portions Copyright (c) Microsoft Corporation., Portions Copyright 2017 Google Inc. -3. parquet-go-0.25.0 -Copyright 2023 Twilio, Inc. - -4. rpc-0.0.0-20250603155806-513f23925822 -Copyright (c) 2025 go-genproto original author and authors - -5. api-0.0.0-20250603155806-513f23925822 -Copyright (c) 2025 go-genproto original author and authors - -6. grpc-1.73.0 -Copyright (c) 2025 grpc-go original author and authors - -7. base64x-0.1.5 -Copyright (c) 2025 base64x original author and authors - -8. trace-1.37.0 -Copyright (c) 2025 opentelemetry-go original author and authors - -9. loader-0.2.4 -Copyright 2025 ByteDance Inc. - -10. paddlepaddle-gpu-3.0.0 -Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved - -11. otlp-1.7.0 -Copyright (c) 2025 opentelemetry-proto original author and authors - -12. logr-1.4.3 -Copyright (c) 2025 logr original author and authors - -13. otlptrace-1.37.0 -Copyright (c) 2025 opentelemetry-go original author and authors - -14. metric-1.37.0 -Copyright (c) 2025 opentelemetry-go original author and authors - -15. sonic-1.13.2 -Copyright (c) 2025 sonic original author and authors - -16. go-openai-1.40.5 -Copyright (c) 2025 go-openai original author and authors - -17. crc64nvme-1.0.1 -Copyright (c) 2025 crc64nvme original author and authors - -18. concurrent-0.0.0-20180306012644-bacd9c7ef1dd -Copyright (c) 2018 concurrent original author and authors - -19. stdouttrace-1.35.0 -Copyright (c) 2025 opentelemetry-go original author and authors - -20. otlptracegrpc-1.37.0 -Copyright (c) 2025 opentelemetry-go original author and authors - -21. paddleocr-3.0.0 -Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved. +3. grpc-health-7.5.0 +Copyright (c) 2025 The gRPC Authors @@ -288,72 +236,14 @@ Apache License See the License for the specific language governing permissions and limitations under the License. -Open Source Software Licensed under the BSD-2-Clause: +Open Source Software Licensed under the BSD: -------------------------------------------------------------------- -1. esrecurse-4.3.0 -Copyright (C) 2014 [Yusuke Suzuki](https://github.com/Constellation) (twitter: [@Constellation](https://twitter.com/Constellation)) and other contributors. - -2. glob-to-regexp-0.4.1 -Copyright (c) 2013, Nick Fitzgerald - -3. eslint-scope-5.1.1 -Copyright(c) 2025 eslint-scope original author and authors +1. numpy-2.3.5 +Copyright (c) 2005-2025, NumPy Developers. All rights reserved. -Terms of the BSD-2-Clause: -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -Redistributions of source code must retain the above copyright notice, this list -of conditions and the following disclaimer. - -Redistributions in binary form must reproduce the above copyright notice, this -list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Open Source Software Licensed under the BSD-3-Clause: --------------------------------------------------------------------- -1. text-0.26.0 -Copyright 2009 The Go Authors. - -2. compress-1.18.0 -Copyright (c) 2012 The Go Authors. All rights reserved. -Copyright (c) 2019 Klaus Post. All rights reserved. -Copyright 2016-2017 The New York Times Company -Copyright (c) 2015 Klaus Post -Copyright 2016 The filepath Authors - -3. net-0.41.0 -Copyright 2009 The Go Authors. - -4. fsnotify-1.8.0 -Copyright © 2012 The Go Authors. All rights reserved. -Copyright © fsnotify Authors. All rights reserved. - -5. sys-0.33.0 -Copyright 2009 The Go Authors. - -6. protobuf-1.36.6 -Copyright (c) 2018 The Go Authors. All rights reserved. - -7. arch-0.15.0 -Copyright 2015 The Go Authors. - - - -Terms of the BSD-3-Clause: +Terms of the BSD: Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -379,14 +269,1005 @@ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Open Source Software Licensed under the CC-BY-4.0: +Open Source Software Licensed under the MIT: -------------------------------------------------------------------- -1. caniuse-lite-1.0.30001727 -Copyright(c) 2025 Ben Briggs +1. rpds-py-0.30.0 +Copyright (c) 2023 Julian Berman -Terms of the CC-BY-4.0: +Terms of the MIT: +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Open Source Software Licensed under the MIT-CMU: +-------------------------------------------------------------------- +1. PIL-1.1.5a2 +Copyright © 1997-2011 by Secret Labs AB, Copyright © 1995-2011 by Fredrik Lundh and contributors, Copyright © 2010 by Jeffrey A. Clark and contributors + + + +Terms of the MIT-CMU: +Permission to use, copy, modify and distribute this software and its +documentation for any purpose and without fee is hereby granted, provided that +the above copyright notice appears in all copies and that both that copyright +notice and this permission notice appear in supporting documentation, and that +the name of CMU and The Regents of the University of California not be used in +advertising or publicity pertaining to distribution of the software without +specific written permission. + +CMU AND THE REGENTS OF THE UNIVERSITY OF CALIFORNIA DISCLAIM ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL CMU OR THE REGENTS OF THE UNIVERSITY OF CALIFORNIA BE +LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM THE LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Open Source Software Licensed under the Python-2.0: +-------------------------------------------------------------------- +1. typing-extensions-4.15.0 +Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Python Software Foundation, All Rights Reserved, Copyright (c) 1995-2001 Corporation for National Research Initiatives, All Rights Reserved, Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved. + + + +Terms of the Python-2.0: +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF hereby +grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, +analyze, test, perform and/or display publicly, prepare derivative works, +distribute, and otherwise use Python alone or in any derivative version, +provided, however, that PSF's License Agreement and PSF's notice of copyright, +i.e., "Copyright (c) Python Software Foundation; +All Rights Reserved" are retained in Python alone or in any derivative version +prepared by Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 +------------------------------------------- + +BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 + +1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an +office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the +Individual or Organization ("Licensee") accessing and otherwise using +this software in source or binary form and its associated +documentation ("the Software"). + +2. Subject to the terms and conditions of this BeOpen Python License +Agreement, BeOpen hereby grants Licensee a non-exclusive, +royalty-free, world-wide license to reproduce, analyze, test, perform +and/or display publicly, prepare derivative works, distribute, and +otherwise use the Software alone or in any derivative version, +provided, however, that the BeOpen Python License is retained in the +Software, alone or in any derivative version prepared by Licensee. + +3. BeOpen is making the Software available to Licensee on an "AS IS" +basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE +SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS +AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY +DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +5. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +6. This License Agreement shall be governed by and interpreted in all +respects by the law of the State of California, excluding conflict of +law provisions. Nothing in this License Agreement shall be deemed to +create any relationship of agency, partnership, or joint venture +between BeOpen and Licensee. This License Agreement does not grant +permission to use BeOpen trademarks or trade names in a trademark +sense to endorse or promote products or services of Licensee, or any +third party. As an exception, the "BeOpen Python" logos available at +http://www.pythonlabs.com/logos.html may be used according to the +permissions granted on that web page. + +7. By copying, installing or otherwise using the software, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + + +CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1 +--------------------------------------- + +1. This LICENSE AGREEMENT is between the Corporation for National +Research Initiatives, having an office at 1895 Preston White Drive, +Reston, VA 20191 ("CNRI"), and the Individual or Organization +("Licensee") accessing and otherwise using Python 1.6.1 software in +source or binary form and its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, CNRI +hereby grants Licensee a nonexclusive, royalty-free, world-wide +license to reproduce, analyze, test, perform and/or display publicly, +prepare derivative works, distribute, and otherwise use Python 1.6.1 +alone or in any derivative version, provided, however, that CNRI's +License Agreement and CNRI's notice of copyright, i.e., "Copyright (c) +1995-2001 Corporation for National Research Initiatives; All Rights +Reserved" are retained in Python 1.6.1 alone or in any derivative +version prepared by Licensee. Alternately, in lieu of CNRI's License +Agreement, Licensee may substitute the following text (omitting the +quotes): "Python 1.6.1 is made available subject to the terms and +conditions in CNRI's License Agreement. This Agreement together with +Python 1.6.1 may be located on the Internet using the following +unique, persistent identifier (known as a handle): 1895.22/1013. This +Agreement may also be obtained from a proxy server on the Internet +using the following URL: http://hdl.handle.net/1895.22/1013". + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python 1.6.1 or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python 1.6.1. + +4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" +basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. This License Agreement shall be governed by the federal +intellectual property law of the United States, including without +limitation the federal copyright law, and, to the extent such +U.S. federal law does not apply, by the law of the Commonwealth of +Virginia, excluding Virginia's conflict of law provisions. +Notwithstanding the foregoing, with regard to derivative works based +on Python 1.6.1 that incorporate non-separable material that was +previously distributed under the GNU General Public License (GPL), the +law of the Commonwealth of Virginia shall govern this License +Agreement only as to issues arising under or with respect to +Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this +License Agreement shall be deemed to create any relationship of +agency, partnership, or joint venture between CNRI and Licensee. This +License Agreement does not grant permission to use CNRI trademarks or +trade name in a trademark sense to endorse or promote products or +services of Licensee, or any third party. + +8. By clicking on the "ACCEPT" button where indicated, or by copying, +installing or otherwise using Python 1.6.1, Licensee agrees to be +bound by the terms and conditions of this License Agreement. + + ACCEPT + + +CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 +-------------------------------------------------- + +Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, +The Netherlands. All rights reserved. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior +permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +Open Source Software Licensed under the apache-1.1: +-------------------------------------------------------------------- +1. pandas-2.3.3 +Copyright (c) pandas authors. +You may obtain the source code and detailed information about this component at https://pandas.pydata.org. + + + +Terms of the apache-1.1: +The Apache Software License, Version 1.1 + +Copyright (c) 2000 The Apache Software Foundation. All rights +reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +3. The end-user documentation included with the redistribution, + if any, must include the following acknowledgment: + "This product includes software developed by the + Apache Software Foundation (http://www.apache.org/)." + Alternately, this acknowledgment may appear in the software itself, + if and wherever such third-party acknowledgments normally appear. + +4. The names "Apache" and "Apache Software Foundation" must + not be used to endorse or promote products derived from this + software without prior written permission. For written + permission, please contact apache@apache.org. + +5. Products derived from this software may not be called "Apache", + nor may "Apache" appear in their name, without prior written + permission of the Apache Software Foundation. + +THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +Open Source Software Licensed under the apache-2.0: +-------------------------------------------------------------------- +1. @xtuc/long-4.2.2 +Copyright (c) @xtuc/long authors. +You may obtain the source code and detailed information about this component at https://github.com/dcodeIO/long.js#readme. + +2. go.opentelemetry.io/otel/metric-1.37.0 +Copyright (c) go.opentelemetry.io/otel/metric authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/otel/metric. + +3. long-4.2.2 +Copyright (c) long authors. +You may obtain the source code and detailed information about this component at https://github.com/dcodeIO/long.js#readme. + +4. github.com/bytedance/sonic-1.13.2 +Copyright (c) github.com/bytedance/sonic authors. +You may obtain the source code and detailed information about this component at github.com/bytedance/sonic. + +5. go.opentelemetry.io/auto/sdk-1.1.0 +Copyright (c) go.opentelemetry.io/auto/sdk authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/auto/sdk. + +6. github.com/minio/crc64nvme-1.0.1 +Copyright (c) github.com/minio/crc64nvme authors. +You may obtain the source code and detailed information about this component at github.com/minio/crc64nvme. + +7. go.opentelemetry.io/otel/trace-1.37.0 +Copyright (c) go.opentelemetry.io/otel/trace authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/otel/trace. + +8. go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc-1.37.0 +Copyright (c) go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc. + +9. trafilatura-2.0.0 +Copyright (c) trafilatura authors. +You may obtain the source code and detailed information about this component at https://trafilatura.readthedocs.io. + +10. go.opentelemetry.io/otel/exporters/otlp/otlptrace-1.37.0 +Copyright (c) go.opentelemetry.io/otel/exporters/otlp/otlptrace authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/otel/exporters/otlp/otlptrace. + +11. github.com/modern-go/concurrent-0.0.0-20180306012644-bacd9c7ef1dd +Copyright (c) github.com/modern-go/concurrent authors. +You may obtain the source code and detailed information about this component at github.com/modern-go/concurrent. + +12. gopkg.in/yaml.v3-3.0.1 +Copyright (c) gopkg.in/yaml.v3 authors. +You may obtain the source code and detailed information about this component at https://goproxy.cn/gopkg.in/yaml.v3/@v/v3.0.1.zip. + +13. go.opentelemetry.io/otel/exporters/stdout/stdouttrace-1.35.0 +Copyright (c) go.opentelemetry.io/otel/exporters/stdout/stdouttrace authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/otel/exporters/stdout/stdouttrace. + +14. github.com/richardlehane/msoleps-1.0.4 +Copyright (c) github.com/richardlehane/msoleps authors. +You may obtain the source code and detailed information about this component at github.com/richardlehane/msoleps. + +15. google.golang.org/grpc-1.73.0 +Copyright (c) google.golang.org/grpc authors. +You may obtain the source code and detailed information about this component at google.golang.org/grpc. + +16. google.golang.org/genproto/googleapis/rpc-0.0.0-20250603155806-513f23925822 +Copyright (c) google.golang.org/genproto/googleapis/rpc authors. +You may obtain the source code and detailed information about this component at google.golang.org/genproto/googleapis/rpc. + +17. github.com/modern-go/reflect2-1.0.2 +Copyright (c) github.com/modern-go/reflect2 authors. +You may obtain the source code and detailed information about this component at github.com/modern-go/reflect2. + +18. github.com/minio/minio-go-7.0.90 +Copyright (c) github.com/minio/minio-go authors. +You may obtain the source code and detailed information about this component at github.com/minio/minio-go. + +19. requests-default +Copyright (c) requests authors. +You may obtain the source code and detailed information about this component at http://python-requests.org. + +20. github.com/minio/md5-simd-1.1.2 +Copyright (c) github.com/minio/md5-simd authors. +You may obtain the source code and detailed information about this component at github.com/minio/md5-simd. + +21. openai-2.8.1 +Copyright (c) openai authors. +You may obtain the source code and detailed information about this component at https://pypi.org/project/openai/. + +22. go.opentelemetry.io/proto/otlp-1.7.0 +Copyright (c) go.opentelemetry.io/proto/otlp authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/proto/otlp. + +23. typescript-5.8.3 +Copyright (c) Microsoft Corporation. All rights reserved. + +24. github.com/wk8/go-ordered-map-2.1.8 +Copyright (c) github.com/wk8/go-ordered-map authors. +You may obtain the source code and detailed information about this component at github.com/wk8/go-ordered-map. + +25. gopkg.in/yaml-3.0.1 +Copyright (c) gopkg.in/yaml authors. +You may obtain the source code and detailed information about this component at gopkg.in/yaml.v3. + +26. github.com/go-ini/ini-1.67.0 +Copyright (c) github.com/go-ini/ini authors. +You may obtain the source code and detailed information about this component at github.com/go-ini/ini. + +27. leb128-1.13.2 +Copyright (c) leb128 authors. +You may obtain the source code and detailed information about this component at https://github.com/xtuc/webassemblyjs#readme. + +28. go.opentelemetry.io/otel/sdk-1.37.0 +Copyright (c) go.opentelemetry.io/otel/sdk authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/otel/sdk. + +29. google.golang.org/genproto/googleapis/api-0.0.0-20250603155806-513f23925822 +Copyright (c) google.golang.org/genproto/googleapis/api authors. +You may obtain the source code and detailed information about this component at google.golang.org/genproto/googleapis/api. + +30. transformers-4.57.3 +Copyright (c) transformers authors. +You may obtain the source code and detailed information about this component at https://github.com/huggingface/transformers. + +31. github.com/richardlehane/mscfb-1.0.4 +Copyright (c) github.com/richardlehane/mscfb authors. +You may obtain the source code and detailed information about this component at github.com/richardlehane/mscfb. + +32. github.com/bytedance/sonic/loader-0.2.4 +Copyright (c) github.com/bytedance/sonic/loader authors. +You may obtain the source code and detailed information about this component at github.com/bytedance/sonic/loader. + +33. minio-7.2.20 +Copyright (c) minio authors. +You may obtain the source code and detailed information about this component at https://github.com/minio/minio-py. + +34. github.com/elastic/go-elasticsearch-8.18.0 +Copyright (c) github.com/elastic/go-elasticsearch authors. +You may obtain the source code and detailed information about this component at github.com/elastic/go-elasticsearch. + +35. paddleocr-3.3.2 +Copyright (c) paddleocr authors. +You may obtain the source code and detailed information about this component at https://github.com/PaddlePaddle/PaddleOCR. + +36. github.com/elastic/go-elasticsearch-7.17.10 +Copyright (c) github.com/elastic/go-elasticsearch authors. +You may obtain the source code and detailed information about this component at github.com/elastic/go-elasticsearch. + +37. go.opentelemetry.io/otel-1.37.0 +Copyright (c) go.opentelemetry.io/otel authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/otel. + +38. @webassemblyjs/leb128-1.13.2 +Copyright 2012 The Obvious Corporation. + +39. xlsx-0.20.2 +Copyright (c) xlsx authors. +You may obtain the source code and detailed information about this component at https://sheetjs.com/. + +40. github.com/go-logr/stdr-1.2.2 +Copyright (c) github.com/go-logr/stdr authors. +You may obtain the source code and detailed information about this component at github.com/go-logr/stdr. + +41. github.com/sashabaranov/go-openai-1.40.5 +Copyright (c) github.com/sashabaranov/go-openai authors. +You may obtain the source code and detailed information about this component at github.com/sashabaranov/go-openai. + +42. github.com/spf13/afero-1.12.0 +Copyright (c) github.com/spf13/afero authors. +You may obtain the source code and detailed information about this component at github.com/spf13/afero. + +43. github.com/parquet-go/parquet-go-0.25.0 +Copyright (c) github.com/parquet-go/parquet-go authors. +You may obtain the source code and detailed information about this component at github.com/parquet-go/parquet-go. + +44. python-multipart-0.0.20 +Copyright (c) 2010 by Armin Ronacher., Copyright 2012, Andrew Dunham + +45. dompurify-3.2.6 +Copyright 2015 Mario Heiderich, Copyright 2023 Dr.-Ing. Mario Heiderich, Cure53 + +46. github.com/cloudwego/base64x-0.1.5 +Copyright (c) github.com/cloudwego/base64x authors. +You may obtain the source code and detailed information about this component at github.com/cloudwego/base64x. + +47. grpc-1.0.0 +Copyright (c) Hyperf + +48. github.com/klauspost/compress-1.18.0 +Copyright (c) github.com/klauspost/compress authors. +You may obtain the source code and detailed information about this component at github.com/klauspost/compress. + +49. github.com/go-logr/logr-1.4.3 +Copyright (c) github.com/go-logr/logr authors. +You may obtain the source code and detailed information about this component at github.com/go-logr/logr. + +50. github.com/elastic/elastic-transport-go-8.7.0 +Copyright (c) github.com/elastic/elastic-transport-go authors. +You may obtain the source code and detailed information about this component at github.com/elastic/elastic-transport-go. + +51. github.com/neo4j/neo4j-go-driver-6.0.0-alpha.1 +Copyright (c) github.com/neo4j/neo4j-go-driver authors. +You may obtain the source code and detailed information about this component at github.com/neo4j/neo4j-go-driver. + + + +Terms of the apache-2.0: +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +Open Source Software Licensed under the bsd-new: +-------------------------------------------------------------------- +1. ieee754-1.2.0 +Copyright (c) ieee754 authors. +You may obtain the source code and detailed information about this component at https://github.com/feross/ieee754#readme. + +2. github.com/xuri/excelize-2.10.0 +Copyright (c) github.com/xuri/excelize authors. +You may obtain the source code and detailed information about this component at github.com/xuri/excelize. + +3. go.opentelemetry.io/otel/metric-1.37.0 +Copyright (c) go.opentelemetry.io/otel/metric authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/otel/metric. + +4. golang.org/x/text-0.30.0 +Copyright (c) golang.org/x/text authors. +You may obtain the source code and detailed information about this component at golang.org/x/text. + +5. github.com/yosida95/uritemplate-3.0.2 +Copyright (c) github.com/yosida95/uritemplate authors. +You may obtain the source code and detailed information about this component at github.com/yosida95/uritemplate. + +6. go.opentelemetry.io/otel/trace-1.37.0 +Copyright (c) go.opentelemetry.io/otel/trace authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/otel/trace. + +7. go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc-1.37.0 +Copyright (c) go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc. + +8. torch-2.9.1 +Copyright (c) torch authors. +You may obtain the source code and detailed information about this component at https://pytorch.org/. + +9. golang.org/x/sys-0.37.0 +Copyright (c) golang.org/x/sys authors. +You may obtain the source code and detailed information about this component at golang.org/x/sys. + +10. golang.org/x/crypto-0.43.0 +Copyright (c) golang.org/x/crypto authors. +You may obtain the source code and detailed information about this component at golang.org/x/crypto. + +11. go.opentelemetry.io/otel/exporters/otlp/otlptrace-1.37.0 +Copyright (c) go.opentelemetry.io/otel/exporters/otlp/otlptrace authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/otel/exporters/otlp/otlptrace. + +12. httpx-0.28.1 +Copyright (c) httpx authors. +You may obtain the source code and detailed information about this component at https://github.com/encode/httpx. + +13. go.opentelemetry.io/otel/exporters/stdout/stdouttrace-1.35.0 +Copyright (c) go.opentelemetry.io/otel/exporters/stdout/stdouttrace authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/otel/exporters/stdout/stdouttrace. + +14. github.com/xuri/efp-0.0.1 +Copyright (c) github.com/xuri/efp authors. +You may obtain the source code and detailed information about this component at github.com/xuri/efp. + +15. golang.org/x/net-0.46.0 +Copyright (c) golang.org/x/net authors. +You may obtain the source code and detailed information about this component at golang.org/x/net. + +16. starlette-0.50.0 +Copyright (c) starlette authors. +You may obtain the source code and detailed information about this component at https://github.com/encode/starlette. + +17. @xtuc/ieee754-1.2.0 +Copyright (c) 2008, Fair Oaks Labs, Inc. + +18. speakingurl-14.0.1 +Copyright (c) speakingurl authors. +You may obtain the source code and detailed information about this component at http://pid.github.io/speakingurl/. + +19. google.golang.org/protobuf-1.36.9 +Copyright (c) google.golang.org/protobuf authors. +You may obtain the source code and detailed information about this component at google.golang.org/protobuf. + +20. github.com/twitchyliquid64/golang-asm-0.15.1 +Copyright (c) github.com/twitchyliquid64/golang-asm authors. +You may obtain the source code and detailed information about this component at github.com/twitchyliquid64/golang-asm. + +21. github.com/pmezard/go-difflib-1.0.0 +Copyright (c) github.com/pmezard/go-difflib authors. +You may obtain the source code and detailed information about this component at github.com/pmezard/go-difflib. + +22. source-map-0.6.1 +Copyright (c) 2009-2011, Mozilla Foundation and contributors + +23. golang.org/x/sync-0.17.0 +Copyright (c) golang.org/x/sync authors. +You may obtain the source code and detailed information about this component at golang.org/x/sync. + +24. github.com/clbanning/mxj-1.8.4 +Copyright (c) github.com/clbanning/mxj authors. +You may obtain the source code and detailed information about this component at github.com/clbanning/mxj. + +25. github.com/google/uuid-1.6.0 +Copyright (c) github.com/google/uuid authors. +You may obtain the source code and detailed information about this component at github.com/google/uuid. + +26. uvicorn-0.38.0 +Copyright (c) uvicorn authors. +You may obtain the source code and detailed information about this component at https://github.com/encode/uvicorn. + +27. sse-starlette-3.0.3 +Copyright (c) sse-starlette authors. +You may obtain the source code and detailed information about this component at https://pypi.org/project/sse-starlette/. + +28. idna-3.7 +Copyright (c) 2001-2014 Python Software Foundation, All Rights Reserved, Copyright (c) 1991-2014 Unicode, Inc. All rights reserved., Copyright (c) 2013-2023, Kim Davies and contributors. + +29. go.opentelemetry.io/otel/sdk-1.37.0 +Copyright (c) go.opentelemetry.io/otel/sdk authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/otel/sdk. + +30. github.com/go-json-experiment/json-0.0.0-20250725192818-e39067aee2d2 +Copyright (c) github.com/go-json-experiment/json authors. +You may obtain the source code and detailed information about this component at github.com/go-json-experiment/json. + +31. github.com/puerkitobio/goquery-1.10.3 +Copyright (c) github.com/puerkitobio/goquery authors. +You may obtain the source code and detailed information about this component at github.com/puerkitobio/goquery. + +32. golang.org/x/time-0.13.0 +Copyright (c) golang.org/x/time authors. +You may obtain the source code and detailed information about this component at golang.org/x/time. + +33. github.com/pierrec/lz4-4.1.21 +Copyright (c) github.com/pierrec/lz4 authors. +You may obtain the source code and detailed information about this component at github.com/pierrec/lz4. + +34. httpcore-1.0.9 +Copyright (c) httpcore authors. +You may obtain the source code and detailed information about this component at https://pypi.org/project/httpcore/. + +35. github.com/spf13/pflag-1.0.6 +Copyright (c) github.com/spf13/pflag authors. +You may obtain the source code and detailed information about this component at github.com/spf13/pflag. + +36. go.opentelemetry.io/otel-1.37.0 +Copyright (c) go.opentelemetry.io/otel authors. +You may obtain the source code and detailed information about this component at go.opentelemetry.io/otel. + +37. fast-uri-3.0.6 +Copyright (c) 2011-2021, Gary Court until https: github.com garycourt uri-js commit a1acf730b4bba3f1097c9f52e7d9d3aba8cdcaae, Copyright (c) 2021 The Fastify Team + +38. github.com/grpc-ecosystem/grpc-gateway-2.27.1 +Copyright (c) github.com/grpc-ecosystem/grpc-gateway authors. +You may obtain the source code and detailed information about this component at github.com/grpc-ecosystem/grpc-gateway. + +39. python-dotenv-1.2.1 +Copyright (c) python-dotenv authors. +You may obtain the source code and detailed information about this component at https://github.com/theskumar/python-dotenv. + +40. click-8.3.1 +Copyright (c) click authors. +You may obtain the source code and detailed information about this component at https://palletsprojects.com/p/click/. + +41. github.com/bahlo/generic-list-go-0.2.0 +Copyright (c) github.com/bahlo/generic-list-go authors. +You may obtain the source code and detailed information about this component at github.com/bahlo/generic-list-go. + +42. golang.org/x/arch-0.15.0 +Copyright (c) golang.org/x/arch authors. +You may obtain the source code and detailed information about this component at golang.org/x/arch. + +43. github.com/fsnotify/fsnotify-1.8.0 +Copyright (c) github.com/fsnotify/fsnotify authors. +You may obtain the source code and detailed information about this component at github.com/fsnotify/fsnotify. + +44. github.com/xuri/nfp-0.0.2-0.20250530014748-2ddeb826f9a9 +Copyright (c) github.com/xuri/nfp authors. +You may obtain the source code and detailed information about this component at github.com/xuri/nfp. + +45. google-3.0.0 +Copyright (c) google authors. +You may obtain the source code and detailed information about this component at http://breakingcode.wordpress.com/. + +46. github.com/google/go-querystring-1.1.0 +Copyright (c) github.com/google/go-querystring authors. +You may obtain the source code and detailed information about this component at github.com/google/go-querystring. + +47. serialize-javascript-6.0.2 +Copyright 2014 Yahoo Inc. + +48. github.com/klauspost/compress-1.18.0 +Copyright (c) github.com/klauspost/compress authors. +You may obtain the source code and detailed information about this component at github.com/klauspost/compress. + +49. source-map-js-1.2.1 +Copyright (c) 2009-2011, Mozilla Foundation and contributors + + + +Terms of the bsd-new: +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list +of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this +list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +Neither the name of the ORGANIZATION nor the names of its contributors may be +used to endorse or promote products derived from this software without specific +prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Open Source Software Licensed under the bsd-simplified: +-------------------------------------------------------------------- +1. github.com/andybalholm/cascadia-1.3.3 +Copyright (c) github.com/andybalholm/cascadia authors. +You may obtain the source code and detailed information about this component at github.com/andybalholm/cascadia. + +2. terser-5.43.1 +Copyright (c) terser authors. +You may obtain the source code and detailed information about this component at https://terser.org. + +3. esrecurse-4.3.0 +Copyright (C) 2014 [Yusuke Suzuki](https: github.com Constellation) + +4. estraverse-4.3.0 +Copyright (C) 2012-2016 [Yusuke Suzuki](http: github.com Constellation) + +5. entities-4.5.0 +Copyright (c) Felix B hm + +6. estraverse-5.3.0 +Copyright (C) 2012-2016 [Yusuke Suzuki](http: github.com Constellation) + +7. github.com/redis/go-redis-9.14.0 +Copyright (c) github.com/redis/go-redis authors. +You may obtain the source code and detailed information about this component at github.com/redis/go-redis. + +8. glob-to-regexp-0.4.1 +Copyright (c) 2013, Nick Fitzgerald + +9. eslint-scope-5.1.1 +Copyright (C) 2012-2013 Yusuke Suzuki (twitter: @Constellation) and other contributors., Copyright JS Foundation and other contributors, https: js.foundation + + + +Terms of the bsd-simplified: +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list +of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this +list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Open Source Software Licensed under the cc-by-4.0: +-------------------------------------------------------------------- +1. caniuse-lite-1.0.30001727 +copyright (c) caniuse.com and its other authors + + + +Terms of the cc-by-4.0: Attribution 4.0 International ======================================================================= @@ -784,14 +1665,25 @@ public licenses. Creative Commons may be contacted at creativecommons.org. -Open Source Software Licensed under the ISC: +Open Source Software Licensed under the isc: -------------------------------------------------------------------- -1. electron-to-chromium-1.5.183 -Copyright 2018 Kilian Valkhof +1. github.com/davecgh/go-spew-1.1.1 +Copyright (c) github.com/davecgh/go-spew authors. +You may obtain the source code and detailed information about this component at github.com/davecgh/go-spew. + +2. picocolors-1.1.1 +Copyright (c) 2021 Alexey Raspopov, Kostiantyn Denysov, Anton Verinov + +3. graceful-fs-4.2.11 +Copyright (c) 2011-2022 Isaac Z. Schlueter, Ben Noordhuis, and Contributors + +4. electron-to-chromium-1.5.183 +Copyright (c) electron-to-chromium authors. +You may obtain the source code and detailed information about this component at https://github.com/kilian/electron-to-chromium#readme. -Terms of the ISC: +Terms of the isc: Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. @@ -805,284 +1697,1133 @@ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -Open Source Software Licensed under the MIT: +Open Source Software Licensed under the mit: -------------------------------------------------------------------- -1. birpc-2.5.0 -Copyright (c) 2021 Anthony Fu +1. sortablejs-1.15.6 +Copyright (c) sortablejs authors. +You may obtain the source code and detailed information about this component at https://github.com/SortableJS/Sortable#readme. -2. @babel/generator-7.28.0 -Copyright (c) 2014-present Sebastian Mckenzie and other contributors +2. source-map-support-0.5.21 +Copyright (c) 2014 Evan Wallace -3. neo-async-2.6.2 -Copyright (c) 2014-2018 Suguru Motegi +3. devtools-api-7.7.7 +Copyright (c) devtools-api authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/devtools#readme. -4. parse-node-version-1.0.1 -Copyright (c) 2018 Blaine Bublitz and Eric Schoffstall +4. github.com/goccy/go-json-0.10.5 +Copyright (c) github.com/goccy/go-json authors. +You may obtain the source code and detailed information about this component at github.com/goccy/go-json. -5. cors-1.7.5 -Copyright (c) 2016 Gin-Gonic +5. swiper-12.0.3 +Copyright (c) swiper authors. +You may obtain the source code and detailed information about this component at https://swiperjs.com. -6. vue-3.5.17 -Copyright (c) 2018-present, Yuxi (Evan) You and Vue contributors +6. markdownify-1.2.2 +Copyright (c) markdownify authors. +You may obtain the source code and detailed information about this component at http://github.com/matthewwithanm/python-markdownify. -7. copy-anything-2.0.6 -Copyright (c) 2018 Luca Ban - Mesqueeb +7. github.com/gin-contrib/cors-1.7.5 +Copyright (c) github.com/gin-contrib/cors authors. +You may obtain the source code and detailed information about this component at github.com/gin-contrib/cors. -8. yaml.v3-3.0.1 -Copyright (c) 2006-2010 Kirill Simonov -Copyright (c) 2006-2011 Kirill Simonov -Copyright (c) 2011-2019 Canonical Ltd +8. github.com/go-playground/universal-translator-0.18.1 +Copyright (c) github.com/go-playground/universal-translator authors. +You may obtain the source code and detailed information about this component at github.com/go-playground/universal-translator. -9. gojieba-1.4.5 -Copyright (c) The project creators and maintainers +9. @pagefind/linux-arm64-1.3.0 +Copyright (c) @pagefind/linux-arm64 authors. +You may obtain the source code and detailed information about this component at https://github.com/pagefind/pagefind#readme. -10. codec-1.2.12 -Copyright (c) 2012-2020 Ugorji Nwoke. +10. runtime-core-3.5.17 +Copyright (c) runtime-core authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/runtime-core#readme. -11. vue-tsc-2.2.12 -Copyright(c) 2025 vue-tsc original author and authors +11. github.com/mark3labs/mcp-go-0.43.0 +Copyright (c) github.com/mark3labs/mcp-go authors. +You may obtain the source code and detailed information about this component at github.com/mark3labs/mcp-go. -12. follow-redirects-1.15.9 -Copyright 2017-present Oliviver Lalonde , James Talmage , Ruben Verborgh +12. sortablejs-1.15.8 +Copyright (c) sortablejs authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/sortablejs. -13. @vue/server-renderer-3.5.17 -Copyright (c) 2018-present, Yuxi (Evan) You and Vue contributors +13. @popperjs/core-2.11.8 +Copyright (c) @popperjs/core authors. +You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@popperjs/core. -14. pgvector-go-0.3.0 -Copyright (c) 2021-2025 Andrew Kane +14. events-3.3.0 +Copyright Joyent, Inc. and other Node contributors. -15. @babel/traverse-7.28.0 -Copyright (c) 2014-present Sebastian McKenzie and other contributors +15. hookable-5.5.3 +Copyright (c) hookable authors. +You may obtain the source code and detailed information about this component at https://github.com/unjs/hookable#readme. -16. @webassemblyjs/helper-api-error-1.13.2 -Copyright (c) 2018 Sven Sauleau +16. lodash-es-4.17.12 +Copyright (c) lodash-es authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/lodash-es. -17. estree-walker-2.0.2 -Copyright (c) 2015-20 [these people](https://github.com/Rich-Harris/estree-walker/graphs/contributors) +17. @babel/parser-7.28.0 +Copyright (c) @babel/parser authors. +You may obtain the source code and detailed information about this component at https://babel.dev/docs/en/next/babel-parser. -18. @types/node-22.16.3 -Copyright(c) 2025 @types/node original author and authors +18. vue-i18n-11.1.12 +Copyright (c) vue-i18n authors. +You may obtain the source code and detailed information about this component at https://github.com/intlify/vue-i18n/tree/master/packages/vue-i18n#readme. -19. magic-string-0.30.17 -Copyright 2018 Rich Harris +19. @vue/runtime-core-3.5.17 +Copyright (c) @vue/runtime-core authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/runtime-core#readme. -20. pinia-3.0.3 -Copyright (c) 2019-present Eduardo San Martin Morote +20. trusted-types-2.0.7 +Copyright (c) trusted-types authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/trusted-types. -21. @types/lodash-4.17.20 -Copyright(c) 2025 @types/lodash original author and authors +21. pinia-3.0.3 +Copyright (c) pinia authors. +You may obtain the source code and detailed information about this component at https://pinia.vuejs.org. -22. es-set-tostringtag-2.1.0 +22. github.com/dustin/go-humanize-1.0.1 +Copyright (c) github.com/dustin/go-humanize authors. +You may obtain the source code and detailed information about this component at github.com/dustin/go-humanize. + +23. combined-stream-1.0.8 +Copyright (c) 2011 Debuggable Limited + +24. ajv-keywords-5.1.0 +Copyright (c) 2016 Evgeny Poberezkin + +25. github.com/yanyiwu/gojieba-1.4.5 +Copyright (c) github.com/yanyiwu/gojieba authors. +You may obtain the source code and detailed information about this component at github.com/yanyiwu/gojieba. + +26. watchpack-2.4.4 +Copyright (c) 2014 - 2015 Tobias Koppers, Copyright JS Foundation and other contributors + +27. wast-printer-1.14.1 +Copyright (c) wast-printer authors. +You may obtain the source code and detailed information about this component at https://github.com/xtuc/webassemblyjs#readme. + +28. @vue/compiler-ssr-3.5.17 +Copyright (c) @vue/compiler-ssr authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/compiler-ssr#readme. + +29. github.com/pelletier/go-toml-2.2.3 +Copyright (c) github.com/pelletier/go-toml authors. +You may obtain the source code and detailed information about this component at github.com/pelletier/go-toml. + +30. @vue/runtime-dom-3.5.17 +Copyright (c) @vue/runtime-dom authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/runtime-dom#readme. + +31. anyio-4.12.0 +Copyright (c) anyio authors. +You may obtain the source code and detailed information about this component at https://github.com/agronholm/anyio. + +32. terser-webpack-plugin-5.3.14 +Copyright JS Foundation and other contributors, copyright, licenses and etc) will be preserved + +33. fastapi-0.122.0 +Copyright (c) fastapi authors. +You may obtain the source code and detailed information about this component at https://github.com/fastapi/fastapi. + +34. go.uber.org/dig-1.18.1 +Copyright (c) go.uber.org/dig authors. +You may obtain the source code and detailed information about this component at go.uber.org/dig. + +35. @vue/compiler-core-3.5.17 +Copyright (c) @vue/compiler-core authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/compiler-core#readme. + +36. ajv-formats-2.1.1 +Copyright (c) 2020 Evgeny Poberezkin + +37. h11-0.16.0 +Copyright (c) 2016 Nathaniel J. Smith and other contributors + +38. resolve-uri-3.1.2 +Copyright (c) resolve-uri authors. +You may obtain the source code and detailed information about this component at https://github.com/jridgewell/resolve-uri#readme. + +39. ieee754-1.13.2 +Copyright (c) ieee754 authors. +You may obtain the source code and detailed information about this component at https://github.com/xtuc/webassemblyjs#readme. + +40. types-7.28.1 +Copyright (c) types authors. +You may obtain the source code and detailed information about this component at https://babel.dev/docs/en/next/babel-types. + +41. has-flag-4.0.0 +Copyright [Sindre Sorhus](https: sindresorhus.com), Copyright (c) Sindre Sorhus (sindresorhus.com) + +42. acorn-8.15.0 +Copyright (c) acorn authors. +You may obtain the source code and detailed information about this component at https://github.com/acornjs/acorn. + +43. go.uber.org/multierr-1.11.0 +Copyright (c) go.uber.org/multierr authors. +You may obtain the source code and detailed information about this component at go.uber.org/multierr. + +44. merge-stream-2.0.0 +Copyright (c) Stephen Sugden (stephensugden.com) + +45. github.com/sourcegraph/conc-0.3.0 +Copyright (c) github.com/sourcegraph/conc authors. +You may obtain the source code and detailed information about this component at github.com/sourcegraph/conc. + +46. github.com/gobwas/httphead-0.1.0 +Copyright (c) github.com/gobwas/httphead authors. +You may obtain the source code and detailed information about this component at github.com/gobwas/httphead. + +47. github.com/invopop/jsonschema-0.13.0 +Copyright (c) github.com/invopop/jsonschema authors. +You may obtain the source code and detailed information about this component at github.com/invopop/jsonschema. + +48. @types/node-22.16.3 +Copyright (c) @types/node authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node. + +49. vue-router-4.5.1 +Copyright (c) vue-router authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/router#readme. + +50. supports-color-8.1.1 +(c) Sindre Sorhus (https: sindresorhus.com), Copyright (c) Sindre Sorhus (sindresorhus.com), Copyright [Sindre Sorhus](http: sindresorhus.com) + +51. linux-arm64-1.3.0 +Copyright (c) linux-arm64 authors. +You may obtain the source code and detailed information about this component at https://github.com/cloudcannon/pagefind#readme. + +52. mcp-default +Copyright (c) mcp authors. +You may obtain the source code and detailed information about this component at https://pypi.org/project/mcp. + +53. es-set-tostringtag-2.1.0 Copyright (c) 2022 ECMAScript Shims -23. @vue/runtime-dom-3.5.17 -Copyright (c) 2018-present, Yuxi (Evan) You and Vue contributors +54. escalade-3.2.0 +Copyright [Luke Edwards](https: lukeed.com), Copyright (c) Luke Edwards (lukeed.com) -24. @vue/reactivity-3.5.17 -Copyright (c) 2018-present, Yuxi (Evan) You and Vue contributors +55. core-base-11.1.12 +Copyright (c) core-base authors. +You may obtain the source code and detailed information about this component at https://github.com/intlify/vue-i18n/tree/master/packages/core-base#readme. -25. de-indent-1.0.2 -Copyright(c) 2025 Evan You +56. wasm-opt-1.14.1 +Copyright (c) wasm-opt authors. +You may obtain the source code and detailed information about this component at https://github.com/xtuc/webassemblyjs#readme. -26. @babel/template-7.27.2 +57. devtools-shared-7.7.7 +Copyright (c) devtools-shared authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/devtools#readme. + +58. httpx-sse-0.4.3 +Copyright (c) httpx-sse authors. +You may obtain the source code and detailed information about this component at https://github.com/florimondmanca/httpx-sse. + +59. asynckit-0.4.0 +Copyright (c) 2016 Alex Indigo + +60. parser-7.28.0 +Copyright (c) parser authors. +You may obtain the source code and detailed information about this component at https://babel.dev/docs/en/next/babel-parser. + +61. jsonschema-specifications-2025.9.1 +Copyright (c) jsonschema-specifications authors. +You may obtain the source code and detailed information about this component at https://pypi.org/project/jsonschema-specifications/. + +62. node-22.16.3 +Copyright (c) node authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node. + +63. linux-x64-1.3.0 +Copyright (c) linux-x64 authors. +You may obtain the source code and detailed information about this component at https://github.com/cloudcannon/pagefind#readme. + +64. @intlify/core-base-11.1.12 +Copyright (c) @intlify/core-base authors. +You may obtain the source code and detailed information about this component at https://github.com/intlify/vue-i18n/tree/master/packages/core-base#readme. + +65. wasm-gen-1.14.1 +Copyright (c) wasm-gen authors. +You may obtain the source code and detailed information about this component at https://github.com/xtuc/webassemblyjs#readme. + +66. @vue/devtools-api-7.7.7 +Copyright (c) @vue/devtools-api authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/devtools#readme. + +67. @intlify/shared-11.1.12 +Copyright (c) @intlify/shared authors. +You may obtain the source code and detailed information about this component at https://github.com/intlify/vue-i18n/tree/master/packages/shared#readme. + +68. @jridgewell/sourcemap-codec-1.5.4 +Copyright (c) @jridgewell/sourcemap-codec authors. +You may obtain the source code and detailed information about this component at https://github.com/jridgewell/sourcemaps/tree/main/packages/sourcemap-codec. + +69. markitdown-0.1.3 +Copyright (c) markitdown authors. +You may obtain the source code and detailed information about this component at https://pypi.org/project/markitdown/. + +70. @webassemblyjs/helper-numbers-1.13.2 +Copyright (c) 2018 Sven Sauleau + +71. @jridgewell/trace-mapping-0.3.29 +Copyright (c) @jridgewell/trace-mapping authors. +You may obtain the source code and detailed information about this component at https://github.com/jridgewell/sourcemaps/tree/main/packages/trace-mapping. + +72. gopkg.in/yaml.v3-3.0.1 +Copyright (c) gopkg.in/yaml.v3 authors. +You may obtain the source code and detailed information about this component at https://goproxy.cn/gopkg.in/yaml.v3/@v/v3.0.1.zip. + +73. json-schema-traverse-1.0.0 +Copyright (c) 2017 Evgeny Poberezkin + +74. github.com/spf13/viper-1.20.1 +Copyright (c) github.com/spf13/viper authors. +You may obtain the source code and detailed information about this component at github.com/spf13/viper. + +75. form-data-4.0.4 +Copyright (c) form-data authors. +You may obtain the source code and detailed information about this component at https://github.com/form-data/form-data#readme. + +76. github.com/jinzhu/now-1.1.5 +Copyright (c) github.com/jinzhu/now authors. +You may obtain the source code and detailed information about this component at github.com/jinzhu/now. + +77. lodash-es-4.17.21 +Copyright 2012-2015 The Dojo Foundation , Copyright 2012-2016 The Dojo Foundation , Copyright 2012 John-David Dalton , Copyright (c) 2012 Kit Cambridge., Copyright (c) 2007, Parakey Inc., Copyright JS Foundation and other contributors , Copyright (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative, Copyright (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative, Copyright (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative, Copyright (c) 2010-2012 Jeremy Ashkenas, DocumentCloud, Copyright (c) 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative, Copyright (c) 2010-2013 Jeremy Ashkenas, DocumentCloud, Copyright (c) 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative, Copyright (c) 2010-2014 Jeremy Ashkenas, DocumentCloud, Copyright 2012-2013 The Dojo Foundation , Copyright (c) 2010-2015 Jeremy Ashkenas, DocumentCloud, Copyright 2010-2012 Mathias Bynens , Copyright (c) 2010-2016 Jeremy Ashkenas, DocumentCloud, Copyright 2010-2013 Mathias Bynens , Copyright 2010-2015 Mathias Bynens , Copyright (c) 2009-2012 Jeremy Ashkenas, DocumentCloud, Copyright 2011-2012 John-David Dalton , Copyright (c) 2009-2013 Jeremy Ashkenas, DocumentCloud, Copyright 2011-2013 John-David Dalton , Copyright (c) 2010-2013 Brian Cavalier and John Hann, Copyright jQuery Foundation and other contributors , Copyright (c) 2010-2011, The Dojo Foundation, Copyright OpenJS Foundation and other contributors + +78. @webassemblyjs/helper-wasm-bytecode-1.13.2 +Copyright (c) 2018 Sven Sauleau + +79. textract-1.6.5 +Copyright (c) textract authors. +You may obtain the source code and detailed information about this component at https://github.com/deanmalmgren/textract. + +80. @babel/helper-string-parser-7.27.1 Copyright (c) 2014-present Sebastian McKenzie and other contributors -27. tdesign-icons-vue-next-0.3.6 -Copyright (c) 2021-present TDesign +81. @webassemblyjs/utf8-1.13.2 +Copyright (c) 2018 Sven Sauleau -28. webpack-5.100.1 +82. birpc-2.5.0 +Copyright (c) birpc authors. +You may obtain the source code and detailed information about this component at https://github.com/antfu/birpc#readme. + +83. typing-inspection-0.4.2 +Copyright (c) typing-inspection authors. +You may obtain the source code and detailed information about this component at https://github.com/pydantic/typing-inspection. + +84. tapable-2.2.2 +Copyright (c) tapable authors. +You may obtain the source code and detailed information about this component at https://github.com/webpack/tapable. + +85. gopd-1.2.0 +Copyright (c) 2022 Jordan Harband + +86. devtools-api-6.6.4 +Copyright (c) devtools-api authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/devtools#readme. + +87. annotated-types-0.7.0 +Copyright (c) 2022 the contributors + +88. @webassemblyjs/ast-1.14.1 +Copyright (c) 2018 Sven Sauleau + +89. hasown-2.0.2 +Copyright (c) 2014 Radu Brehar + +90. safe-buffer-5.2.1 +Copyright (c) Feross Aboukhadijeh, Copyright (C) [Feross Aboukhadijeh](http: feross.org) + +91. darwin-arm64-1.3.0 +Copyright (c) darwin-arm64 authors. +You may obtain the source code and detailed information about this component at https://github.com/cloudcannon/pagefind#readme. + +92. helper-api-error-1.13.2 +Copyright (c) helper-api-error authors. +You may obtain the source code and detailed information about this component at https://github.com/xtuc/webassemblyjs#readme. + +93. github.com/panjf2000/ants-2.11.2 +Copyright (c) github.com/panjf2000/ants authors. +You may obtain the source code and detailed information about this component at github.com/panjf2000/ants. + +94. superjson-2.2.2 +Copyright (c) superjson authors. +You may obtain the source code and detailed information about this component at https://github.com/blitz-js/superjson#readme. + +95. github.com/mattn/go-isatty-0.0.20 +Copyright (c) github.com/mattn/go-isatty authors. +You may obtain the source code and detailed information about this component at github.com/mattn/go-isatty. + +96. @vue/compiler-dom-3.5.17 +Copyright (c) @vue/compiler-dom authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/compiler-dom#readme. + +97. estree-walker-2.0.2 +Copyright (c) estree-walker authors. +You may obtain the source code and detailed information about this component at https://github.com/Rich-Harris/estree-walker#readme. + +98. ajv-8.17.1 +Copyright (c) 2015-2021 Evgeny Poberezkin + +99. mime-types-2.1.35 +Copyright (c) 2014 Jonathan Ong , Copyright (c) 2015 Douglas Christopher Wilson + +100. setuptools-80.9.0 +(c) 2014 YOOtheme MIT License , Copyright (C) 2016 Jason R Coombs , Copyright (c) 2010 - 2016 jsPlumb (hello@jsplumbtoolkit.com) + +101. reactivity-3.5.17 +Copyright (c) reactivity authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/reactivity#readme. + +102. @types/tinycolor2-1.4.6 +Copyright (c) @types/tinycolor2 authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/tinycolor2. + +103. commander-2.20.3 +Copyright (c) 2011 TJ Holowaychuk + +104. utf8-1.13.2 +Copyright (c) utf8 authors. +You may obtain the source code and detailed information about this component at https://github.com/xtuc/webassemblyjs#readme. + +105. json-schema-7.0.15 +Copyright (c) json-schema authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/json-schema. + +106. @vue/compiler-sfc-3.5.17 +Copyright (c) @vue/compiler-sfc authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/compiler-sfc#readme. + +107. schema-utils-4.3.2 Copyright JS Foundation and other contributors -29. asynq-0.25.1 -Copyright (c) 2019 Kentaro Hibino +108. github.com/subosito/gotenv-1.6.0 +Copyright (c) github.com/subosito/gotenv authors. +You may obtain the source code and detailed information about this component at github.com/subosito/gotenv. -30. shell-quote-1.8.3 -Copyright (c) 2013 James Halliday (mail@substack.net) +109. es-define-property-1.0.1 +Copyright (c) es-define-property authors. +You may obtain the source code and detailed information about this component at https://github.com/ljharb/es-define-property#readme. -31. acorn-8.15.0 -Copyright(c) 2025 acorn original author and authors +110. windows-x64-1.3.0 +Copyright (c) windows-x64 authors. +You may obtain the source code and detailed information about this component at https://github.com/cloudcannon/pagefind#readme. -32. esbuild-0.25.6 -Copyright (c) 2020 Evan Wallace +111. referencing-0.37.0 +Copyright (c) referencing authors. +You may obtain the source code and detailed information about this component at https://pypi.org/project/referencing/. -33. tdesign-vue-next-1.14.2 -Copyright (c) 2021-present TDesign +112. source-map-0.3.10 +Copyright (c) source-map authors. +You may obtain the source code and detailed information about this component at https://github.com/jridgewell/sourcemaps/tree/main/packages/source-map. -34. @vue/runtime-core-3.5.17 -Copyright (c) 2018-present, Yuxi (Evan) You and Vue contributors +113. github.com/chromedp/sysutil-1.1.0 +Copyright (c) github.com/chromedp/sysutil authors. +You may obtain the source code and detailed information about this component at github.com/chromedp/sysutil. -35. validator-13.15.15 -Q29weXJpZ2h0IChjKSAyMDE4IENocmlzIE8nSGFyYSA8Y29oYXJhODdAZ21haWwuY29tPg== +114. github.com/chromedp/chromedp-0.14.2 +Copyright (c) github.com/chromedp/chromedp authors. +You may obtain the source code and detailed information about this component at github.com/chromedp/chromedp. -36. postcss-8.5.6 -Copyright 2013 Andrey Sitnik +115. docreader-1.0 +Copyright (c) docreader authors. +You may obtain the source code and detailed information about this component at https://github.com/CBWhiz/docreader. -37. mimetype-1.4.8 -Copyright (c) 2018 Gabriel Vasile +116. estree-1.0.8 +Copyright (c) estree authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree. -38. @babel/helper-globals-7.28.0 +117. darwin-x64-1.3.0 +Copyright (c) darwin-x64 authors. +You may obtain the source code and detailed information about this component at https://github.com/cloudcannon/pagefind#readme. + +118. @jridgewell/source-map-0.3.10 +Copyright (c) @jridgewell/source-map authors. +You may obtain the source code and detailed information about this component at https://github.com/jridgewell/sourcemaps/tree/main/packages/source-map. + +119. @types/lodash-es-4.17.12 +Copyright (c) Microsoft Corporation. All rights reserved. + +120. @microsoft/fetch-event-source-2.0.1 +Copyright (c) @microsoft/fetch-event-source authors. +You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@microsoft/fetch-event-source. + +121. has-symbols-1.1.0 +Copyright (c) 2016 Jordan Harband + +122. server-renderer-3.5.17 +Copyright (c) server-renderer authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/server-renderer#readme. + +123. @vue/server-renderer-3.5.17 +Copyright (c) @vue/server-renderer authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/server-renderer#readme. + +124. vue-3.5.17 +Copyright (c) vue authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/vue#readme. + +125. @types/papaparse-5.5.0 +Copyright (c) @types/papaparse authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/papaparse. + +126. function-bind-1.1.2 +Copyright (c) 2013 Raynos. + +127. axios-1.13.2 +Copyright (c) axios authors. +You may obtain the source code and detailed information about this component at https://axios-http.com. + +128. @webassemblyjs/wasm-gen-1.14.1 +Copyright (c) 2018 Sven Sauleau + +129. gorm.io/gorm-1.25.12 +Copyright (c) gorm.io/gorm authors. +You may obtain the source code and detailed information about this component at gorm.io/gorm. + +130. @pagefind/windows-x64-1.3.0 +Copyright (c) @pagefind/windows-x64 authors. +You may obtain the source code and detailed information about this component at https://github.com/pagefind/pagefind#readme. + +131. github.com/lib/pq-1.10.9 +Copyright (c) github.com/lib/pq authors. +You may obtain the source code and detailed information about this component at github.com/lib/pq. + +132. github.com/jackc/puddle-2.2.2 +Copyright (c) github.com/jackc/puddle authors. +You may obtain the source code and detailed information about this component at github.com/jackc/puddle. + +133. mime-db-1.52.0 +Copyright (c) 2014 Jonathan Ong , Copyright (c) 2015-2022 Douglas Christopher Wilson + +134. github.com/robfig/cron-3.0.1 +Copyright (c) github.com/robfig/cron authors. +You may obtain the source code and detailed information about this component at github.com/robfig/cron. + +135. buffer-from-1.1.2 +Copyright (c) 2016, 2018 Linus Unneb ck + +136. json-parse-even-better-errors-2.3.1 +Copyright 2017 Kat March n, Copyright 2017 Kat March5.n + +137. @types/eslint-scope-3.7.7 +Copyright (c) Microsoft Corporation. + +138. randombytes-2.1.0 +Copyright (c) 2017 crypto-browserify + +139. runtime-7.27.6 +Copyright (c) runtime authors. +You may obtain the source code and detailed information about this component at https://babel.dev/docs/en/next/babel-runtime. + +140. github.com/buger/jsonparser-1.1.1 +Copyright (c) github.com/buger/jsonparser authors. +You may obtain the source code and detailed information about this component at github.com/buger/jsonparser. + +141. marked-5.1.2 +Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License), Copyright (c) 2018+, MarkedJS (https: github.com markedjs ), Copyright 2004, John Gruber, Copyright (c) 2011, Christopher Jeffrey (http: epsilon-not.net ), Copyright (c) 2011-2012, Christopher Jeffrey. (MIT License), Copyright (c) 2011-2013, Christopher Jeffrey. (MIT License), Copyright (c) 2011-2022, Christopher Jeffrey. (MIT License), Copyright (c) 2011-2014, Christopher Jeffrey. (MIT License), Copyright (c) 2011-2013, Christopher Jeffrey (https: github.com chjj ), Copyright (c) 2011-2014, Christopher Jeffrey (https: github.com chjj ) + +142. @vue/devtools-api-6.6.4 +Copyright (c) @vue/devtools-api authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/devtools#readme. + +143. github.com/jinzhu/inflection-1.0.0 +Copyright (c) github.com/jinzhu/inflection authors. +You may obtain the source code and detailed information about this component at github.com/jinzhu/inflection. + +144. dunder-proto-1.0.1 +Copyright (c) dunder-proto authors. +You may obtain the source code and detailed information about this component at https://github.com/es-shims/dunder-proto#readme. + +145. get-intrinsic-1.3.0 +Copyright (c) 2020 Jordan Harband + +146. is-what-4.1.16 +Copyright (c) 2018 Luca Ban - Mesqueeb, Copyright (c) 2018 Luca Ban - Mesqueeb Productions + +147. message-compiler-11.1.12 +Copyright (c) message-compiler authors. +You may obtain the source code and detailed information about this component at https://github.com/intlify/vue-i18n/tree/master/packages/message-compiler#readme. + +148. helper-string-parser-7.27.1 +Copyright (c) helper-string-parser authors. +You may obtain the source code and detailed information about this component at https://babel.dev/docs/en/next/babel-helper-string-parser. + +149. github.com/spf13/cast-1.10.0 +Copyright (c) github.com/spf13/cast authors. +You may obtain the source code and detailed information about this component at github.com/spf13/cast. + +150. tdesign-vue-next-1.17.2 +Copyright (c) tdesign-vue-next authors. +You may obtain the source code and detailed information about this component at https://github.com/Tencent/tdesign-vue-next/blob/develop/README.md. + +151. github.com/clbanning/mxj-1.8.4 +Copyright (c) github.com/clbanning/mxj authors. +You may obtain the source code and detailed information about this component at github.com/clbanning/mxj. + +152. github.com/cespare/xxhash-2.3.0 +Copyright (c) github.com/cespare/xxhash authors. +You may obtain the source code and detailed information about this component at github.com/cespare/xxhash. + +153. require-from-string-2.0.2 +Copyright [Vsevolod Strukchinsky](http: github.com floatdrop), Copyright (c) Vsevolod Strukchinsky (github.com floatdrop) + +154. github.com/olekukonko/tablewriter-0.0.5 +Copyright (c) github.com/olekukonko/tablewriter authors. +You may obtain the source code and detailed information about this component at github.com/olekukonko/tablewriter. + +155. @vue/devtools-shared-7.7.7 +Copyright (c) @vue/devtools-shared authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/devtools#readme. + +156. papaparse-5.5.0 +Copyright (c) papaparse authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/papaparse. + +157. ast-1.14.1 +Copyright (c) ast authors. +You may obtain the source code and detailed information about this component at https://github.com/xtuc/webassemblyjs#readme. + +158. github.com/rivo/uniseg-0.4.7 +Copyright (c) github.com/rivo/uniseg authors. +You may obtain the source code and detailed information about this component at github.com/rivo/uniseg. + +159. runtime-dom-3.5.17 +Copyright (c) runtime-dom authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/runtime-dom#readme. + +160. pydantic-2.12.5 +Copyright (c) pydantic authors. +You may obtain the source code and detailed information about this component at https://pypi.org/project/pydantic/. + +161. helper-wasm-section-1.14.1 +Copyright (c) helper-wasm-section authors. +You may obtain the source code and detailed information about this component at https://github.com/xtuc/webassemblyjs#readme. + +162. github.com/gin-contrib/sse-1.0.0 +Copyright (c) github.com/gin-contrib/sse authors. +You may obtain the source code and detailed information about this component at github.com/gin-contrib/sse. + +163. gopkg.in/yaml-3.0.1 +Copyright (c) gopkg.in/yaml authors. +You may obtain the source code and detailed information about this component at gopkg.in/yaml.v3. + +164. github.com/mattn/go-runewidth-0.0.15 +Copyright (c) github.com/mattn/go-runewidth authors. +You may obtain the source code and detailed information about this component at github.com/mattn/go-runewidth. + +165. @types/trusted-types-2.0.7 +Copyright (c) @types/trusted-types authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/trusted-types. + +166. perfect-debounce-1.0.0 +Copyright (c) perfect-debounce authors. +You may obtain the source code and detailed information about this component at https://github.com/unjs/perfect-debounce#readme. + +167. webpack-sources-3.3.3 +Copyright (c) webpack-sources authors. +You may obtain the source code and detailed information about this component at https://github.com/webpack/webpack-sources#readme. + +168. @babel/types-7.28.1 +Copyright (c) @babel/types authors. +You may obtain the source code and detailed information about this component at https://babel.dev/docs/en/next/babel-types. + +169. @intlify/message-compiler-11.1.12 +Copyright (c) @intlify/message-compiler authors. +You may obtain the source code and detailed information about this component at https://github.com/intlify/vue-i18n/tree/master/packages/message-compiler#readme. + +170. github.com/tiendc/go-deepcopy-1.7.1 +Copyright (c) github.com/tiendc/go-deepcopy authors. +You may obtain the source code and detailed information about this component at github.com/tiendc/go-deepcopy. + +171. @vue/devtools-kit-7.7.7 +Copyright (c) @vue/devtools-kit authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/devtools#readme. + +172. pydantic_core-2.41.5 +Copyright (c) pydantic_core authors. +You may obtain the source code and detailed information about this component at https://github.com/pydantic/pydantic-core. + +173. @vue/shared-3.5.17 +Copyright (c) @vue/shared authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/shared#readme. + +174. @babel/runtime-7.27.6 Copyright (c) 2014-present Sebastian McKenzie and other contributors -39. @babel/helper-create-class-features-plugin-7.27.1 -Copyright (c) 2014-present Sebastian McKenzieg and other contributors +175. qcloud_cos-3.3.6 +Copyright (c) qcloud_cos authors. +You may obtain the source code and detailed information about this component at https://pypi.org/project/qcloud_cos/. -40. @babel/helper-replace-supers-7.27.1 -Copyright (c) 2014-present Sebastian McKenzie and other contributors +176. @jridgewell/gen-mapping-0.3.12 +Copyright (c) @jridgewell/gen-mapping authors. +You may obtain the source code and detailed information about this component at https://github.com/jridgewell/sourcemaps/tree/main/packages/gen-mapping. -41. is-what-3.14.1 +177. lodash-4.17.20 +Copyright (c) lodash authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/lodash. + +178. tinycolor2-1.4.6 +Copyright (c) tinycolor2 authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/tinycolor2. + +179. gorm.io/driver/postgres-1.5.11 +Copyright (c) gorm.io/driver/postgres authors. +You may obtain the source code and detailed information about this component at gorm.io/driver/postgres. + +180. github.com/json-iterator/go-1.1.12 +Copyright (c) github.com/json-iterator/go authors. +You may obtain the source code and detailed information about this component at github.com/json-iterator/go. + +181. @webassemblyjs/wasm-edit-1.14.1 +Copyright (c) 2018 Sven Sauleau + +182. @types/estree-1.0.8 +Copyright (c) @types/estree authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree. + +183. dompurify-3.0.5 +Copyright (c) dompurify authors. +You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/dompurify. + +184. compiler-sfc-3.5.17 +Copyright (c) compiler-sfc authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/compiler-sfc#readme. + +185. github.com/pgvector/pgvector-go-0.3.0 +Copyright (c) github.com/pgvector/pgvector-go authors. +You may obtain the source code and detailed information about this component at github.com/pgvector/pgvector-go. + +186. magic-string-0.30.17 +Copyright (c) magic-string authors. +You may obtain the source code and detailed information about this component at https://github.com/rich-harris/magic-string#readme. + +187. chrome-trace-event-1.0.4 +Copyright (c) 2015 Joyent Inc. All rights reserved. + +188. pydantic-settings-2.12.0 +Copyright (c) pydantic-settings authors. +You may obtain the source code and detailed information about this component at https://pypi.org/project/pydantic-settings/. + +189. gen-mapping-0.3.12 +Copyright (c) gen-mapping authors. +You may obtain the source code and detailed information about this component at https://github.com/jridgewell/sourcemaps/tree/main/packages/gen-mapping. + +190. is-what-3.14.1 Copyright (c) 2018 Luca Ban - Mesqueeb -42. @rolldown/pluginutils-1.0.0-beta.27 -Copyright (c) 2024-present VoidZero Inc. & Contributors +191. @vue/reactivity-3.5.17 +Copyright (c) @vue/reactivity authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/reactivity#readme. -43. ollama-0.9.6 -Copyright (c) Ollama +192. es-module-lexer-1.7.0 +Copyright (c) es-module-lexer authors. +You may obtain the source code and detailed information about this component at https://github.com/guybedford/es-module-lexer#readme. -44. locafero-0.7.0 -Copyright (c) 2023 Márk Sági-Kazar +193. github.com/mailru/easyjson-0.9.0 +Copyright (c) github.com/mailru/easyjson authors. +You may obtain the source code and detailed information about this component at github.com/mailru/easyjson. -45. stylus->=0.54.8 -Copyright (c) Automatttic +194. es-object-atoms-1.1.1 +Copyright (c) es-object-atoms authors. +You may obtain the source code and detailed information about this component at https://github.com/ljharb/es-object-atoms#readme. -46. @vue/language-core-2.2.12 -Copyright (c) 2021-present Johnson Chu +195. github.com/cenkalti/backoff-5.0.2 +Copyright (c) github.com/cenkalti/backoff authors. +You may obtain the source code and detailed information about this component at github.com/cenkalti/backoff. -47. @babel/parser-7.28.0 -Copyright (c) 2014-present Sebastian MacKenzie and other contributors +196. github.com/sagikazarmark/locafero-0.7.0 +Copyright (c) github.com/sagikazarmark/locafero authors. +You may obtain the source code and detailed information about this component at github.com/sagikazarmark/locafero. -48. cos-go-sdk-v5-0.7.65 -Copyright (c) 2017 mozillazg +197. @webassemblyjs/wasm-opt-1.14.1 +Copyright (c) 2018 Sven Sauleau -49. @rolldown/pluginutils-1.0.0-beta.19 -Copyright (c) 2024-present VoidZero Inc. & Contributors +198. @pagefind/darwin-arm64-1.3.0 +Copyright (c) @pagefind/darwin-arm64 authors. +You may obtain the source code and detailed information about this component at https://github.com/pagefind/pagefind#readme. -50. @vue/compiler-core-3.5.17 -Copyright (c) 2018-present, Yuxi (Evan) You and Vue contributors +199. wasm-parser-1.14.1 +Copyright (c) wasm-parser authors. +You may obtain the source code and detailed information about this component at https://github.com/xtuc/webassemblyjs#readme. -51. @vue/shared-3.5.17 -Copyright (c) 2018-present, Yuxi (Evan) You and Vue contributors +200. @webassemblyjs/helper-buffer-1.14.1 +Copyright (c) 2018 Sven Sauleau -52. @vitejs/plugin-vue-jsx-5.0.1 -Copyright (c) 2019-present, Yuxi -(Evan) You and Vite contributors +201. papaparse-5.5.3 +Copyright (c) 2014 Matthew Holt, Copyright (c) 2015 Matthew Holt -53. fdir-6.4.6 -Copyright 2023 AbdullAh AttA +202. @pagefind/darwin-x64-1.3.0 +Copyright (c) @pagefind/darwin-x64 authors. +You may obtain the source code and detailed information about this component at https://github.com/pagefind/pagefind#readme. -54. go-rendezvous-0.0.0-20200823014737-9f7001d12a5f -Copyright (c) 2017-2020 Damian Gryski +203. weknora-mcp-server-1.0.0 +Copyright (c) weknora-mcp-server authors. +You may obtain the source code and detailed information about this component at https://github.com/NannaOlympicBroadcast/WeKnoraMCP. -55. @babel/plugin-syntax-jsx-7.27.1 +204. github.com/ollama/ollama-0.11.4 +Copyright (c) github.com/ollama/ollama authors. +You may obtain the source code and detailed information about this component at github.com/ollama/ollama. + +205. github.com/golang-migrate/migrate-4.19.0 +Copyright (c) github.com/golang-migrate/migrate authors. +You may obtain the source code and detailed information about this component at github.com/golang-migrate/migrate. + +206. jsonschema-4.25.1 +Copyright (c) jsonschema authors. +You may obtain the source code and detailed information about this component at https://pypi.org/project/jsonschema/. + +207. math-intrinsics-1.1.0 +Copyright (c) math-intrinsics authors. +You may obtain the source code and detailed information about this component at https://github.com/es-shims/math-intrinsics#readme. + +208. fetch-event-source-2.0.1 +Copyright (c) fetch-event-source authors. +You may obtain the source code and detailed information about this component at https://github.com/Azure/fetch-event-source#readme. + +209. call-bind-apply-helpers-1.0.2 +Copyright (c) call-bind-apply-helpers authors. +You may obtain the source code and detailed information about this component at https://github.com/ljharb/call-bind-apply-helpers#readme. + +210. get-proto-1.0.1 +Copyright (c) get-proto authors. +You may obtain the source code and detailed information about this component at https://github.com/ljharb/get-proto#readme. + +211. github.com/stretchr/testify-1.11.1 +Copyright (c) github.com/stretchr/testify authors. +You may obtain the source code and detailed information about this component at github.com/stretchr/testify. + +212. @types/sortablejs-1.15.8 +Copyright (c) @types/sortablejs authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/sortablejs. + +213. github.com/gabriel-vasile/mimetype-1.4.8 +Copyright (c) github.com/gabriel-vasile/mimetype authors. +You may obtain the source code and detailed information about this component at github.com/gabriel-vasile/mimetype. + +214. github.com/jackc/pgservicefile-0.0.0-20240606120523-5a60cdf6a761 +Copyright (c) github.com/jackc/pgservicefile authors. +You may obtain the source code and detailed information about this component at github.com/jackc/pgservicefile. + +215. github.com/ugorji/go/codec-1.2.12 +Copyright (c) github.com/ugorji/go/codec authors. +You may obtain the source code and detailed information about this component at github.com/ugorji/go/codec. + +216. webpack-5.100.1 +Copyright (c) webpack authors. +You may obtain the source code and detailed information about this component at https://github.com/webpack/webpack. + +217. github.com/chromedp/cdproto-0.0.0-20250724212937-08a3db8b4327 +Copyright (c) github.com/chromedp/cdproto authors. +You may obtain the source code and detailed information about this component at github.com/chromedp/cdproto. + +218. compiler-dom-3.5.17 +Copyright (c) compiler-dom authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/compiler-dom#readme. + +219. compiler-core-3.5.17 +Copyright (c) compiler-core authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/compiler-core#readme. + +220. github.com/mitchellh/mapstructure-1.4.3 +Copyright (c) github.com/mitchellh/mapstructure authors. +You may obtain the source code and detailed information about this component at github.com/mitchellh/mapstructure. + +221. nanoid-3.3.11 +Copyright 2017 Andrey Sitnik + +222. @types/validator-13.15.2 +Copyright (c) @types/validator authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/validator. + +223. floating-point-hex-parser-1.13.2 +Copyright (c) floating-point-hex-parser authors. +You may obtain the source code and detailed information about this component at https://github.com/xtuc/webassemblyjs#readme. + +224. delayed-stream-1.0.0 +Copyright (c) 2011 Debuggable Limited + +225. helper-wasm-bytecode-1.13.2 +Copyright (c) helper-wasm-bytecode authors. +You may obtain the source code and detailed information about this component at https://github.com/xtuc/webassemblyjs#readme. + +226. github.com/mozillazg/go-httpheader-0.2.1 +Copyright (c) github.com/mozillazg/go-httpheader authors. +You may obtain the source code and detailed information about this component at github.com/mozillazg/go-httpheader. + +227. @webassemblyjs/helper-api-error-1.13.2 +Copyright (c) 2018 Sven Sauleau + +228. update-browserslist-db-1.1.3 +Copyright 2022 Andrey Sitnik and other contributors, Copyright 2014 Andrey Sitnik + +229. validator-13.15.23 +Copyright (c) validator authors. +You may obtain the source code and detailed information about this component at https://github.com/jfstn/Validator#readme. + +230. wasm-edit-1.14.1 +Copyright (c) wasm-edit authors. +You may obtain the source code and detailed information about this component at https://github.com/xtuc/webassemblyjs#readme. + +231. dayjs-1.11.10 +Copyright (c) 2018-PRESENT, iamkun + +232. proxy-from-env-1.1.0 +Copyright (C) 2016-2018 Rob Wu + +233. github.com/jackc/pgpassfile-1.0.0 +Copyright (c) github.com/jackc/pgpassfile authors. +You may obtain the source code and detailed information about this component at github.com/jackc/pgpassfile. + +234. tdesign-icons-vue-next-0.4.1 +Copyright (c) tdesign-icons-vue-next authors. +You may obtain the source code and detailed information about this component at https://github.com/Tencent/tdesign-icons/blob/develop/README.md. + +235. @types/eslint-9.6.1 +Copyright (c) Microsoft Corporation. All rights reserved. + +236. sourcemap-codec-1.5.4 +Copyright (c) sourcemap-codec authors. +You may obtain the source code and detailed information about this component at https://github.com/jridgewell/sourcemaps/tree/main/packages/sourcemap-codec. + +237. loader-runner-4.3.0 +Copyright (c) Tobias Koppers @sokra + +238. github.com/jackc/pgx-5.7.2 +Copyright (c) github.com/jackc/pgx authors. +You may obtain the source code and detailed information about this component at github.com/jackc/pgx. + +239. charset-normalizer-3.4.4 +Copyright (c) charset-normalizer authors. +You may obtain the source code and detailed information about this component at https://github.com/Ousret/charset_normalizer. + +240. @webassemblyjs/wasm-parser-1.14.1 +Copyright (c) 2018 Sven Sauleau + +241. github.com/gin-gonic/gin-1.10.0 +Copyright (c) github.com/gin-gonic/gin authors. +You may obtain the source code and detailed information about this component at github.com/gin-gonic/gin. + +242. acorn-import-phases-1.0.4 +Copyright (c) acorn-import-phases authors. +You may obtain the source code and detailed information about this component at https://github.com/nicolo-ribaudo/acorn-import-phases#readme. + +243. postcss-8.5.6 +Copyright (c) postcss authors. +You may obtain the source code and detailed information about this component at https://postcss.org/. + +244. @types/lodash-4.17.20 +Copyright (c) @types/lodash authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/lodash. + +245. github.com/sirupsen/logrus-1.9.3 +Copyright (c) github.com/sirupsen/logrus authors. +You may obtain the source code and detailed information about this component at github.com/sirupsen/logrus. + +246. @pagefind/linux-x64-1.3.0 +Copyright (c) @pagefind/linux-x64 authors. +You may obtain the source code and detailed information about this component at https://github.com/pagefind/pagefind#readme. + +247. github.com/go-playground/locales-0.14.1 +Copyright (c) github.com/go-playground/locales authors. +You may obtain the source code and detailed information about this component at github.com/go-playground/locales. + +248. github.com/andybalholm/brotli-1.1.0 +Copyright (c) github.com/andybalholm/brotli authors. +You may obtain the source code and detailed information about this component at github.com/andybalholm/brotli. + +249. node-releases-2.0.19 +Copyright (c) 2017 Sergey Rubanov (https: github.com chicoxyzzy) + +250. neo-async-2.6.2 +Copyright (c) 2014-2018 Suguru Motegi + +251. eslint-9.6.1 +Copyright (c) eslint authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/eslint. + +252. github.com/dgryski/go-rendezvous-0.0.0-20200823014737-9f7001d12a5f +Copyright (c) github.com/dgryski/go-rendezvous authors. +You may obtain the source code and detailed information about this component at github.com/dgryski/go-rendezvous. + +253. jest-worker-27.5.1 +Copyright (c) Facebook, Inc. and its affiliates. + +254. attrs-25.4.0 +Copyright (c) attrs authors. +You may obtain the source code and detailed information about this component at https://pypi.org/project/attrs/. + +255. helper-buffer-1.14.1 +Copyright (c) helper-buffer authors. +You may obtain the source code and detailed information about this component at https://github.com/xtuc/webassemblyjs#readme. + +256. @types/json-schema-7.0.15 +Copyright (c) Microsoft Corporation. + +257. @jridgewell/resolve-uri-3.1.2 +Copyright 2019 Justin Ridgewell + +258. fast-deep-equal-3.1.3 +Copyright (c) 2017 Evgeny Poberezkin + +259. shared-11.1.12 +Copyright (c) shared authors. +You may obtain the source code and detailed information about this component at https://github.com/intlify/vue-i18n/tree/master/packages/shared#readme. + +260. has-tostringtag-1.0.2 +Copyright (c) 2021 Inspect JS + +261. github.com/klauspost/cpuid-2.2.10 +Copyright (c) github.com/klauspost/cpuid authors. +You may obtain the source code and detailed information about this component at github.com/klauspost/cpuid. + +262. ollama-0.6.1 +Copyright (c) ollama authors. +You may obtain the source code and detailed information about this component at https://ollama.com. + +263. helper-numbers-1.13.2 +Copyright (c) helper-numbers authors. +You may obtain the source code and detailed information about this component at https://github.com/xtuc/webassemblyjs#readme. + +264. github.com/gobwas/ws-1.4.0 +Copyright (c) github.com/gobwas/ws authors. +You may obtain the source code and detailed information about this component at github.com/gobwas/ws. + +265. @webassemblyjs/floating-point-hex-parser-1.13.2 +Copyright (c) 2017 Mauro Bringolf + +266. shared-3.5.17 +Copyright (c) shared authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/shared#readme. + +267. copy-anything-3.0.5 +Copyright (c) 2018 Luca Ban + +268. github.com/gobwas/pool-0.2.1 +Copyright (c) github.com/gobwas/pool authors. +You may obtain the source code and detailed information about this component at github.com/gobwas/pool. + +269. trace-mapping-0.3.29 +Copyright (c) trace-mapping authors. +You may obtain the source code and detailed information about this component at https://github.com/jridgewell/sourcemaps/tree/main/packages/trace-mapping. + +270. @babel/helper-validator-identifier-7.27.1 Copyright (c) 2014-present Sebastian McKenzie and other contributors -56. @vue/compiler-ssr-3.5.17 -Copyright (c) 2018-present, Yuxi (Evan) You and Vue contributors +271. github.com/rs/xid-1.6.0 +Copyright (c) github.com/rs/xid authors. +You may obtain the source code and detailed information about this component at github.com/rs/xid. -57. @babel/helper-member-expression-to-functions-7.27.1 -Copyright (c) 2014-present Sebastian McKenzie and other contributors +272. helper-validator-identifier-7.27.1 +Copyright (c) helper-validator-identifier authors. +You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/helper-validator-identifier. -58. es-module-lexer-1.7.0 -Copyright (C) 2018-2022 Guy Bedford +273. urllib3-2.5.0 +Copyright (c) 2008-2020 Andrey Petrov and contributors (see CONTRIBUTORS.txt) -59. vue-router-4.5.1 -Copyright (c) 2019-present Eduardo San Martin Morote +274. devtools-kit-7.7.7 +Copyright (c) devtools-kit authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/devtools#readme. -60. @babel/helper-validator-option-7.27.1 -Copyright (c) 2014-present Sebastian McKenzie and other contributors +275. compiler-ssr-3.5.17 +Copyright (c) compiler-ssr authors. +You may obtain the source code and detailed information about this component at https://github.com/vuejs/core/tree/main/packages/compiler-ssr#readme. -61. @vue/compiler-sfc-3.5.17 -Copyright (c) 2018-present, Yuxi (Evan) You and Vue contributors +276. rfdc-1.4.1 +Copyright 2019 David Mark Clements -62. @vue/devtools-shared-7.7.7 -Copyright (c) 2023 webfansplz +277. enhanced-resolve-5.18.2 +Copyright (c) enhanced-resolve authors. +You may obtain the source code and detailed information about this component at http://github.com/webpack/enhanced-resolve. -63. gensync-1.0.0-beta.2 -Copyright 2018 Logan Smyth +278. github.com/hibiken/asynq-0.25.1 +Copyright (c) github.com/hibiken/asynq authors. +You may obtain the source code and detailed information about this component at github.com/hibiken/asynq. -64. @rspack/core-0.x || 1.x -Copyright (c) 2022-present Bytsedance Inc. and its affiliates. +279. mitt-3.0.1 +Copyright (c) 2021 Jason Miller, Copyright (c) 2017 Jason Miller, Copyright [Jason Miller](https: jasonformat.com ) -65. jiti->=1.21.0 -Copyright (c) Pooya Parsa +280. follow-redirects-1.15.9 +Copyright 2017 Olivier Lalonde , James Talmage , Ruben Verborgh -66. pgservicefile-0.0.0-20240606120523-5a60cdf6a761 -Copyright (c) 2020 Jack Christensens +281. csstype-3.1.3 +Copyright (c) 2017-2018 Fredrik Nicol -67. @types/validator-13.15.2 -Copyright(c) 2025 @types/validator original author and authors +282. github.com/leodido/go-urn-1.4.0 +Copyright (c) github.com/leodido/go-urn authors. +You may obtain the source code and detailed information about this component at github.com/leodido/go-urn. -68. @vue/devtools-api-7.7.7 -Copyright (c) 2023 webfansplz +283. @webassemblyjs/ieee754-1.13.2 +Copyright (c) 2018 Sven Sauleau -69. tapable-2.2.2 -Copyright JS Foundation and -other contributors +284. github.com/klauspost/compress-1.18.0 +Copyright (c) github.com/klauspost/compress authors. +You may obtain the source code and detailed information about this component at github.com/klauspost/compress. -70. @vitejs/plugin-vue-6.0.0 -Copyright (c) 2019-present, Yuxhi (Evan) You and Vite contributors +285. @webassemblyjs/wast-printer-1.14.1 +Copyright (c) 2018 Sven Sauleau -71. @babel/core-7.28.0 -Copyright (c) 2014-present Sebastian McInerney and other contributors +286. es-errors-1.3.0 +Copyright (c) es-errors authors. +You may obtain the source code and detailed information about this component at https://github.com/ljharb/es-errors#readme. -72. @babel/types-7.28.1 -Copyright (c) 2014-present Sebastian McPkenzie and other contributors +287. github.com/tencentyun/cos-go-sdk-v5-0.7.65 +Copyright (c) github.com/tencentyun/cos-go-sdk-v5 authors. +You may obtain the source code and detailed information about this component at github.com/tencentyun/cos-go-sdk-v5. -73. @babel/compat-data-7.28.0 -Copyright (c) 2014-present Sebastian MacKenzie and other contributors +288. @types/dompurify-3.0.5 +Copyright (c) @types/dompurify authors. +You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@types/dompurify. -74. @volar/typescript-2.4.15 -Copyright (c) 2021-present Johnson Chu +289. tinycolor2-1.6.0 +Copyright (c), Brian Grinstead, http: briangrinstead.com, Copyright (c) 2018 Foo Studio -75. @babel/helper-annotate-as-pure-7.27.3 -Copyright (c) 2014-present Sebastian McKenzie and other contributors +290. browserslist-4.25.1 +Copyright (c) browserslist authors. +You may obtain the source code and detailed information about this component at https://github.com/browserslist/browserslist#readme. -76. vite-7.0.4 -Copyright (c) 2019-present, VoidZero Inc. and Vite contributors +291. validator-13.15.2 +Copyright (c) validator authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/validator. -77. @volar/source-map-2.4.15 -Copyright (c) 2021-present Johnson Chu +292. github.com/go-playground/validator-10.26.0 +Copyright (c) github.com/go-playground/validator authors. +You may obtain the source code and detailed information about this component at github.com/go-playground/validator. -78. json-parse-even-better-errors-2.3.1 -Copyright 2017 Kat Marchán -Copyright npm, Inc. +293. pagefind-1.3.0 +Copyright (c) pagefind authors. +You may obtain the source code and detailed information about this component at https://github.com/CloudCannon/pagefind#readme. -79. @vue/compiler-dom-3.5.17 -Copyright (c) 2018-present, Yuxia (Evan) You and Vue contributors +294. github.com/golang-jwt/jwt-5.3.0 +Copyright (c) github.com/golang-jwt/jwt authors. +You may obtain the source code and detailed information about this component at github.com/golang-jwt/jwt. -80. @volar/language-core-2.4.15 -Copyright (c) 2021-present Johnson Chu +295. PyJWT-2.10.1 +Copyright (c) PyJWT authors. +You may obtain the source code and detailed information about this component at https://github.com/jpadilla/pyjwt. -81. @vue/devtools-kit-7.7.7 -Copyright (c) 2023 webfansplz +296. undici-types-6.21.0 +Copyright (c) undici-types authors. +You may obtain the source code and detailed information about this component at https://undici.nodejs.org. -82. @babel/helper-skip-transparent-expression-wrappers-7.27.1 -Copyright (c) 2014-present Sebastian MacKenzie and other contributors +297. core-2.11.8 +Copyright (c) core authors. +You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/core. -83. mitt-3.0.1 -Copyright (c) 2021 Jason Miller +298. github.com/go-viper/mapstructure-2.2.1 +Copyright (c) github.com/go-viper/mapstructure authors. +You may obtain the source code and detailed information about this component at github.com/go-viper/mapstructure. -84. acorn-import-phases-1.0.4 -Copyright (c) 2025 Nicolò Ribaudo +299. @webassemblyjs/helper-wasm-section-1.14.1 +Copyright (c) 2018 Sven Sauleau -85. @babel/helper-string-parser-7.27.1 -Copyright (c) 2014-present Sebastian McKeenzied and other contributors - -86. watchpack-2.4.4 -Copyright JS Foundation and other contributors - -87. @babel/runtime-7.27.6 -Copyright (c) 2014-present Sebastian McKenzie and other contributors - -88. @babel/plugin-transform-typescript-7.28.0 -Copyright (c) 2014-present Sebastian McKenzie and other contributors - -89. jest-worker-27.5.1 -Copyright (c) jest-worker authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/jest-worker. +300. eslint-scope-3.7.7 +Copyright (c) eslint-scope authors. +You may obtain the source code and detailed information about this component at https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/eslint-scope. -Terms of the MIT: +Terms of the mit: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including @@ -1102,68 +2843,26 @@ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -Open Source Software Licensed under the MIT AND ISC AND 0BSD: +Open Source Software Licensed under the mpl-2.0: -------------------------------------------------------------------- -1. rollup-4.45.0 -Copyright(c) 2025 Rich Harris +1. certifi-2023.7.22 +Copyright (c) certifi authors. +You may obtain the source code and detailed information about this component at https://github.com/certifi/python-certifi. + +2. github.com/hashicorp/errwrap-1.1.0 +Copyright (c) github.com/hashicorp/errwrap authors. +You may obtain the source code and detailed information about this component at github.com/hashicorp/errwrap. + +3. github.com/hashicorp/go-multierror-1.1.1 +Copyright (c) github.com/hashicorp/go-multierror authors. +You may obtain the source code and detailed information about this component at github.com/hashicorp/go-multierror. + +4. dompurify-3.2.6 +Copyright 2015 Mario Heiderich, Copyright 2023 Dr.-Ing. Mario Heiderich, Cure53 -Terms of the MIT AND ISC AND 0BSD: -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Open Source Software Licensed under the MIT-CMU: --------------------------------------------------------------------- -1. Pillow-default -Copyright © 1997-2011 by Secret Labs AB -Copyright © 1995-2011 by Fredrik Lundh and contributors -Copyright © 2010 by Jeffrey A. Clark and contributors - - - -Terms of the MIT-CMU: -Permission to use, copy, modify and distribute this software and its -documentation for any purpose and without fee is hereby granted, provided that -the above copyright notice appears in all copies and that both that copyright -notice and this permission notice appear in supporting documentation, and that -the name of CMU and The Regents of the University of California not be used in -advertising or publicity pertaining to distribution of the software without -specific written permission. - -CMU AND THE REGENTS OF THE UNIVERSITY OF CALIFORNIA DISCLAIM ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL CMU OR THE REGENTS OF THE UNIVERSITY OF CALIFORNIA BE -LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM THE LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION -OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -Open Source Software Licensed under the MPL-2.0: --------------------------------------------------------------------- -1. lightningcss-1.21.0 -Copyright(c) 2025 lightningcss original author and authors - - - -Terms of the MPL-2.0: +Terms of the mpl-2.0: Mozilla Public License Version 2.0 ================================== @@ -1538,1155 +3237,23 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0. -Open Source Software Licensed under the apache-2.0: +Open Source Software Licensed under the nolicense: -------------------------------------------------------------------- -1. @ampproject/remapping-2.3.0 -Copyright (c) @ampproject/remapping authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@ampproject/remapping. - -2. sync-0.15.0 -Copyright (c) sync authors. -You may obtain the source code and detailed information about this component at https://mvnrepository.com/artifact/com.aerospike/sync. - -3. @webassemblyjs/leb128-1.13.2 -Copyright (c) @webassemblyjs/leb128 authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@webassemblyjs/leb128. - -4. sdk-1.37.0 -Copyright (c) sdk authors. -You may obtain the source code and detailed information about this component at https://mvnrepository.com/artifact/io.lakefs/sdk. - -5. crypto-0.39.0 -Copyright (c) crypto authors. -You may obtain the source code and detailed information about this component at https://github.com/smallstep/crypto. - -6. grpcio-default -Copyright (c) grpcio authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/grpcio. - -7. sdk-1.1.0 -Copyright (c) sdk authors. -You may obtain the source code and detailed information about this component at https://mvnrepository.com/artifact/com.jedlix/sdk. - -8. afero-1.12.0 -Copyright (c) afero authors. -You may obtain the source code and detailed information about this component at https://github.com/spf13/afero. - -9. @xtuc/long-4.2.2 -Copyright (c) @xtuc/long authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@xtuc/long. - -10. chrome-trace-event-1.0.4 -Copyright (c) chrome-trace-event authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/chrome-trace-event. - -11. reflect2-1.0.2 -Copyright (c) reflect2 authors. -You may obtain the source code and detailed information about this component at https://github.com/modern-go/reflect2. - -12. grpcio-tools-default -Copyright (c) grpcio-tools authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/grpcio-tools. - -13. playwright-default -Copyright (c) playwright authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/playwright. - -14. requests-default -Copyright (c) requests authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/requests. - -15. ini-1.67.0 -Copyright (c) ini authors. -You may obtain the source code and detailed information about this component at https://github.com/go-ini/ini. - -16. asyncio-default -Copyright (c) asyncio authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/asyncio. - -17. time-0.11.0 -Copyright (c) time authors. -You may obtain the source code and detailed information about this component at https://mvnrepository.com/artifact/org.occurrent/time. - -18. less-4.3.0 -Copyright (c) less authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/less. - -19. typescript-5.8.3 -Copyright (c) typescript authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/typescript. +1. github.com/leodido/go-urn-1.4.0 +Copyright (c) github.com/leodido/go-urn authors. +You may obtain the source code and detailed information about this component at github.com/leodido/go-urn. -Terms of the apache-2.0: -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +Terms of the nolicense: +license not found - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -Open Source Software Licensed under the bsd-new: +Open Source Software Licensed under the unknown: -------------------------------------------------------------------- -1. lxml-default -Copyright (c) lxml authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/lxml. - -2. pypdf-default -Copyright (c) pypdf authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/pypdf. - -3. go-querystring-1.1.0 -Copyright (c) go-querystring authors. -You may obtain the source code and detailed information about this component at https://github.com/google/go-querystring. - -4. speakingurl-14.0.1 -Copyright (c) speakingurl authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/speakingurl. - -5. markdown-default -Copyright (c) markdown authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/markdown. - -6. source-map-0.6.1 -Copyright (c) source-map authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/source-map. - -7. serialize-javascript-6.0.2 -Copyright (c) serialize-javascript authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/serialize-javascript. - -8. golang-asm-0.15.1 -Copyright (c) golang-asm authors. -You may obtain the source code and detailed information about this component at https://github.com/twitchyliquid64/golang-asm. - -9. source-map-js-1.2.1 -Copyright (c) source-map-js authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/source-map-js. - -10. PyPDF2-default -Copyright (c) PyPDF2 authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/pypdf2. - -11. fast-uri-3.0.6 -Copyright (c) fast-uri authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/fast-uri. - -12. mxj-1.8.4 -Copyright (c) mxj authors. -You may obtain the source code and detailed information about this component at https://github.com/clbanning/mxj. - -13. protobuf-default -Copyright (c) protobuf authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/protobuf. - -14. @xtuc/ieee754-1.2.0 -Copyright (c) @xtuc/ieee754 authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@xtuc/ieee754. +1. docx-0.2.4 +Copyright (c) docx authors. +You may obtain the source code and detailed information about this component at http://github.com/mikemaccana/python-docx. -Terms of the bsd-new: -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -Redistributions of source code must retain the above copyright notice, this list -of conditions and the following disclaimer. - -Redistributions in binary form must reproduce the above copyright notice, this -list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -Neither the name of the ORGANIZATION nor the names of its contributors may be -used to endorse or promote products derived from this software without specific -prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF -THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Open Source Software Licensed under the bsd-simplified: --------------------------------------------------------------------- -1. terser-5.43.1 -Copyright (c) terser authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/terser. - -2. estraverse-4.3.0 -Copyright (c) estraverse authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/estraverse. - -3. entities-4.5.0 -Copyright (c) entities authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/entities. - - - -Terms of the bsd-simplified: -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -Redistributions of source code must retain the above copyright notice, this list -of conditions and the following disclaimer. - -Redistributions in binary form must reproduce the above copyright notice, this -list of conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Open Source Software Licensed under the bsd-zero: --------------------------------------------------------------------- -1. tslib-2.8.1 -Copyright (c) tslib authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/tslib. - - - -Terms of the bsd-zero: -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -Open Source Software Licensed under the isc: --------------------------------------------------------------------- -1. graceful-fs-4.2.11 -Copyright (c) graceful-fs authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/graceful-fs. - -2. which-5.0.0 -Copyright (c) which authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/which. - -3. isexe-3.1.1 -Copyright (c) isexe authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/isexe. - -4. yaml-2.4.2 -Copyright (c) yaml authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/yaml. - -5. lru-cache-5.1.1 -Copyright (c) lru-cache authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/lru-cache. - -6. read-package-json-fast-4.0.0 -Copyright (c) read-package-json-fast authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/read-package-json-fast. - -7. minimatch-9.0.5 -Copyright (c) minimatch authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/minimatch. - -8. semver-6.3.1 -Copyright (c) semver authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/semver. - -9. npm-normalize-package-bin-4.0.0 -Copyright (c) npm-normalize-package-bin authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/npm-normalize-package-bin. - -10. picocolors-1.1.1 -Copyright (c) picocolors authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/picocolors. - - - -Terms of the isc: -Permission to use, copy, modify, and/or distribute this software for any purpose -with or without fee is hereby granted, provided that the above copyright notice -and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS -OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. - - -Open Source Software Licensed under the mit: --------------------------------------------------------------------- -1. @tsconfig/node22-22.0.2 -Copyright (c) @tsconfig/node22 authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@tsconfig/node22. - -2. tinyglobby-0.2.14 -Copyright (c) tinyglobby authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/tinyglobby. - -3. jsesc-3.1.0 -Copyright (c) jsesc authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/jsesc. - -4. es-errors-1.3.0 -Copyright (c) es-errors authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/es-errors. - -5. brotli-1.1.0 -Copyright (c) brotli authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/brotli. - -6. undici-types-6.21.0 -Copyright (c) undici-types authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/undici-types. - -7. dayjs-1.11.10 -Copyright (c) dayjs authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/dayjs. - -8. @jridgewell/gen-mapping-0.3.12 -Copyright (c) @jridgewell/gen-mapping authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@jridgewell/gen-mapping. - -9. events-3.3.0 -Copyright (c) events authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/events. - -10. @types/sortablejs-1.15.8 -Copyright (c) @types/sortablejs authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@types/sortablejs. - -11. js-tokens-4.0.0 -Copyright (c) js-tokens authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/js-tokens. - -12. @vue/babel-helper-vue-transform-on-1.4.0 -Copyright (c) @vue/babel-helper-vue-transform-on authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@vue/babel-helper-vue-transform-on. - -13. @types/marked-5.0.2 -Copyright (c) @types/marked authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@types/marked. - -14. @types/tinycolor2-1.4.6 -Copyright (c) @types/tinycolor2 authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@types/tinycolor2. - -15. xid-1.6.0 -Copyright (c) xid authors. -You may obtain the source code and detailed information about this component at https://github.com/rs/xid. - -16. lodash-es-4.17.21 -Copyright (c) lodash-es authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/lodash-es. - -17. go-runewidth-0.0.15 -Copyright (c) go-runewidth authors. -You may obtain the source code and detailed information about this component at https://gitee.com/mirrors/go-runewidth. - -18. marked-5.1.2 -Copyright (c) marked authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/marked. - -19. cast-1.7.1 -Copyright (c) cast authors. -You may obtain the source code and detailed information about this component at https://github.com/spf13/cast. - -20. antiword-default -Copyright (c) antiword authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/antiword. - -21. cos-python-sdk-v5-default -Copyright (c) cos-python-sdk-v5 authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/cos-python-sdk-v5. - -22. loader-runner-4.3.0 -Copyright (c) loader-runner authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/loader-runner. - -23. alien-signals-1.0.13 -Copyright (c) alien-signals authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/alien-signals. - -24. @webassemblyjs/wasm-parser-1.14.1 -Copyright (c) @webassemblyjs/wasm-parser authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@webassemblyjs/wasm-parser. - -25. textract-default -Copyright (c) textract authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/textract. - -26. hasown-2.0.2 -Copyright (c) hasown authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/hasown. - -27. shebang-regex-3.0.0 -Copyright (c) shebang-regex authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/shebang-regex. - -28. @types/eslint-scope-3.7.7 -Copyright (c) @types/eslint-scope authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@types/eslint-scope. - -29. node-releases-2.0.19 -Copyright (c) node-releases authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/node-releases. - -30. combined-stream-1.0.8 -Copyright (c) combined-stream authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/combined-stream. - -31. ajv-formats-2.1.1 -Copyright (c) ajv-formats authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/ajv-formats. - -32. has-tostringtag-1.0.2 -Copyright (c) has-tostringtag authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/has-tostringtag. - -33. vscode-uri-3.1.0 -Copyright (c) vscode-uri authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/vscode-uri. - -34. npm-run-all2-7.0.2 -Copyright (c) npm-run-all2 authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/npm-run-all2. - -35. tablewriter-0.0.5 -Copyright (c) tablewriter authors. -You may obtain the source code and detailed information about this component at https://github.com/olekukonko/tablewriter. - -36. cross-spawn-7.0.6 -Copyright (c) cross-spawn authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/cross-spawn. - -37. gin-1.10.0 -Copyright (c) gin authors. -You may obtain the source code and detailed information about this component at https://github.com/donetkit/gin. - -38. he-1.2.0 -Copyright (c) he authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/he. - -39. @babel/helper-optimise-call-expression-7.27.1 -Copyright (c) @babel/helper-optimise-call-expression authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@babel/helper-optimise-call-expression. - -40. debug-4.4.1 -Copyright (c) debug authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/debug. - -41. commander-2.20.3 -Copyright (c) commander authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/commander. - -42. mapstructure-1.4.3 -Copyright (c) mapstructure authors. -You may obtain the source code and detailed information about this component at https://github.com/go-viper/mapstructure. - -43. @vue/compiler-vue2-2.7.16 -Copyright (c) @vue/compiler-vue2 authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@vue/compiler-vue2. - -44. escalade-3.2.0 -Copyright (c) escalade authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/escalade. - -45. conc-0.3.0 -Copyright (c) conc authors. -You may obtain the source code and detailed information about this component at https://github.com/sourcegraph/conc. - -46. @types/eslint-9.6.1 -Copyright (c) @types/eslint authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@types/eslint. - -47. go-httpheader-0.2.1 -Copyright (c) go-httpheader authors. -You may obtain the source code and detailed information about this component at https://github.com/mozillazg/go-httpheader. - -48. @webassemblyjs/wasm-opt-1.14.1 -Copyright (c) @webassemblyjs/wasm-opt authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@webassemblyjs/wasm-opt. - -49. @popperjs/core-2.11.8 -Copyright (c) @popperjs/core authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@popperjs/core. - -50. @webassemblyjs/wast-printer-1.14.1 -Copyright (c) @webassemblyjs/wast-printer authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@webassemblyjs/wast-printer. - -51. webpack-sources-3.3.3 -Copyright (c) webpack-sources authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/webpack-sources. - -52. @webassemblyjs/wasm-gen-1.14.1 -Copyright (c) @webassemblyjs/wasm-gen authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@webassemblyjs/wasm-gen. - -53. @babel/helper-validator-identifier-7.27.1 -Copyright (c) @babel/helper-validator-identifier authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@babel/helper-validator-identifier. - -54. merge-stream-2.0.0 -Copyright (c) merge-stream authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/merge-stream. - -55. logrus-1.9.3 -Copyright (c) logrus authors. -You may obtain the source code and detailed information about this component at https://github.com/sirupsen/logrus. - -56. path-key-3.1.1 -Copyright (c) path-key authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/path-key. - -57. gorm-1.25.12 -Copyright (c) gorm authors. -You may obtain the source code and detailed information about this component at https://github.com/go-gorm/gorm. - -58. fast-deep-equal-3.1.3 -Copyright (c) fast-deep-equal authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/fast-deep-equal. - -59. @webassemblyjs/utf8-1.13.2 -Copyright (c) @webassemblyjs/utf8 authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@webassemblyjs/utf8. - -60. @babel/plugin-syntax-typescript-7.27.1 -Copyright (c) @babel/plugin-syntax-typescript authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@babel/plugin-syntax-typescript. - -61. mime-db-1.52.0 -Copyright (c) mime-db authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/mime-db. - -62. @webassemblyjs/floating-point-hex-parser-1.13.2 -Copyright (c) @webassemblyjs/floating-point-hex-parser authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@webassemblyjs/floating-point-hex-parser. - -63. hookable-5.5.3 -Copyright (c) hookable authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/hookable. - -64. pidtree-0.6.0 -Copyright (c) pidtree authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/pidtree. - -65. @types/lodash-es-4.17.12 -Copyright (c) @types/lodash-es authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@types/lodash-es. - -66. shebang-command-2.0.0 -Copyright (c) shebang-command authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/shebang-command. - -67. @webassemblyjs/wasm-edit-1.14.1 -Copyright (c) @webassemblyjs/wasm-edit authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@webassemblyjs/wasm-edit. - -68. convert-source-map-2.0.0 -Copyright (c) convert-source-map authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/convert-source-map. - -69. json-schema-traverse-1.0.0 -Copyright (c) json-schema-traverse authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/json-schema-traverse. - -70. @webassemblyjs/helper-buffer-1.14.1 -Copyright (c) @webassemblyjs/helper-buffer authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@webassemblyjs/helper-buffer. - -71. @babel/helper-module-imports-7.27.1 -Copyright (c) @babel/helper-module-imports authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@babel/helper-module-imports. - -72. update-browserslist-db-1.1.3 -Copyright (c) update-browserslist-db authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/update-browserslist-db. - -73. sugarss-5.0.0 -Copyright (c) sugarss authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/sugarss. - -74. uniseg-0.4.7 -Copyright (c) uniseg authors. -You may obtain the source code and detailed information about this component at https://github.com/rivo/uniseg. - -75. buffer-from-1.1.2 -Copyright (c) buffer-from authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/buffer-from. - -76. @vue/babel-plugin-jsx-1.4.0 -Copyright (c) @vue/babel-plugin-jsx authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@vue/babel-plugin-jsx. - -77. @webassemblyjs/helper-wasm-section-1.14.1 -Copyright (c) @webassemblyjs/helper-wasm-section authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@webassemblyjs/helper-wasm-section. - -78. dig-1.18.1 -Copyright (c) dig authors. -You may obtain the source code and detailed information about this component at https://github.com/uber-go/dig. - -79. go-isatty-0.0.20 -Copyright (c) go-isatty authors. -You may obtain the source code and detailed information about this component at https://github.com/mattn/go-isatty. - -80. randombytes-2.1.0 -Copyright (c) randombytes authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/randombytes. - -81. mistletoe-default -Copyright (c) mistletoe authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/mistletoe. - -82. @jridgewell/trace-mapping-0.3.29 -Copyright (c) @jridgewell/trace-mapping authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@jridgewell/trace-mapping. - -83. @jridgewell/source-map-0.3.10 -Copyright (c) @jridgewell/source-map authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@jridgewell/source-map. - -84. ajv-keywords-5.1.0 -Copyright (c) ajv-keywords authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/ajv-keywords. - -85. memorystream-0.3.1 -Copyright (c) memorystream authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/memorystream. - -86. @vue/devtools-api-6.6.4 -Copyright (c) @vue/devtools-api authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@vue/devtools-api. - -87. go-1.1.12 -Copyright (c) go authors. -You may obtain the source code and detailed information about this component at https://github.com/json-iterator/go. - -88. supports-color-8.1.1 -Copyright (c) supports-color authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/supports-color. - -89. mime-types-2.1.35 -Copyright (c) mime-types authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/mime-types. - -90. enhanced-resolve-5.18.2 -Copyright (c) enhanced-resolve authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/enhanced-resolve. - -91. now-1.1.5 -Copyright (c) now authors. -You may obtain the source code and detailed information about this component at https://github.com/jinzhu/now. - -92. ajv-8.17.1 -Copyright (c) ajv authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/ajv. - -93. proxy-from-env-1.1.0 -Copyright (c) proxy-from-env authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/proxy-from-env. - -94. chrome-trace-event-1.0.4 -Copyright (c) chrome-trace-event authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/chrome-trace-event. - -95. axios-1.10.0 -Copyright (c) axios authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/axios. - -96. gotenv-1.6.0 -Copyright (c) gotenv authors. -You may obtain the source code and detailed information about this component at https://github.com/subosito/gotenv. - -97. brace-expansion-2.0.2 -Copyright (c) brace-expansion authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/brace-expansion. - -98. function-bind-1.1.2 -Copyright (c) function-bind authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/function-bind. - -99. @microsoft/fetch-event-source-2.0.1 -Copyright (c) @microsoft/fetch-event-source authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@microsoft/fetch-event-source. - -100. mxj-1.8.4 -Copyright (c) mxj authors. -You may obtain the source code and detailed information about this component at https://github.com/clbanning/mxj. - -101. schema-utils-4.3.2 -Copyright (c) schema-utils authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/schema-utils. - -102. muggle-string-0.4.1 -Copyright (c) muggle-string authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/muggle-string. - -103. go-urn-1.4.0 -Copyright (c) go-urn authors. -You may obtain the source code and detailed information about this component at https://github.com/leodido/go-urn. - -104. form-data-4.0.3 -Copyright (c) form-data authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/form-data. - -105. locales-0.14.1 -Copyright (c) locales authors. -You may obtain the source code and detailed information about this component at https://gitee.com/mirrors/locales. - -106. python-docx-default -Copyright (c) python-docx authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/python-docx. - -107. less-loader-12.3.0 -Copyright (c) less-loader authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/less-loader. - -108. @jridgewell/sourcemap-codec-1.5.4 -Copyright (c) @jridgewell/sourcemap-codec authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@jridgewell/sourcemap-codec. - -109. universal-translator-0.18.1 -Copyright (c) universal-translator authors. -You may obtain the source code and detailed information about this component at https://github.com/go-playground/universal-translator. - -110. inflection-1.0.0 -Copyright (c) inflection authors. -You may obtain the source code and detailed information about this component at https://github.com/jinzhu/inflection. - -111. sass-embedded-1.70.0 -Copyright (c) sass-embedded authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/sass-embedded. - -112. @jridgewell/resolve-uri-3.1.2 -Copyright (c) @jridgewell/resolve-uri authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@jridgewell/resolve-uri. - -113. tinycolor2-1.6.0 -Copyright (c) tinycolor2 authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/tinycolor2. - -114. pagefind-1.3.0 -Copyright (c) pagefind authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/pagefind. - -115. viper-1.20.1 -Copyright (c) viper authors. -You may obtain the source code and detailed information about this component at https://github.com/spf13/viper. - -116. delayed-stream-1.0.0 -Copyright (c) delayed-stream authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/delayed-stream. - -117. @webassemblyjs/helper-numbers-1.13.2 -Copyright (c) @webassemblyjs/helper-numbers authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@webassemblyjs/helper-numbers. - -118. nanoid-3.3.11 -Copyright (c) nanoid authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/nanoid. - -119. @babel/helper-compilation-targets-7.27.2 -Copyright (c) @babel/helper-compilation-targets authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@babel/helper-compilation-targets. - -120. @webassemblyjs/ast-1.14.1 -Copyright (c) @webassemblyjs/ast authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@webassemblyjs/ast. - -121. @types/estree-1.0.8 -Copyright (c) @types/estree authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@types/estree. - -122. uuid-1.6.0 -Copyright (c) uuid authors. -You may obtain the source code and detailed information about this component at https://kojipkgs.fedoraproject.org//vol/fedora_koji_archive00/packages/uuid/1.6.0/2.fc8/src/uuid-1.6.0-2.fc8.src.rpm. - -123. postgres-1.5.11 -Copyright (c) postgres authors. -You may obtain the source code and detailed information about this component at https://github.com/go-gorm/postgres. - -124. perfect-debounce-1.0.0 -Copyright (c) perfect-debounce authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/perfect-debounce. - -125. md5-simd-1.1.2 -Copyright (c) md5-simd authors. -You may obtain the source code and detailed information about this component at https://github.com/minio/md5-simd. - -126. ms-2.1.3 -Copyright (c) ms authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/ms. - -127. @babel/helper-module-transforms-7.27.3 -Copyright (c) @babel/helper-module-transforms authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@babel/helper-module-transforms. - -128. @types/json-schema-7.0.15 -Copyright (c) @types/json-schema authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@types/json-schema. - -129. multierr-1.11.0 -Copyright (c) multierr authors. -You may obtain the source code and detailed information about this component at https://github.com/uber-go/multierr. - -130. pflag-1.0.6 -Copyright (c) pflag authors. -You may obtain the source code and detailed information about this component at https://github.com/php-toolkit/pflag. - -131. @webassemblyjs/ieee754-1.13.2 -Copyright (c) @webassemblyjs/ieee754 authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@webassemblyjs/ieee754. - -132. browserslist-4.25.1 -Copyright (c) browserslist authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/browserslist. - -133. asynckit-0.4.0 -Copyright (c) asynckit authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/asynckit. - -134. sortablejs-1.15.6 -Copyright (c) sortablejs authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/sortablejs. - -135. get-intrinsic-1.3.0 -Copyright (c) get-intrinsic authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/get-intrinsic. - -136. markdownify-default -Copyright (c) markdownify authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/markdownify. - -137. go-json-0.10.5 -Copyright (c) go-json authors. -You may obtain the source code and detailed information about this component at https://github.com/goccy/go-json. - -138. path-browserify-1.0.1 -Copyright (c) path-browserify authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/path-browserify. - -139. terser-webpack-plugin-5.3.14 -Copyright (c) terser-webpack-plugin authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/terser-webpack-plugin. - -140. @babel/helpers-7.27.6 -Copyright (c) @babel/helpers authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@babel/helpers. - -141. @vue/babel-plugin-resolve-type-1.4.0 -Copyright (c) @vue/babel-plugin-resolve-type authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@vue/babel-plugin-resolve-type. - -142. json-parse-even-better-errors-4.0.0 -Copyright (c) json-parse-even-better-errors authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/json-parse-even-better-errors. - -143. csstype-3.1.3 -Copyright (c) csstype authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/csstype. - -144. @babel/helper-plugin-utils-7.27.1 -Copyright (c) @babel/helper-plugin-utils authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@babel/helper-plugin-utils. - -145. balanced-match-1.0.2 -Copyright (c) balanced-match authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/balanced-match. - -146. ansi-styles-6.2.1 -Copyright (c) ansi-styles authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/ansi-styles. - -147. go-humanize-1.0.1 -Copyright (c) go-humanize authors. -You may obtain the source code and detailed information about this component at https://gitee.com/mirrors/go-humanize. - -148. picomatch-4.0.2 -Copyright (c) picomatch authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/picomatch. - -149. @webassemblyjs/helper-wasm-bytecode-1.13.2 -Copyright (c) @webassemblyjs/helper-wasm-bytecode authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@webassemblyjs/helper-wasm-bytecode. - -150. @babel/code-frame-7.27.1 -Copyright (c) @babel/code-frame authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@babel/code-frame. - -151. tsx-4.8.1 -Copyright (c) tsx authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/tsx. - -152. superjson-2.2.2 -Copyright (c) superjson authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/superjson. - -153. require-from-string-2.0.2 -Copyright (c) require-from-string authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/require-from-string. - -154. json5-2.2.3 -Copyright (c) json5 authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/json5. - -155. sass-1.70.0 -Copyright (c) sass authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/sass. - -156. @vue/tsconfig-0.7.0 -Copyright (c) @vue/tsconfig authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/@vue/tsconfig. - -157. openai-default -Copyright (c) openai authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/openai. - -158. urllib3-default -Copyright (c) urllib3 authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/urllib3. - -159. beautifulsoup4-default -Copyright (c) beautifulsoup4 authors. -You may obtain the source code and detailed information about this component at https://pypi.org/project/beautifulsoup4. - -160. pgpassfile-1.0.0 -Copyright (c) pgpassfile authors. -You may obtain the source code and detailed information about this component at https://github.com/jackc/pgpassfile. - -161. source-map-support-0.5.21 -Copyright (c) source-map-support authors. -You may obtain the source code and detailed information about this component at https://www.npmjs.com/package/source-map-support. - - - -Terms of the mit: -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +Terms of the unknown: \ No newline at end of file diff --git a/go.mod b/go.mod index 0d899578..60e402de 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,6 @@ require ( github.com/spf13/viper v1.20.1 github.com/stretchr/testify v1.11.1 github.com/tencentyun/cos-go-sdk-v5 v0.7.65 - github.com/xuri/excelize/v2 v2.10.0 github.com/yanyiwu/gojieba v1.4.5 go.opentelemetry.io/otel v1.37.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 @@ -106,8 +105,6 @@ require ( github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/richardlehane/mscfb v1.0.4 // indirect - github.com/richardlehane/msoleps v1.0.4 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/robfig/cron/v3 v3.0.1 // indirect github.com/rs/xid v1.6.0 // indirect @@ -117,12 +114,9 @@ require ( github.com/spf13/cast v1.10.0 // indirect github.com/spf13/pflag v1.0.6 // indirect github.com/subosito/gotenv v1.6.0 // indirect - github.com/tiendc/go-deepcopy v1.7.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.12 // indirect github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect - github.com/xuri/efp v0.0.1 // indirect - github.com/xuri/nfp v0.0.2-0.20250530014748-2ddeb826f9a9 // indirect github.com/yosida95/uritemplate/v3 v3.0.2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/otel/metric v1.37.0 // indirect diff --git a/go.sum b/go.sum index a8fe8cb8..c59f3eea 100644 --- a/go.sum +++ b/go.sum @@ -235,11 +235,6 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/redis/go-redis/v9 v9.14.0 h1:u4tNCjXOyzfgeLN+vAZaW1xUooqWDqVEsZN0U01jfAE= github.com/redis/go-redis/v9 v9.14.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= -github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM= -github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk= -github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= -github.com/richardlehane/msoleps v1.0.4 h1:WuESlvhX3gH2IHcd8UqyCuFY5yiq/GR/yqaSM/9/g00= -github.com/richardlehane/msoleps v1.0.4/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= @@ -284,8 +279,6 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.563/go.mod github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.563/go.mod h1:uom4Nvi9W+Qkom0exYiJ9VWJjXwyxtPYTkKkaLMlfE0= github.com/tencentyun/cos-go-sdk-v5 v0.7.65 h1:+WBbfwThfZSbxpf1Dw6fyMwyzVtWBBExqfDJ5giiR2s= github.com/tencentyun/cos-go-sdk-v5 v0.7.65/go.mod h1:8+hG+mQMuRP/OIS9d83syAvXvrMj9HhkND6Q1fLghw0= -github.com/tiendc/go-deepcopy v1.7.1 h1:LnubftI6nYaaMOcaz0LphzwraqN8jiWTwm416sitff4= -github.com/tiendc/go-deepcopy v1.7.1/go.mod h1:4bKjNC2r7boYOkD2IOuZpYjmlDdzjbpTRyCx+goBCJQ= github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc h1:9lRDQMhESg+zvGYmW5DyG0UqvY96Bu5QYsTLvCHdrgo= github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc/go.mod h1:bciPuU6GHm1iF1pBvUfxfsH0Wmnc2VbpgvbI9ZWuIRs= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= @@ -310,12 +303,6 @@ github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/ github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= -github.com/xuri/efp v0.0.1 h1:fws5Rv3myXyYni8uwj2qKjVaRP30PdjeYe2Y6FDsCL8= -github.com/xuri/efp v0.0.1/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI= -github.com/xuri/excelize/v2 v2.10.0 h1:8aKsP7JD39iKLc6dH5Tw3dgV3sPRh8uRVXu/fMstfW4= -github.com/xuri/excelize/v2 v2.10.0/go.mod h1:SC5TzhQkaOsTWpANfm+7bJCldzcnU/jrhqkTi/iBHBU= -github.com/xuri/nfp v0.0.2-0.20250530014748-2ddeb826f9a9 h1:+C0TIdyyYmzadGaL/HBLbf3WdLgC29pgyhTjAT/0nuE= -github.com/xuri/nfp v0.0.2-0.20250530014748-2ddeb826f9a9/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ= github.com/yanyiwu/gojieba v1.4.5 h1:VyZogGtdFSnJbACHvDRvDreXPPVPCg8axKFUdblU/JI= github.com/yanyiwu/gojieba v1.4.5/go.mod h1:JUq4DddFVGdHXJHxxepxRmhrKlDpaBxR8O28v6fKYLY= github.com/yosida95/uritemplate/v3 v3.0.2 h1:Ed3Oyj9yrmi9087+NczuL5BwkIc4wvTb5zIM+UJPGz4= @@ -359,8 +346,6 @@ golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= -golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ= -golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= diff --git a/internal/agent/tools/grep_chunks.go b/internal/agent/tools/grep_chunks.go index f23a8c12..76f810a4 100644 --- a/internal/agent/tools/grep_chunks.go +++ b/internal/agent/tools/grep_chunks.go @@ -8,6 +8,7 @@ import ( "strings" "github.com/Tencent/WeKnora/internal/logger" + "github.com/Tencent/WeKnora/internal/searchutil" "github.com/Tencent/WeKnora/internal/types" "gorm.io/gorm" ) @@ -546,17 +547,7 @@ func (t *GrepChunksTool) deduplicateChunks(ctx context.Context, results []chunkW // buildContentSignature creates a normalized signature for content to detect near-duplicates func (t *GrepChunksTool) buildContentSignature(content string) string { - c := strings.ToLower(strings.TrimSpace(content)) - if c == "" { - return "" - } - // Normalize whitespace - c = strings.Join(strings.Fields(c), " ") - // Use first 128 characters as signature - if len(c) > 128 { - c = c[:128] - } - return c + return searchutil.BuildContentSignature(content) } // scoreChunks calculates match scores for chunks based on pattern matches @@ -693,36 +684,10 @@ func (t *GrepChunksTool) applyMMR( // tokenizeSimple tokenizes text into a set of words (simple whitespace-based) func (t *GrepChunksTool) tokenizeSimple(text string) map[string]struct{} { - text = strings.ToLower(text) - fields := strings.Fields(text) - set := make(map[string]struct{}, len(fields)) - for _, f := range fields { - if len(f) > 1 { - set[f] = struct{}{} - } - } - return set + return searchutil.TokenizeSimple(text) } // jaccard calculates Jaccard similarity between two token sets func (t *GrepChunksTool) jaccard(a, b map[string]struct{}) float64 { - if len(a) == 0 && len(b) == 0 { - return 0 - } - - // Calculate intersection - inter := 0 - for k := range a { - if _, ok := b[k]; ok { - inter++ - } - } - - // Calculate union - union := len(a) + len(b) - inter - if union == 0 { - return 0 - } - - return float64(inter) / float64(union) + return searchutil.Jaccard(a, b) } diff --git a/internal/agent/tools/knowledge_search.go b/internal/agent/tools/knowledge_search.go index fd32cbb2..49b83fef 100644 --- a/internal/agent/tools/knowledge_search.go +++ b/internal/agent/tools/knowledge_search.go @@ -264,15 +264,12 @@ func (t *KnowledgeSearchTool) Execute(ctx context.Context, args map[string]inter topK, vectorThreshold, keywordThreshold, kbTypeMap) logger.Infof(ctx, "[Tool][KnowledgeSearch] Concurrent search completed: %d raw results", len(allResults)) - // Normalize keyword search results to ensure fair comparison across knowledge bases - logger.Debugf(ctx, "[Tool][KnowledgeSearch] Normalizing keyword search results...") - t.normalizeKeywordSearchResults(ctx, allResults) - logger.Infof(ctx, "[Tool][KnowledgeSearch] After keyword normalization: %d results", len(allResults)) + // Note: HybridSearch now uses RRF (Reciprocal Rank Fusion) which produces normalized scores + // RRF scores are in range [0, ~0.033] (max when rank=1 on both sides: 2/(60+1)) + // Threshold filtering is already done inside HybridSearch before RRF, so we skip it here - // Filter by threshold first - filteredResults := t.filterByThreshold(allResults, vectorThreshold, keywordThreshold) // Deduplicate before reranking to reduce processing overhead - deduplicatedBeforeRerank := t.deduplicateResults(filteredResults) + deduplicatedBeforeRerank := t.deduplicateResults(allResults) // Apply ReRank if model is configured // Prefer chatModel (LLM-based reranking) over rerankModel if both are available @@ -286,6 +283,9 @@ func (t *KnowledgeSearchTool) Execute(ctx context.Context, args map[string]inter } } + // Variable to hold results through reranking and MMR stages + var filteredResults []*searchResultWithMeta + if t.chatModel != nil && len(deduplicatedBeforeRerank) > 0 && rerankQuery != "" { logger.Infof( ctx, @@ -347,10 +347,9 @@ func (t *KnowledgeSearchTool) Execute(ctx context.Context, args map[string]inter } } - // Apply absolute minimum score filter to remove very low quality chunks - logger.Debugf(ctx, "[Tool][KnowledgeSearch] Applying min_score filter (%.2f)...", minScore) - filteredResults = t.filterByMinScore(filteredResults, minScore) - logger.Infof(ctx, "[Tool][KnowledgeSearch] After min_score filter: %d results", len(filteredResults)) + // Note: minScore filter is skipped because HybridSearch now uses RRF scores + // RRF scores are in range [0, ~0.033], not [0, 1], so old thresholds don't apply + // Threshold filtering is already done inside HybridSearch before RRF fusion // Final deduplication after rerank (in case rerank changed scores/order but duplicates remain) logger.Debugf(ctx, "[Tool][KnowledgeSearch] Final deduplication after rerank...") @@ -465,45 +464,6 @@ func (t *KnowledgeSearchTool) concurrentSearch( return allResults } -// filterByThreshold filters results based on match type and threshold -// Special handling for history matches: uses lower threshold (reduced by 0.1, minimum 0.5) -func (t *KnowledgeSearchTool) filterByThreshold( - results []*searchResultWithMeta, - vectorThreshold, keywordThreshold float64, -) []*searchResultWithMeta { - filtered := make([]*searchResultWithMeta, 0) - for _, r := range results { - var threshold float64 - - // Special handling for history matches: use lower threshold - switch r.MatchType { - case types.MatchTypeHistory: - // Use the lower of the two thresholds, then reduce by 0.1 (minimum 0.5) - th := vectorThreshold - if keywordThreshold < th { - th = keywordThreshold - } - threshold = math.Max(th-0.1, 0.5) - case types.MatchTypeEmbedding: - threshold = vectorThreshold - case types.MatchTypeKeywords: - threshold = keywordThreshold - default: - // For other match types (graph, nearby chunk, etc.), use the lower threshold - threshold = vectorThreshold - if keywordThreshold < threshold { - threshold = keywordThreshold - } - } - - // Check if result meets threshold - if r.Score >= threshold { - filtered = append(filtered, r) - } - } - return filtered -} - // rerankResults applies reranking to search results using LLM prompt scoring or rerank model func (t *KnowledgeSearchTool) rerankResults( ctx context.Context, @@ -566,15 +526,13 @@ func (t *KnowledgeSearchTool) rerankResults( } // Apply composite scoring to reranked results - // Get query intent from context if available (optional) - queryIntent := t.getQueryIntentFromContext(ctx) - logger.Debugf(ctx, "[Tool][KnowledgeSearch] Applying composite scoring with query_intent=%s", queryIntent) + logger.Debugf(ctx, "[Tool][KnowledgeSearch] Applying composite scoring") // Store base scores before composite scoring for _, result := range rerankedNonFAQ { baseScore := result.Score // Apply composite score - result.Score = t.compositeScore(result, result.Score, baseScore, queryIntent) + result.Score = t.compositeScore(result, result.Score, baseScore) } // Combine FAQ results (with original order) and reranked non-FAQ results @@ -899,20 +857,6 @@ func (t *KnowledgeSearchTool) rerankWithModel( return reranked, nil } -// filterByMinScore filters results by absolute minimum score -func (t *KnowledgeSearchTool) filterByMinScore( - results []*searchResultWithMeta, - minScore float64, -) []*searchResultWithMeta { - filtered := make([]*searchResultWithMeta, 0) - for _, r := range results { - if r.Score >= minScore { - filtered = append(filtered, r) - } - } - return filtered -} - // deduplicateResults removes duplicate chunks, keeping the highest score // Uses multiple keys (ID, parent chunk ID, knowledge+index) and content signature for deduplication func (t *KnowledgeSearchTool) deduplicateResults(results []*searchResultWithMeta) []*searchResultWithMeta { @@ -984,17 +928,7 @@ func (t *KnowledgeSearchTool) deduplicateResults(results []*searchResultWithMeta // buildContentSignature creates a normalized signature for content to detect near-duplicates func (t *KnowledgeSearchTool) buildContentSignature(content string) string { - c := strings.ToLower(strings.TrimSpace(content)) - if c == "" { - return "" - } - // Normalize whitespace - c = strings.Join(strings.Fields(c), " ") - // Use first 128 characters as signature - if len(c) > 128 { - c = c[:128] - } - return c + return searchutil.BuildContentSignature(content) } // formatOutput formats the search results for display @@ -1215,47 +1149,6 @@ type chunkRange struct { end int } -// normalizeKeywordSearchResults normalizes keyword search result scores into [0,1] globally across all knowledge bases -// Improvements: -// 1. Uses robust normalization with percentile-based bounds to handle outliers -// 2. Handles edge cases: single result, no variance, negative scores -// 3. Global normalization ensures fair comparison across different knowledge bases -func (t *KnowledgeSearchTool) normalizeKeywordSearchResults(ctx context.Context, results []*searchResultWithMeta) { - searchutil.NormalizeKeywordScores[*searchResultWithMeta]( - results, - func(r *searchResultWithMeta) bool { - return r.MatchType == types.MatchTypeKeywords - }, - func(r *searchResultWithMeta) float64 { - return r.Score - }, - func(r *searchResultWithMeta, score float64) { - r.Score = score - }, - searchutil.KeywordScoreCallbacks{ - OnNoVariance: func(count int, score float64) { - logger.Infof( - ctx, - "[Tool][KnowledgeSearch] Keyword scores have no variance, all set to 1.0: count=%d, score=%.3f", - count, - score, - ) - }, - OnNormalized: func(count int, rawMin, rawMax, normalizeMin, normalizeMax float64) { - logger.Infof( - ctx, - "[Tool][KnowledgeSearch] Normalized keyword scores: count=%d, raw_min=%.3f, raw_max=%.3f, normalize_min=%.3f, normalize_max=%.3f", - count, - rawMin, - rawMax, - normalizeMin, - normalizeMax, - ) - }, - }, - ) -} - // getEnrichedPassage 合并Content和ImageInfo的文本内容 func (t *KnowledgeSearchTool) getEnrichedPassage(ctx context.Context, result *types.SearchResult) string { if result.ImageInfo == "" { @@ -1302,19 +1195,10 @@ func (t *KnowledgeSearchTool) getEnrichedPassage(ctx context.Context, result *ty return combinedText } -// getQueryIntentFromContext attempts to extract query intent from context (optional) -func (t *KnowledgeSearchTool) getQueryIntentFromContext(ctx context.Context) string { - // Try to get query intent from context if available - // This is optional and may not always be present in agent tool context - // Return empty string if not available - return "" -} - // compositeScore calculates a composite score considering multiple factors func (t *KnowledgeSearchTool) compositeScore( result *searchResultWithMeta, modelScore, baseScore float64, - queryIntent string, ) float64 { // Source weight: web_search results get slightly lower weight sourceWeight := 1.0 @@ -1322,26 +1206,6 @@ func (t *KnowledgeSearchTool) compositeScore( sourceWeight = 0.95 } - // Intent boost: adjust score based on query intent and chunk characteristics - intentBoost := 1.0 - if queryIntent != "" { - switch queryIntent { - case "definition": - // Boost summary chunks for definition queries - if result.ChunkType == string(types.ChunkTypeSummary) { - intentBoost = 1.05 - } - case "howto": - // Boost longer chunks for howto queries - if result.EndAt-result.StartAt > 300 { - intentBoost = 1.03 - } - case "compare": - // No boost for compare queries - intentBoost = 1.0 - } - } - // Position prior: slightly favor chunks earlier in the document positionPrior := 1.0 if result.StartAt >= 0 && result.EndAt > result.StartAt { @@ -1352,7 +1216,6 @@ func (t *KnowledgeSearchTool) compositeScore( // Composite formula: weighted combination of model score, base score, and source weight composite := 0.6*modelScore + 0.3*baseScore + 0.1*sourceWeight - composite *= intentBoost composite *= positionPrior // Clamp to [0, 1] @@ -1368,13 +1231,7 @@ func (t *KnowledgeSearchTool) compositeScore( // clampFloat clamps a float value to the specified range func (t *KnowledgeSearchTool) clampFloat(v, minV, maxV float64) float64 { - if v < minV { - return minV - } - if v > maxV { - return maxV - } - return v + return searchutil.ClampFloat(v, minV, maxV) } // applyMMR applies Maximal Marginal Relevance algorithm to reduce redundancy @@ -1456,36 +1313,10 @@ func (t *KnowledgeSearchTool) applyMMR( // tokenizeSimple tokenizes text into a set of words (simple whitespace-based) func (t *KnowledgeSearchTool) tokenizeSimple(text string) map[string]struct{} { - text = strings.ToLower(text) - fields := strings.Fields(text) - set := make(map[string]struct{}, len(fields)) - for _, f := range fields { - if len(f) > 1 { - set[f] = struct{}{} - } - } - return set + return searchutil.TokenizeSimple(text) } // jaccard calculates Jaccard similarity between two token sets func (t *KnowledgeSearchTool) jaccard(a, b map[string]struct{}) float64 { - if len(a) == 0 && len(b) == 0 { - return 0 - } - - // Calculate intersection - inter := 0 - for k := range a { - if _, ok := b[k]; ok { - inter++ - } - } - - // Calculate union - union := len(a) + len(b) - inter - if union == 0 { - return 0 - } - - return float64(inter) / float64(union) + return searchutil.Jaccard(a, b) } diff --git a/internal/application/service/chat_pipline/preprocess.go b/internal/application/service/chat_pipline/preprocess.go deleted file mode 100644 index 5d7d11a8..00000000 --- a/internal/application/service/chat_pipline/preprocess.go +++ /dev/null @@ -1,166 +0,0 @@ -package chatpipline - -import ( - "context" - "encoding/json" - "regexp" - "strings" - - "github.com/Tencent/WeKnora/internal/config" - "github.com/Tencent/WeKnora/internal/models/chat" - "github.com/Tencent/WeKnora/internal/types" - "github.com/Tencent/WeKnora/internal/types/interfaces" -) - -// PluginPreprocess Query preprocessing plugin -type PluginPreprocess struct { - config *config.Config - modelService interfaces.ModelService -} - -// Regular expressions for text cleaning -var ( - multiSpaceRegex = regexp.MustCompile(`\s+`) // Multiple spaces -) - -// NewPluginPreprocess Creates a new query preprocessing plugin -func NewPluginPreprocess( - eventManager *EventManager, - config *config.Config, - cleaner interfaces.ResourceCleaner, - modelService interfaces.ModelService, -) *PluginPreprocess { - res := &PluginPreprocess{ - config: config, - modelService: modelService, - } - - eventManager.Register(res) - return res -} - -// ActivationEvents Register activation events -func (p *PluginPreprocess) ActivationEvents() []types.EventType { - return []types.EventType{types.PREPROCESS_QUERY} -} - -// OnEvent Process events -func (p *PluginPreprocess) OnEvent( - ctx context.Context, - eventType types.EventType, - chatManage *types.ChatManage, - next func() *PluginError, -) *PluginError { - rawQuery := strings.TrimSpace(chatManage.RewriteQuery) - if rawQuery == "" { - return next() - } - - pipelineInfo(ctx, "Preprocess", "input", map[string]interface{}{ - "session_id": chatManage.SessionID, - "rewrite_query": rawQuery, - }) - - // Lightweight normalization: just collapse multiple spaces - processed := multiSpaceRegex.ReplaceAllString(rawQuery, " ") - processed = strings.TrimSpace(processed) - - chatManage.ProcessedQuery = processed - chatManage.QueryIntent = p.detectIntentLLM(ctx, chatManage, processed) - - pipelineInfo(ctx, "Preprocess", "output", map[string]interface{}{ - "session_id": chatManage.SessionID, - "processed_query": processed, - "query_intent": chatManage.QueryIntent, - }) - - return next() -} - -// intentResp is a response for intent detection -type intentResp struct { - Intent string `json:"intent"` - Confidence float64 `json:"confidence"` -} - -// detectIntentLLM detects the intent of a query using an LLM -func (p *PluginPreprocess) detectIntentLLM(ctx context.Context, chatManage *types.ChatManage, text string) string { - if p.modelService == nil || chatManage.ChatModelID == "" { - pipelineWarn( - ctx, - "IntentDetect", - "skip", - map[string]interface{}{"reason": "no_model", "session_id": chatManage.SessionID}, - ) - return "general" - } - chatModel, err := p.modelService.GetChatModel(ctx, chatManage.ChatModelID) - if err != nil { - pipelineWarn( - ctx, - "IntentDetect", - "get_model_failed", - map[string]interface{}{"error": err.Error(), "model_id": chatManage.ChatModelID}, - ) - return "general" - } - pipelineInfo( - ctx, - "IntentDetect", - "start", - map[string]interface{}{"session_id": chatManage.SessionID, "model_id": chatManage.ChatModelID}, - ) - sys := "You are a query intent classifier. Classify the user's query into one of: definition, howto, compare, qa, general. Respond ONLY with a JSON object {\"intent\": \"...\", \"confidence\": 0.0 } inside a markdown fenced block." - usr := text - think := false - resp, err := chatModel.Chat(ctx, []chat.Message{ - {Role: "system", Content: sys}, - {Role: "user", Content: usr}, - }, &chat.ChatOptions{Temperature: 0.0, MaxCompletionTokens: 64, Thinking: &think}) - if err != nil || resp.Content == "" { - pipelineWarn(ctx, "IntentDetect", "model_call_failed", map[string]interface{}{"error": err}) - return "general" - } - body := extractJSONBody(resp.Content) - var ir intentResp - if err := json.Unmarshal([]byte(body), &ir); err != nil { - pipelineWarn(ctx, "IntentDetect", "parse_failed", map[string]interface{}{"body": body, "error": err.Error()}) - return "general" - } - pipelineInfo( - ctx, - "IntentDetect", - "result", - map[string]interface{}{"intent": ir.Intent, "confidence": ir.Confidence}, - ) - switch strings.ToLower(strings.TrimSpace(ir.Intent)) { - case "definition", "howto", "compare", "qa", "general": - return strings.ToLower(ir.Intent) - default: - return "general" - } -} - -// extractJSONBody extracts a JSON body from a string -func extractJSONBody(text string) string { - t := strings.TrimSpace(text) - // Try fenced block first - if i := strings.Index(t, "{"); i >= 0 { - j := strings.LastIndex(t, "}") - if j > i { - return t[i : j+1] - } - } - return "{}" -} - -// Close Releases resources -func (p *PluginPreprocess) Close() { -} - -// ShutdownHandler Returns shutdown function -func (p *PluginPreprocess) ShutdownHandler() func() { - return func() { - p.Close() - } -} diff --git a/internal/application/service/chat_pipline/rerank.go b/internal/application/service/chat_pipline/rerank.go index ca7b487c..2d45fde6 100644 --- a/internal/application/service/chat_pipline/rerank.go +++ b/internal/application/service/chat_pipline/rerank.go @@ -8,6 +8,7 @@ import ( "strings" "github.com/Tencent/WeKnora/internal/models/rerank" + "github.com/Tencent/WeKnora/internal/searchutil" "github.com/Tencent/WeKnora/internal/types" "github.com/Tencent/WeKnora/internal/types/interfaces" ) @@ -36,12 +37,11 @@ func (p *PluginRerank) OnEvent(ctx context.Context, eventType types.EventType, chatManage *types.ChatManage, next func() *PluginError, ) *PluginError { pipelineInfo(ctx, "Rerank", "input", map[string]interface{}{ - "session_id": chatManage.SessionID, - "candidate_cnt": len(chatManage.SearchResult), - "rerank_model": chatManage.RerankModelID, - "rerank_thresh": chatManage.RerankThreshold, - "rewrite_query": chatManage.RewriteQuery, - "processed_query": chatManage.ProcessedQuery, + "session_id": chatManage.SessionID, + "candidate_cnt": len(chatManage.SearchResult), + "rerank_model": chatManage.RerankModelID, + "rerank_thresh": chatManage.RerankThreshold, + "rewrite_query": chatManage.RewriteQuery, }) if len(chatManage.SearchResult) == 0 { pipelineInfo(ctx, "Rerank", "skip", map[string]interface{}{ @@ -77,18 +77,40 @@ func (p *PluginRerank) OnEvent(ctx context.Context, passages = append(passages, passage) } - // Try reranking with different query variants in priority order + // Single rerank call with RewriteQuery, use threshold degradation if no results + originalThreshold := chatManage.RerankThreshold rerankResp := p.rerank(ctx, chatManage, rerankModel, chatManage.RewriteQuery, passages) - if len(rerankResp) == 0 { - rerankResp = p.rerank(ctx, chatManage, rerankModel, chatManage.ProcessedQuery, passages) - if len(rerankResp) == 0 { - rerankResp = p.rerank(ctx, chatManage, rerankModel, chatManage.Query, passages) + + // If no results and threshold is high enough, try with lower threshold + if len(rerankResp) == 0 && originalThreshold > 0.3 { + degradedThreshold := originalThreshold * 0.7 + if degradedThreshold < 0.3 { + degradedThreshold = 0.3 } + pipelineInfo(ctx, "Rerank", "threshold_degrade", map[string]interface{}{ + "original": originalThreshold, + "degraded": degradedThreshold, + }) + chatManage.RerankThreshold = degradedThreshold + rerankResp = p.rerank(ctx, chatManage, rerankModel, chatManage.RewriteQuery, passages) + // Restore original threshold + chatManage.RerankThreshold = originalThreshold } pipelineInfo(ctx, "Rerank", "model_response", map[string]interface{}{ "result_cnt": len(rerankResp), }) + + // Log input scores before reranking for debugging + for i, sr := range chatManage.SearchResult { + pipelineInfo(ctx, "Rerank", "input_score", map[string]interface{}{ + "index": i, + "chunk_id": sr.ID, + "score": fmt.Sprintf("%.4f", sr.Score), + "match_type": sr.MatchType, + }) + } + for i := range chatManage.SearchResult { chatManage.SearchResult[i].Metadata = ensureMetadata(chatManage.SearchResult[i].Metadata) } @@ -97,8 +119,15 @@ func (p *PluginRerank) OnEvent(ctx context.Context, sr := chatManage.SearchResult[rr.Index] base := sr.Score sr.Metadata["base_score"] = fmt.Sprintf("%.4f", base) - sr.Score = rr.RelevanceScore - sr.Score = compositeScore(sr, rr.RelevanceScore, base, chatManage) + modelScore := rr.RelevanceScore + sr.Score = compositeScore(sr, modelScore, base) + pipelineInfo(ctx, "Rerank", "composite_calc", map[string]interface{}{ + "chunk_id": sr.ID, + "base_score": fmt.Sprintf("%.4f", base), + "model_score": fmt.Sprintf("%.4f", modelScore), + "final_score": fmt.Sprintf("%.4f", sr.Score), + "match_type": sr.MatchType, + }) reranked = append(reranked, sr) } final := applyMMR(ctx, reranked, chatManage, min(len(reranked), max(1, chatManage.RerankTopK)), 0.7) @@ -112,7 +141,6 @@ func (p *PluginRerank) OnEvent(ctx context.Context, "chunk_id": reranked[i].ID, "base_score": reranked[i].Metadata["base_score"], "final_score": fmt.Sprintf("%.4f", reranked[i].Score), - "intent": chatManage.QueryIntent, }) } @@ -185,7 +213,7 @@ func ensureMetadata(m map[string]string) map[string]string { } // compositeScore calculates the composite score for a search result -func compositeScore(sr *types.SearchResult, modelScore, baseScore float64, chatManage *types.ChatManage) float64 { +func compositeScore(sr *types.SearchResult, modelScore, baseScore float64) float64 { sourceWeight := 1.0 switch strings.ToLower(sr.KnowledgeSource) { case "web_search": @@ -193,27 +221,11 @@ func compositeScore(sr *types.SearchResult, modelScore, baseScore float64, chatM default: sourceWeight = 1.0 } - intentBoost := 1.0 - if chatManage.QueryIntent != "" { - switch chatManage.QueryIntent { - case "definition": - if sr.ChunkType == string(types.ChunkTypeSummary) { - intentBoost = 1.05 - } - case "howto": - if sr.EndAt-sr.StartAt > 300 { - intentBoost = 1.03 - } - case "compare": - intentBoost = 1.0 - } - } positionPrior := 1.0 if sr.StartAt >= 0 { - positionPrior += clampFloat(1.0-float64(sr.StartAt)/float64(sr.EndAt+1), -0.05, 0.05) + positionPrior += searchutil.ClampFloat(1.0-float64(sr.StartAt)/float64(sr.EndAt+1), -0.05, 0.05) } composite := 0.6*modelScore + 0.3*baseScore + 0.1*sourceWeight - composite *= intentBoost composite *= positionPrior if composite < 0 { composite = 0 @@ -224,7 +236,7 @@ func compositeScore(sr *types.SearchResult, modelScore, baseScore float64, chatM return composite } -// applyMMR applies the MMR algorithm to the search results +// applyMMR applies the MMR algorithm to the search results with pre-computed token sets func applyMMR( ctx context.Context, results []*types.SearchResult, @@ -240,40 +252,60 @@ func applyMMR( "k": k, "candidates": len(results), }) - selected := make([]*types.SearchResult, 0, k) - candidates := make([]*types.SearchResult, len(results)) - copy(candidates, results) - tokenSets := make([]map[string]struct{}, len(candidates)) - for i, r := range candidates { - tokenSets[i] = tokenizeSimple(getEnrichedPassage(ctx, r)) + + // Pre-compute all token sets upfront (optimization) + allTokenSets := make([]map[string]struct{}, len(results)) + for i, r := range results { + allTokenSets[i] = searchutil.TokenizeSimple(getEnrichedPassage(ctx, r)) } - for len(selected) < k && len(candidates) > 0 { - bestIdx := 0 + + selected := make([]*types.SearchResult, 0, k) + selectedTokenSets := make([]map[string]struct{}, 0, k) + selectedIndices := make(map[int]struct{}) + + for len(selected) < k && len(selectedIndices) < len(results) { + bestIdx := -1 bestScore := -1.0 - for i, r := range candidates { + + for i, r := range results { + if _, isSelected := selectedIndices[i]; isSelected { + continue + } + relevance := r.Score redundancy := 0.0 - for _, s := range selected { - redundancy = math.Max(redundancy, jaccard(tokenSets[i], tokenizeSimple(getEnrichedPassage(ctx, s)))) + + // Use pre-computed token sets for redundancy calculation + for _, selTokens := range selectedTokenSets { + sim := searchutil.Jaccard(allTokenSets[i], selTokens) + if sim > redundancy { + redundancy = sim + } } + mmr := lambda*relevance - (1.0-lambda)*redundancy if mmr > bestScore { bestScore = mmr bestIdx = i } } - selected = append(selected, candidates[bestIdx]) - candidates = append(candidates[:bestIdx], candidates[bestIdx+1:]...) + + if bestIdx < 0 { + break + } + + selected = append(selected, results[bestIdx]) + selectedTokenSets = append(selectedTokenSets, allTokenSets[bestIdx]) + selectedIndices[bestIdx] = struct{}{} } - // Compute average redundancy among selected + + // Compute average redundancy among selected using pre-computed token sets avgRed := 0.0 if len(selected) > 1 { pairs := 0 - for i := 0; i < len(selected); i++ { - for j := i + 1; j < len(selected); j++ { - si := tokenizeSimple(getEnrichedPassage(ctx, selected[i])) - sj := tokenizeSimple(getEnrichedPassage(ctx, selected[j])) - avgRed += jaccard(si, sj) + for i := 0; i < len(selectedTokenSets); i++ { + for j := i + 1; j < len(selectedTokenSets); j++ { + avgRed += searchutil.Jaccard(selectedTokenSets[i], selectedTokenSets[j]) pairs++ } } @@ -288,93 +320,59 @@ func applyMMR( return selected } -// tokenizeSimple tokenizes a text into a set of tokens -func tokenizeSimple(text string) map[string]struct{} { - text = strings.ToLower(text) - fields := strings.Fields(text) - set := make(map[string]struct{}, len(fields)) - for _, f := range fields { - if len(f) > 1 { - set[f] = struct{}{} - } - } - return set -} - -// jaccard calculates the Jaccard similarity between two sets of tokens -func jaccard(a, b map[string]struct{}) float64 { - if len(a) == 0 && len(b) == 0 { - return 0 - } - inter := 0 - for k := range a { - if _, ok := b[k]; ok { - inter++ - } - } - union := len(a) + len(b) - inter - if union == 0 { - return 0 - } - return float64(inter) / float64(union) -} - -// clampFloat clamps a float value between a minimum and maximum value -func clampFloat(v, minV, maxV float64) float64 { - if v < minV { - return minV - } - if v > maxV { - return maxV - } - return v -} - -// getEnrichedPassage 合并Content和ImageInfo的文本内容 +// getEnrichedPassage 合并Content、ImageInfo和GeneratedQuestions的文本内容 func getEnrichedPassage(ctx context.Context, result *types.SearchResult) string { - if result.ImageInfo == "" { - return result.Content - } + combinedText := result.Content + var enrichments []string // 解析ImageInfo - var imageInfos []types.ImageInfo - err := json.Unmarshal([]byte(result.ImageInfo), &imageInfos) - if err != nil { - pipelineWarn(ctx, "Rerank", "image_info_parse", map[string]interface{}{ - "error": err.Error(), - }) - return result.Content - } - - if len(imageInfos) == 0 { - return result.Content - } - - // 提取所有图片的描述和OCR文本 - var imageTexts []string - for _, img := range imageInfos { - if img.Caption != "" { - imageTexts = append(imageTexts, fmt.Sprintf("图片描述: %s", img.Caption)) - } - if img.OCRText != "" { - imageTexts = append(imageTexts, fmt.Sprintf("图片文本: %s", img.OCRText)) + if result.ImageInfo != "" { + var imageInfos []types.ImageInfo + err := json.Unmarshal([]byte(result.ImageInfo), &imageInfos) + if err != nil { + pipelineWarn(ctx, "Rerank", "image_info_parse", map[string]interface{}{ + "error": err.Error(), + }) + } else { + // 提取所有图片的描述和OCR文本 + for _, img := range imageInfos { + if img.Caption != "" { + enrichments = append(enrichments, fmt.Sprintf("图片描述: %s", img.Caption)) + } + if img.OCRText != "" { + enrichments = append(enrichments, fmt.Sprintf("图片文本: %s", img.OCRText)) + } + } } } - if len(imageTexts) == 0 { - return result.Content + // 解析ChunkMetadata中的GeneratedQuestions + if len(result.ChunkMetadata) > 0 { + var docMeta types.DocumentChunkMetadata + err := json.Unmarshal(result.ChunkMetadata, &docMeta) + if err != nil { + pipelineWarn(ctx, "Rerank", "chunk_metadata_parse", map[string]interface{}{ + "error": err.Error(), + }) + } else if len(docMeta.GeneratedQuestions) > 0 { + enrichments = append(enrichments, fmt.Sprintf("相关问题: %s", strings.Join(docMeta.GeneratedQuestions, "; "))) + } } - // 组合内容和图片信息 - combinedText := result.Content + if len(enrichments) == 0 { + return combinedText + } + + // 组合内容和增强信息 if combinedText != "" { combinedText += "\n\n" } - combinedText += strings.Join(imageTexts, "\n") + combinedText += strings.Join(enrichments, "\n") - pipelineInfo(ctx, "Rerank", "image_info_merge", map[string]interface{}{ - "content_len": len(result.Content), - "image_len": len(strings.Join(imageTexts, "\n")), + pipelineInfo(ctx, "Rerank", "passage_enrich", map[string]interface{}{ + "content_len": len(result.Content), + "enrichment": strings.Join(enrichments, "\n"), + "enrichment_len": len(strings.Join(enrichments, "\n")), }) return combinedText diff --git a/internal/application/service/chat_pipline/search.go b/internal/application/service/chat_pipline/search.go index 59a55527..2d249d8a 100644 --- a/internal/application/service/chat_pipline/search.go +++ b/internal/application/service/chat_pipline/search.go @@ -2,13 +2,14 @@ package chatpipline import ( "context" - "encoding/json" "fmt" + "regexp" "strings" "sync" + "unicode" "github.com/Tencent/WeKnora/internal/config" - "github.com/Tencent/WeKnora/internal/models/chat" + "github.com/Tencent/WeKnora/internal/logger" "github.com/Tencent/WeKnora/internal/searchutil" "github.com/Tencent/WeKnora/internal/types" "github.com/Tencent/WeKnora/internal/types/interfaces" @@ -18,7 +19,6 @@ import ( type PluginSearch struct { knowledgeBaseService interfaces.KnowledgeBaseService knowledgeService interfaces.KnowledgeService - modelService interfaces.ModelService config *config.Config webSearchService interfaces.WebSearchService tenantService interfaces.TenantService @@ -28,7 +28,6 @@ type PluginSearch struct { func NewPluginSearch(eventManager *EventManager, knowledgeBaseService interfaces.KnowledgeBaseService, knowledgeService interfaces.KnowledgeService, - modelService interfaces.ModelService, config *config.Config, webSearchService interfaces.WebSearchService, tenantService interfaces.TenantService, @@ -37,7 +36,6 @@ func NewPluginSearch(eventManager *EventManager, res := &PluginSearch{ knowledgeBaseService: knowledgeBaseService, knowledgeService: knowledgeService, - modelService: modelService, config: config, webSearchService: webSearchService, tenantService: tenantService, @@ -75,12 +73,11 @@ func (p *PluginSearch) OnEvent(ctx context.Context, } pipelineInfo(ctx, "Search", "input", map[string]interface{}{ - "session_id": chatManage.SessionID, - "rewrite_query": chatManage.RewriteQuery, - "processed_query": chatManage.ProcessedQuery, - "kb_ids": strings.Join(knowledgeBaseIDs, ","), - "tenant_id": chatManage.TenantID, - "web_enabled": chatManage.WebSearchEnabled, + "session_id": chatManage.SessionID, + "rewrite_query": chatManage.RewriteQuery, + "kb_ids": strings.Join(knowledgeBaseIDs, ","), + "tenant_id": chatManage.TenantID, + "web_enabled": chatManage.WebSearchEnabled, }) // Run KB search and web search concurrently @@ -121,6 +118,16 @@ func (p *PluginSearch) OnEvent(ctx context.Context, chatManage.SearchResult = allResults + // Log all search results with scores before any processing + for i, r := range chatManage.SearchResult { + pipelineInfo(ctx, "Search", "result_score_before_normalize", map[string]interface{}{ + "index": i, + "chunk_id": r.ID, + "score": fmt.Sprintf("%.4f", r.Score), + "match_type": r.MatchType, + }) + } + // If recall is low, attempt query expansion with keyword-focused search if chatManage.EnableQueryExpansion && len(chatManage.SearchResult) < max(1, chatManage.EmbeddingTopK/2) { pipelineInfo(ctx, "Search", "recall_low", map[string]interface{}{ @@ -189,6 +196,7 @@ func (p *PluginSearch) OnEvent(ctx context.Context, } wgExp.Wait() if len(expResults) > 0 { + // Scores already normalized in HybridSearch pipelineInfo(ctx, "Search", "expansion_done", map[string]interface{}{ "added": len(expResults), }) @@ -215,6 +223,16 @@ func (p *PluginSearch) OnEvent(ctx context.Context, "after": len(chatManage.SearchResult), }) + // Log final scores after all processing + for i, r := range chatManage.SearchResult { + pipelineInfo(ctx, "Search", "final_score", map[string]interface{}{ + "index": i, + "chunk_id": r.ID, + "score": fmt.Sprintf("%.4f", r.Score), + "match_type": r.MatchType, + }) + } + // Return if we have results if len(chatManage.SearchResult) != 0 { pipelineInfo(ctx, "Search", "output", map[string]interface{}{ @@ -250,32 +268,33 @@ func (p *PluginSearch) getSearchResultFromHistory(chatManage *types.ChatManage) func removeDuplicateResults(results []*types.SearchResult) []*types.SearchResult { seen := make(map[string]bool) - contentSig := make(map[string]bool) + contentSig := make(map[string]string) // sig -> first chunk ID var uniqueResults []*types.SearchResult for _, r := range results { keys := []string{r.ID} if r.ParentChunkID != "" { keys = append(keys, "parent:"+r.ParentChunkID) } - if r.KnowledgeID != "" { - keys = append(keys, fmt.Sprintf("kb:%s#%d", r.KnowledgeID, r.ChunkIndex)) - } dup := false + dupKey := "" for _, k := range keys { if seen[k] { dup = true + dupKey = k break } } if dup { + logger.Debugf(context.Background(), "Dedup: chunk %s removed due to key: %s", r.ID, dupKey) continue } sig := buildContentSignature(r.Content) if sig != "" { - if contentSig[sig] { + if firstChunk, exists := contentSig[sig]; exists { + logger.Debugf(context.Background(), "Dedup: chunk %s removed due to content signature (dup of %s, sig prefix: %.50s...)", r.ID, firstChunk, sig) continue } - contentSig[sig] = true + contentSig[sig] = r.ID } for _, k := range keys { seen[k] = true @@ -286,24 +305,16 @@ func removeDuplicateResults(results []*types.SearchResult) []*types.SearchResult } func buildContentSignature(content string) string { - c := strings.ToLower(strings.TrimSpace(content)) - if c == "" { - return "" - } - c = strings.Join(strings.Fields(c), " ") - if len(c) > 128 { - c = c[:128] - } - return c + return searchutil.BuildContentSignature(content) } -// searchKnowledgeBases performs KB searches for rewrite and processed queries across KB IDs +// searchKnowledgeBases performs KB searches across KB IDs using RewriteQuery only func (p *PluginSearch) searchKnowledgeBases( ctx context.Context, knowledgeBaseIDs []string, chatManage *types.ChatManage, ) []*types.SearchResult { - // Build base params for rewrite query + // Build params for rewrite query baseParams := types.SearchParams{ QueryText: strings.TrimSpace(chatManage.RewriteQuery), VectorThreshold: chatManage.VectorThreshold, @@ -315,7 +326,7 @@ func (p *PluginSearch) searchKnowledgeBases( var mu sync.Mutex var results []*types.SearchResult - // Search with rewrite query + // Search with rewrite query only (removed duplicate ProcessedQuery search) for _, kbID := range knowledgeBaseIDs { wg.Add(1) go func(knowledgeBaseID string) { @@ -323,16 +334,14 @@ func (p *PluginSearch) searchKnowledgeBases( res, err := p.knowledgeBaseService.HybridSearch(ctx, knowledgeBaseID, baseParams) if err != nil { pipelineWarn(ctx, "Search", "kb_search_error", map[string]interface{}{ - "kb_id": knowledgeBaseID, - "query": baseParams.QueryText, - "error": err.Error(), - "query_ty": "rewrite", + "kb_id": knowledgeBaseID, + "query": baseParams.QueryText, + "error": err.Error(), }) return } pipelineInfo(ctx, "Search", "kb_result", map[string]interface{}{ "kb_id": knowledgeBaseID, - "query_ty": "rewrite", "hit_count": len(res), }) mu.Lock() @@ -343,45 +352,6 @@ func (p *PluginSearch) searchKnowledgeBases( wg.Wait() - // If processed query differs, search again - if chatManage.RewriteQuery != chatManage.ProcessedQuery { - paramsProcessed := baseParams - paramsProcessed.QueryText = strings.TrimSpace(chatManage.ProcessedQuery) - pipelineInfo(ctx, "Search", "processed_query_search", map[string]interface{}{ - "query": paramsProcessed.QueryText, - }) - - wg = sync.WaitGroup{} - for _, kbID := range knowledgeBaseIDs { - wg.Add(1) - go func(knowledgeBaseID string) { - defer wg.Done() - res, err := p.knowledgeBaseService.HybridSearch(ctx, knowledgeBaseID, paramsProcessed) - if err != nil { - pipelineWarn(ctx, "Search", "kb_search_error", map[string]interface{}{ - "kb_id": knowledgeBaseID, - "query": paramsProcessed.QueryText, - "error": err.Error(), - "query_ty": "processed", - }) - return - } - pipelineInfo(ctx, "Search", "kb_result", map[string]interface{}{ - "kb_id": knowledgeBaseID, - "query_ty": "processed", - "hit_count": len(res), - }) - mu.Lock() - results = append(results, res...) - mu.Unlock() - }(kbID) - } - wg.Wait() - } - - // Normalize keyword retriever scores after collecting all results from multiple knowledge bases - normalizeKeywordSearchResults(ctx, results) - pipelineInfo(ctx, "Search", "kb_result_summary", map[string]interface{}{ "total_hits": len(results), }) @@ -413,11 +383,8 @@ func (p *PluginSearch) searchWebIfEnabled(ctx context.Context, chatManage *types }) return nil } - // Build questions (rewrite + processed if different) + // Build questions using RewriteQuery only questions := []string{strings.TrimSpace(chatManage.RewriteQuery)} - if chatManage.ProcessedQuery != "" && chatManage.ProcessedQuery != chatManage.RewriteQuery { - questions = append(questions, strings.TrimSpace(chatManage.ProcessedQuery)) - } // Load session-scoped temp KB state from Redis using SessionService tempKBID, seen, ids := p.sessionService.GetWebSearchTempKBState(ctx, chatManage.SessionID) compressed, kbID, newSeen, newIDs, err := p.webSearchService.CompressWithRAG( @@ -440,119 +407,155 @@ func (p *PluginSearch) searchWebIfEnabled(ctx context.Context, chatManage *types return res } -// expandQueries generates paraphrases and synonyms using chat model to improve keyword recall +// expandQueries generates query variants locally without LLM to improve keyword recall +// Uses simple techniques: word reordering, stopword removal, key phrase extraction func (p *PluginSearch) expandQueries(ctx context.Context, chatManage *types.ChatManage) []string { - if p.modelService == nil || chatManage.ChatModelID == "" { - pipelineWarn(ctx, "Search", "expansion_skip", map[string]interface{}{ - "reason": "no_model", - }) + query := strings.TrimSpace(chatManage.RewriteQuery) + if query == "" { return nil } - model, err := p.modelService.GetChatModel(ctx, chatManage.ChatModelID) - if err != nil { - pipelineWarn(ctx, "Search", "expansion_get_model_failed", map[string]interface{}{ - "error": err.Error(), - }) - return nil + + expansions := make([]string, 0, 5) + seen := make(map[string]struct{}) + seen[strings.ToLower(query)] = struct{}{} + if q := strings.ToLower(chatManage.Query); q != "" { + seen[q] = struct{}{} } - sys := "Generate up to 5 diverse paraphrases or keyword variants for the user query to improve keyword-based search recall. Respond ONLY with a JSON array of strings inside a fenced code block." - usr := chatManage.RewriteQuery - think := false - resp, err := model.Chat(ctx, []chat.Message{ - {Role: "system", Content: sys}, - {Role: "user", Content: usr}, - }, &chat.ChatOptions{Temperature: 0.2, MaxCompletionTokens: 200, Thinking: &think}) - if err != nil || resp.Content == "" { - pipelineWarn(ctx, "Search", "expansion_model_call_failed", map[string]interface{}{ - "error": err, - }) - return nil - } - body := extractJSONBlock(resp.Content) - var arr []string - if err := json.Unmarshal([]byte(body), &arr); err != nil || len(arr) == 0 { - // Fallback: split lines - lines := strings.Split(resp.Content, "\n") - for _, l := range lines { - l = strings.TrimSpace(l) - if l != "" { - arr = append(arr, l) - } - } - } - uniq := make(map[string]struct{}) - base := []string{chatManage.Query, chatManage.RewriteQuery, chatManage.ProcessedQuery} - for _, b := range base { - if s := strings.TrimSpace(b); s != "" { - uniq[strings.ToLower(s)] = struct{}{} - } - } - expansions := make([]string, 0, len(arr)) - for _, a := range arr { - s := strings.TrimSpace(a) - if s == "" { - continue + + addIfNew := func(s string) { + s = strings.TrimSpace(s) + if s == "" || len(s) < 3 { + return } key := strings.ToLower(s) - if _, ok := uniq[key]; ok { - continue + if _, ok := seen[key]; ok { + return } - uniq[key] = struct{}{} + seen[key] = struct{}{} expansions = append(expansions, s) - if len(expansions) >= 5 { - break + } + + // 1. Remove common stopwords and create keyword-only variant + keywords := extractKeywords(query) + if len(keywords) >= 2 { + addIfNew(strings.Join(keywords, " ")) + } + + // 2. Extract quoted phrases or key segments + phrases := extractPhrases(query) + for _, phrase := range phrases { + addIfNew(phrase) + } + + // 3. Split by common delimiters and use longest segment + segments := splitByDelimiters(query) + for _, seg := range segments { + if len(seg) > 5 { + addIfNew(seg) } } - pipelineInfo(ctx, "Search", "expansion_result", map[string]interface{}{ + + // 4. Remove question words (什么/如何/怎么/为什么/哪个 etc.) + cleaned := removeQuestionWords(query) + if cleaned != query { + addIfNew(cleaned) + } + + // Limit to 5 expansions + if len(expansions) > 5 { + expansions = expansions[:5] + } + + pipelineInfo(ctx, "Search", "local_expansion_result", map[string]interface{}{ "variants": len(expansions), }) return expansions } -func extractJSONBlock(text string) string { - t := strings.TrimSpace(text) - if i := strings.Index(t, "["); i >= 0 { - j := strings.LastIndex(t, "]") - if j > i { - return t[i : j+1] - } - } - return "[]" +// Common Chinese and English stopwords +var stopwords = map[string]struct{}{ + "的": {}, "是": {}, "在": {}, "了": {}, "和": {}, "与": {}, "或": {}, + "a": {}, "an": {}, "the": {}, "is": {}, "are": {}, "was": {}, "were": {}, + "be": {}, "been": {}, "being": {}, "have": {}, "has": {}, "had": {}, + "do": {}, "does": {}, "did": {}, "will": {}, "would": {}, "could": {}, + "should": {}, "may": {}, "might": {}, "must": {}, "can": {}, + "to": {}, "of": {}, "in": {}, "for": {}, "on": {}, "with": {}, "at": {}, + "by": {}, "from": {}, "as": {}, "into": {}, "through": {}, "about": {}, + "what": {}, "how": {}, "why": {}, "when": {}, "where": {}, "which": {}, + "who": {}, "whom": {}, "whose": {}, } -// normalizeKeywordSearchResults normalizes keyword search result scores into [0,1] globally across all knowledge bases -// Improvements: -// 1. Uses robust normalization with percentile-based bounds to handle outliers -// 2. Handles edge cases: single result, no variance, negative scores -// 3. Global normalization ensures fair comparison across different knowledge bases -func normalizeKeywordSearchResults(ctx context.Context, results []*types.SearchResult) { - searchutil.NormalizeKeywordScores[*types.SearchResult]( - results, - func(r *types.SearchResult) bool { - return r.MatchType == types.MatchTypeKeywords - }, - func(r *types.SearchResult) float64 { - return r.Score - }, - func(r *types.SearchResult, score float64) { - r.Score = score - }, - searchutil.KeywordScoreCallbacks{ - OnNoVariance: func(count int, score float64) { - pipelineInfo(ctx, "Search", "keyword_scores_no_variance", map[string]interface{}{ - "count": count, - "score": score, - }) - }, - OnNormalized: func(count int, rawMin, rawMax, normalizeMin, normalizeMax float64) { - pipelineInfo(ctx, "Search", "normalize_keyword_scores", map[string]interface{}{ - "count": count, - "raw_min": rawMin, - "raw_max": rawMax, - "normalize_min": normalizeMin, - "normalize_max": normalizeMax, - }) - }, - }, - ) +// Question words in Chinese +var questionWords = regexp.MustCompile(`^(什么是|什么|如何|怎么|怎样|为什么|为何|哪个|哪些|谁|何时|何地|请问|请告诉我|帮我|我想知道|我想了解)`) + +func extractKeywords(text string) []string { + words := tokenize(text) + keywords := make([]string, 0, len(words)) + for _, w := range words { + lower := strings.ToLower(w) + if _, isStop := stopwords[lower]; !isStop && len(w) > 1 { + keywords = append(keywords, w) + } + } + return keywords +} + +func extractPhrases(text string) []string { + // Extract quoted content + var phrases []string + re := regexp.MustCompile(`["'"'「」『』]([^"'"'「」『』]+)["'"'「」『』]`) + matches := re.FindAllStringSubmatch(text, -1) + for _, m := range matches { + if len(m) > 1 && len(m[1]) > 2 { + phrases = append(phrases, m[1]) + } + } + return phrases +} + +func splitByDelimiters(text string) []string { + // Split by common delimiters + re := regexp.MustCompile(`[,,;;、。!?!?\s]+`) + parts := re.Split(text, -1) + var result []string + for _, p := range parts { + p = strings.TrimSpace(p) + if p != "" { + result = append(result, p) + } + } + return result +} + +func removeQuestionWords(text string) string { + return strings.TrimSpace(questionWords.ReplaceAllString(text, "")) +} + +func tokenize(text string) []string { + var tokens []string + var current strings.Builder + + for _, r := range text { + if unicode.IsLetter(r) || unicode.IsDigit(r) { + current.WriteRune(r) + } else if unicode.Is(unicode.Han, r) { + // Flush current token + if current.Len() > 0 { + tokens = append(tokens, current.String()) + current.Reset() + } + // Chinese character as single token + tokens = append(tokens, string(r)) + } else { + // Delimiter + if current.Len() > 0 { + tokens = append(tokens, current.String()) + current.Reset() + } + } + } + if current.Len() > 0 { + tokens = append(tokens, current.String()) + } + return tokens } diff --git a/internal/application/service/chat_pipline/search_entity.go b/internal/application/service/chat_pipline/search_entity.go index 24cf5276..94cfa454 100644 --- a/internal/application/service/chat_pipline/search_entity.go +++ b/internal/application/service/chat_pipline/search_entity.go @@ -190,5 +190,6 @@ func chunk2SearchResult(chunk *types.Chunk, knowledge *types.Knowledge) *types.S ImageInfo: chunk.ImageInfo, KnowledgeFilename: knowledge.FileName, KnowledgeSource: knowledge.Source, + ChunkMetadata: chunk.Metadata, } } diff --git a/internal/application/service/chat_pipline/search_parallel.go b/internal/application/service/chat_pipline/search_parallel.go new file mode 100644 index 00000000..6148016d --- /dev/null +++ b/internal/application/service/chat_pipline/search_parallel.go @@ -0,0 +1,181 @@ +package chatpipline + +import ( + "context" + "sync" + + "github.com/Tencent/WeKnora/internal/config" + "github.com/Tencent/WeKnora/internal/logger" + "github.com/Tencent/WeKnora/internal/types" + "github.com/Tencent/WeKnora/internal/types/interfaces" +) + +// PluginSearchParallel implements parallel search functionality combining chunk search and entity search +type PluginSearchParallel struct { + // Chunk search dependencies + knowledgeBaseService interfaces.KnowledgeBaseService + knowledgeService interfaces.KnowledgeService + config *config.Config + webSearchService interfaces.WebSearchService + tenantService interfaces.TenantService + sessionService interfaces.SessionService + + // Entity search dependencies + graphRepo interfaces.RetrieveGraphRepository + chunkRepo interfaces.ChunkRepository + knowledgeRepo interfaces.KnowledgeRepository + + // Internal plugins + searchPlugin *PluginSearch + searchEntityPlugin *PluginSearchEntity +} + +// NewPluginSearchParallel creates a new parallel search plugin +func NewPluginSearchParallel( + eventManager *EventManager, + knowledgeBaseService interfaces.KnowledgeBaseService, + knowledgeService interfaces.KnowledgeService, + config *config.Config, + webSearchService interfaces.WebSearchService, + tenantService interfaces.TenantService, + sessionService interfaces.SessionService, + graphRepository interfaces.RetrieveGraphRepository, + chunkRepository interfaces.ChunkRepository, + knowledgeRepository interfaces.KnowledgeRepository, +) *PluginSearchParallel { + // Create internal plugins without registering them + searchPlugin := &PluginSearch{ + knowledgeBaseService: knowledgeBaseService, + knowledgeService: knowledgeService, + config: config, + webSearchService: webSearchService, + tenantService: tenantService, + sessionService: sessionService, + } + + searchEntityPlugin := &PluginSearchEntity{ + graphRepo: graphRepository, + chunkRepo: chunkRepository, + knowledgeRepo: knowledgeRepository, + } + + res := &PluginSearchParallel{ + knowledgeBaseService: knowledgeBaseService, + knowledgeService: knowledgeService, + config: config, + webSearchService: webSearchService, + tenantService: tenantService, + sessionService: sessionService, + graphRepo: graphRepository, + chunkRepo: chunkRepository, + knowledgeRepo: knowledgeRepository, + searchPlugin: searchPlugin, + searchEntityPlugin: searchEntityPlugin, + } + eventManager.Register(res) + return res +} + +// ActivationEvents returns the event types this plugin handles +func (p *PluginSearchParallel) ActivationEvents() []types.EventType { + return []types.EventType{types.CHUNK_SEARCH_PARALLEL} +} + +// OnEvent handles parallel search events - runs chunk search and entity search concurrently +func (p *PluginSearchParallel) OnEvent(ctx context.Context, + eventType types.EventType, chatManage *types.ChatManage, next func() *PluginError, +) *PluginError { + pipelineInfo(ctx, "SearchParallel", "start", map[string]interface{}{ + "session_id": chatManage.SessionID, + "has_entities": len(chatManage.Entity) > 0, + "rewrite_query": chatManage.RewriteQuery, + }) + + var wg sync.WaitGroup + var mu sync.Mutex + var chunkSearchErr *PluginError + var entitySearchErr *PluginError + + // Use separate ChatManage copies to avoid concurrent write conflicts + chunkChatManage := *chatManage + chunkChatManage.SearchResult = nil + + entityChatManage := *chatManage + entityChatManage.SearchResult = nil + + // Run chunk search and entity search in parallel + wg.Add(2) + + // Goroutine 1: Chunk Search + go func() { + defer wg.Done() + err := p.searchPlugin.OnEvent(ctx, types.CHUNK_SEARCH, &chunkChatManage, func() *PluginError { + return nil + }) + if err != nil && err != ErrSearchNothing { + mu.Lock() + chunkSearchErr = err + mu.Unlock() + } + pipelineInfo(ctx, "SearchParallel", "chunk_search_done", map[string]interface{}{ + "result_count": len(chunkChatManage.SearchResult), + "has_error": err != nil && err != ErrSearchNothing, + }) + }() + + // Goroutine 2: Entity Search (only if entities are available) + go func() { + defer wg.Done() + if len(chatManage.Entity) == 0 { + pipelineInfo(ctx, "SearchParallel", "entity_search_skip", map[string]interface{}{ + "reason": "no_entities", + }) + return + } + err := p.searchEntityPlugin.OnEvent(ctx, types.ENTITY_SEARCH, &entityChatManage, func() *PluginError { + return nil + }) + if err != nil && err != ErrSearchNothing { + mu.Lock() + entitySearchErr = err + mu.Unlock() + } + pipelineInfo(ctx, "SearchParallel", "entity_search_done", map[string]interface{}{ + "result_count": len(entityChatManage.SearchResult), + "has_error": err != nil && err != ErrSearchNothing, + }) + }() + + wg.Wait() + + // Merge results from both searches (no concurrent access now) + chatManage.SearchResult = append(chunkChatManage.SearchResult, entityChatManage.SearchResult...) + chatManage.SearchResult = removeDuplicateResults(chatManage.SearchResult) + + // Log any errors but don't fail the pipeline if at least one search succeeded + if chunkSearchErr != nil { + logger.Warnf(ctx, "[SearchParallel] Chunk search error: %v", chunkSearchErr.Err) + } + if entitySearchErr != nil { + logger.Warnf(ctx, "[SearchParallel] Entity search error: %v", entitySearchErr.Err) + } + + pipelineInfo(ctx, "SearchParallel", "complete", map[string]interface{}{ + "session_id": chatManage.SessionID, + "chunk_results": len(chunkChatManage.SearchResult), + "entity_results": len(entityChatManage.SearchResult), + "total_results": len(chatManage.SearchResult), + "chunk_search_error": chunkSearchErr != nil, + "entity_search_error": entitySearchErr != nil, + }) + + // Return error only if both searches failed and we have no results + if len(chatManage.SearchResult) == 0 { + if chunkSearchErr != nil { + return chunkSearchErr + } + return ErrSearchNothing + } + + return next() +} diff --git a/internal/application/service/chat_pipline/tracing.go b/internal/application/service/chat_pipline/tracing.go index 33155cf6..5b846bcf 100644 --- a/internal/application/service/chat_pipline/tracing.go +++ b/internal/application/service/chat_pipline/tracing.go @@ -34,7 +34,7 @@ func (p *PluginTracing) ActivationEvents() []types.EventType { types.CHAT_COMPLETION_STREAM, types.FILTER_TOP_K, types.REWRITE_QUERY, - types.PREPROCESS_QUERY, + types.CHUNK_SEARCH_PARALLEL, } } @@ -69,8 +69,8 @@ func (p *PluginTracing) OnEvent(ctx context.Context, return p.FilterTopK(ctx, eventType, chatManage, next) case types.REWRITE_QUERY: return p.RewriteQuery(ctx, eventType, chatManage, next) - case types.PREPROCESS_QUERY: - return p.PreprocessQuery(ctx, eventType, chatManage, next) + case types.CHUNK_SEARCH_PARALLEL: + return p.SearchParallel(ctx, eventType, chatManage, next) } return next() } @@ -95,7 +95,6 @@ func (p *PluginTracing) Search(ctx context.Context, } span.SetAttributes( attribute.String("hybrid_search", string(searchResultJson)), - attribute.String("processed_query", chatManage.ProcessedQuery), attribute.Int("search_unique_count", len(unique)), ) return err @@ -119,7 +118,6 @@ func (p *PluginTracing) Rerank(ctx context.Context, span.SetAttributes( attribute.Int("rerank_resp_count", len(chatManage.RerankResult)), attribute.String("rerank_resp_results", string(resultJson)), - attribute.String("query_intent", chatManage.QueryIntent), ) return err } @@ -266,22 +264,20 @@ func (p *PluginTracing) RewriteQuery(ctx context.Context, return err } -// PreprocessQuery traces query preprocessing operations -func (p *PluginTracing) PreprocessQuery(ctx context.Context, +// SearchParallel traces parallel search operations (chunk + entity) +func (p *PluginTracing) SearchParallel(ctx context.Context, eventType types.EventType, chatManage *types.ChatManage, next func() *PluginError, ) *PluginError { - _, span := tracing.ContextWithSpan(ctx, "PluginTracing.PreprocessQuery") + _, span := tracing.ContextWithSpan(ctx, "PluginTracing.SearchParallel") defer span.End() - span.SetAttributes( attribute.String("query", chatManage.Query), + attribute.String("rewrite_query", chatManage.RewriteQuery), + attribute.Int("entity_count", len(chatManage.Entity)), ) - err := next() - span.SetAttributes( - attribute.String("processed_query", chatManage.ProcessedQuery), + attribute.Int("search_result_count", len(chatManage.SearchResult)), ) - return err } diff --git a/internal/application/service/knowledgebase.go b/internal/application/service/knowledgebase.go index 647c0cc4..e8897354 100644 --- a/internal/application/service/knowledgebase.go +++ b/internal/application/service/knowledgebase.go @@ -9,7 +9,6 @@ import ( "time" "github.com/Tencent/WeKnora/internal/application/service/retriever" - "github.com/Tencent/WeKnora/internal/common" "github.com/Tencent/WeKnora/internal/logger" "github.com/Tencent/WeKnora/internal/models/embedding" "github.com/Tencent/WeKnora/internal/types" @@ -523,35 +522,113 @@ func (s *knowledgeBaseService) HybridSearch(ctx context.Context, // Collect all results from different retrievers and deduplicate by chunk ID logger.Infof(ctx, "Processing retrieval results") - matchResults := []*types.IndexWithScore{} + + // Separate results by retriever type for RRF fusion + var vectorResults []*types.IndexWithScore + var keywordResults []*types.IndexWithScore for _, retrieveResult := range retrieveResults { logger.Infof(ctx, "Retrieval results, engine: %v, retriever: %v, count: %v", retrieveResult.RetrieverEngineType, retrieveResult.RetrieverType, len(retrieveResult.Results), ) - matchResults = append(matchResults, retrieveResult.Results...) + if retrieveResult.RetrieverType == types.VectorRetrieverType { + vectorResults = append(vectorResults, retrieveResult.Results...) + } else { + keywordResults = append(keywordResults, retrieveResult.Results...) + } } // Early return if no results - if len(matchResults) == 0 { + if len(vectorResults) == 0 && len(keywordResults) == 0 { logger.Info(ctx, "No search results found") return nil, nil } - logger.Infof(ctx, "Result count before deduplication: %d", len(matchResults)) + logger.Infof(ctx, "Result count before RRF fusion: vector=%d, keyword=%d", len(vectorResults), len(keywordResults)) - // First, try standard deduplication - deduplicatedChunks := common.DeduplicateWithScore( - func(r *types.IndexWithScore) string { return r.ChunkID }, - matchResults...) - logger.Infof(ctx, "Result count after deduplication: %d", len(deduplicatedChunks)) + // Use RRF (Reciprocal Rank Fusion) to merge results + // RRF score = sum(1 / (k + rank)) for each retriever where the chunk appears + // k=60 is a common choice that works well in practice + const rrfK = 60 + + // Build rank maps for each retriever (already sorted by score from retriever) + vectorRanks := make(map[string]int) + for i, r := range vectorResults { + if _, exists := vectorRanks[r.ChunkID]; !exists { + vectorRanks[r.ChunkID] = i + 1 // 1-indexed rank + } + } + keywordRanks := make(map[string]int) + for i, r := range keywordResults { + if _, exists := keywordRanks[r.ChunkID]; !exists { + keywordRanks[r.ChunkID] = i + 1 // 1-indexed rank + } + } + + // Collect all unique chunks and compute RRF scores + chunkInfoMap := make(map[string]*types.IndexWithScore) + rrfScores := make(map[string]float64) + + // Process vector results + for _, r := range vectorResults { + if _, exists := chunkInfoMap[r.ChunkID]; !exists { + chunkInfoMap[r.ChunkID] = r + } + } + // Process keyword results + for _, r := range keywordResults { + if _, exists := chunkInfoMap[r.ChunkID]; !exists { + chunkInfoMap[r.ChunkID] = r + } + } + + // Compute RRF scores + for chunkID := range chunkInfoMap { + rrfScore := 0.0 + if rank, ok := vectorRanks[chunkID]; ok { + rrfScore += 1.0 / float64(rrfK+rank) + } + if rank, ok := keywordRanks[chunkID]; ok { + rrfScore += 1.0 / float64(rrfK+rank) + } + rrfScores[chunkID] = rrfScore + } + + // Convert to slice and sort by RRF score + deduplicatedChunks := make([]*types.IndexWithScore, 0, len(chunkInfoMap)) + for chunkID, info := range chunkInfoMap { + // Store RRF score in the Score field for downstream processing + info.Score = rrfScores[chunkID] + deduplicatedChunks = append(deduplicatedChunks, info) + } + slices.SortFunc(deduplicatedChunks, func(a, b *types.IndexWithScore) int { + if a.Score > b.Score { + return -1 + } else if a.Score < b.Score { + return 1 + } + return 0 + }) + + logger.Infof(ctx, "Result count after RRF fusion: %d", len(deduplicatedChunks)) + + // Log top results after RRF fusion for debugging + for i, chunk := range deduplicatedChunks { + if i < 15 { + vRank, vOk := vectorRanks[chunk.ChunkID] + kRank, kOk := keywordRanks[chunk.ChunkID] + logger.Debugf(ctx, "RRF rank %d: chunk_id=%s, rrf_score=%.6f, vector_rank=%v(%v), keyword_rank=%v(%v)", + i, chunk.ChunkID, chunk.Score, vRank, vOk, kRank, kOk) + } + } kb.EnsureDefaults() // Check if we need iterative retrieval for FAQ with separate indexing // Only use iterative retrieval if we don't have enough unique chunks after first deduplication + totalRetrieved := len(vectorResults) + len(keywordResults) needsIterativeRetrieval := len(deduplicatedChunks) < params.MatchCount && - kb.Type == types.KnowledgeBaseTypeFAQ && len(matchResults) == matchCount + kb.Type == types.KnowledgeBaseTypeFAQ && totalRetrieved == matchCount*2 if needsIterativeRetrieval { logger.Info(ctx, "Not enough unique chunks, using iterative retrieval for FAQ") // Use iterative retrieval to get more unique chunks (with negative question filtering inside) @@ -891,10 +968,38 @@ func (s *knowledgeBaseService) processSearchResults(ctx context.Context, } } - // Build final search results + // Build final search results - preserve original order from input chunks var searchResults []*types.SearchResult - for chunkID, chunk := range chunkMap { + addedChunkIDs := make(map[string]bool) + + // First pass: Add results in the original order from input chunks + for _, inputChunk := range chunks { + chunk, exists := chunkMap[inputChunk.ChunkID] + if !exists { + logger.Debugf(ctx, "Chunk not found in chunkMap: %s", inputChunk.ChunkID) + continue + } if !s.isValidTextChunk(chunk) { + logger.Debugf(ctx, "Chunk is not valid text chunk: %s, type: %s", chunk.ID, chunk.ChunkType) + continue + } + if addedChunkIDs[chunk.ID] { + continue + } + + score := chunkScores[chunk.ID] + if knowledge, ok := knowledgeMap[chunk.KnowledgeID]; ok { + matchType := chunkMatchTypes[chunk.ID] + searchResults = append(searchResults, s.buildSearchResult(chunk, knowledge, score, matchType)) + addedChunkIDs[chunk.ID] = true + } else { + logger.Warnf(ctx, "Knowledge not found for chunk: %s, knowledge_id: %s", chunk.ID, chunk.KnowledgeID) + } + } + + // Second pass: Add additional chunks (parent, nearby, relation) that weren't in original input + for chunkID, chunk := range chunkMap { + if addedChunkIDs[chunkID] || !s.isValidTextChunk(chunk) { continue } @@ -959,6 +1064,7 @@ func (s *knowledgeBaseService) buildSearchResult(chunk *types.Chunk, ImageInfo: chunk.ImageInfo, KnowledgeFilename: knowledge.FileName, KnowledgeSource: knowledge.Source, + ChunkMetadata: chunk.Metadata, } } diff --git a/internal/application/service/session.go b/internal/application/service/session.go index 16ca79c9..949ad8c1 100644 --- a/internal/application/service/session.go +++ b/internal/application/service/session.go @@ -800,11 +800,10 @@ func (s *sessionService) SearchKnowledge(ctx context.Context, // Use specific event list, only including retrieval-related events, not LLM summarization searchEvents := []types.EventType{ - types.PREPROCESS_QUERY, // Preprocess query - types.CHUNK_SEARCH, // Vector search - types.CHUNK_RERANK, // Rerank search results - types.CHUNK_MERGE, // Merge search results - types.FILTER_TOP_K, // Filter top K results + types.CHUNK_SEARCH, // Vector search + types.CHUNK_RERANK, // Rerank search results + types.CHUNK_MERGE, // Merge search results + types.FILTER_TOP_K, // Filter top K results } ctx, span := tracing.ContextWithSpan(ctx, "SessionService.SearchKnowledge") diff --git a/internal/container/container.go b/internal/container/container.go index f1a024a1..85dbe8e3 100644 --- a/internal/container/container.go +++ b/internal/container/container.go @@ -140,10 +140,10 @@ func BuildContainer(container *dig.Container) *dig.Container { must(container.Invoke(chatpipline.NewPluginChatCompletionStream)) must(container.Invoke(chatpipline.NewPluginStreamFilter)) must(container.Invoke(chatpipline.NewPluginFilterTopK)) - must(container.Invoke(chatpipline.NewPluginPreprocess)) must(container.Invoke(chatpipline.NewPluginRewrite)) must(container.Invoke(chatpipline.NewPluginExtractEntity)) must(container.Invoke(chatpipline.NewPluginSearchEntity)) + must(container.Invoke(chatpipline.NewPluginSearchParallel)) // HTTP handlers layer must(container.Provide(handler.NewTenantHandler)) diff --git a/internal/event/event_data.go b/internal/event/event_data.go index 4ad34ce1..a8b3f03d 100644 --- a/internal/event/event_data.go +++ b/internal/event/event_data.go @@ -5,7 +5,6 @@ package event // QueryData represents query-related event data type QueryData struct { OriginalQuery string `json:"original_query"` - ProcessedQuery string `json:"processed_query,omitempty"` RewrittenQuery string `json:"rewritten_query,omitempty"` SessionID string `json:"session_id"` UserID string `json:"user_id,omitempty"` diff --git a/internal/searchutil/textutil.go b/internal/searchutil/textutil.go new file mode 100644 index 00000000..85025c38 --- /dev/null +++ b/internal/searchutil/textutil.go @@ -0,0 +1,70 @@ +package searchutil + +import ( + "crypto/md5" + "encoding/hex" + "strings" +) + +// BuildContentSignature creates a normalized MD5 signature for content to detect duplicates. +// It normalizes the content by lowercasing, trimming whitespace, and collapsing multiple spaces. +func BuildContentSignature(content string) string { + c := strings.ToLower(strings.TrimSpace(content)) + if c == "" { + return "" + } + // Normalize whitespace + c = strings.Join(strings.Fields(c), " ") + // Use MD5 hash of full content + hash := md5.Sum([]byte(c)) + return hex.EncodeToString(hash[:]) +} + +// TokenizeSimple tokenizes text into a set of words (simple whitespace-based). +// Returns a map where keys are lowercase tokens with length > 1. +func TokenizeSimple(text string) map[string]struct{} { + text = strings.ToLower(text) + fields := strings.Fields(text) + set := make(map[string]struct{}, len(fields)) + for _, f := range fields { + if len(f) > 1 { + set[f] = struct{}{} + } + } + return set +} + +// Jaccard calculates Jaccard similarity between two token sets. +// Returns a value between 0 and 1, where 1 means identical sets. +func Jaccard(a, b map[string]struct{}) float64 { + if len(a) == 0 && len(b) == 0 { + return 0 + } + + // Calculate intersection + inter := 0 + for k := range a { + if _, ok := b[k]; ok { + inter++ + } + } + + // Calculate union + union := len(a) + len(b) - inter + if union == 0 { + return 0 + } + + return float64(inter) / float64(union) +} + +// ClampFloat clamps a float value to the specified range [minV, maxV]. +func ClampFloat(v, minV, maxV float64) float64 { + if v < minV { + return minV + } + if v > maxV { + return maxV + } + return v +} diff --git a/internal/types/chat_manage.go b/internal/types/chat_manage.go index 21c362a4..a41a8dce 100644 --- a/internal/types/chat_manage.go +++ b/internal/types/chat_manage.go @@ -3,12 +3,10 @@ package types // ChatManage represents the configuration and state for a chat session // including query processing, search parameters, and model configurations type ChatManage struct { - SessionID string `json:"session_id"` // Unique identifier for the chat session - Query string `json:"query,omitempty"` // Original user query - ProcessedQuery string `json:"processed_query,omitempty"` // Query after preprocessing - RewriteQuery string `json:"rewrite_query,omitempty"` // Query after rewriting for better retrieval - QueryIntent string `json:"query_intent,omitempty"` // Parsed intent: definition/howto/compare/qa/general - History []*History `json:"history,omitempty"` // Chat history for context + SessionID string `json:"session_id"` // Unique identifier for the chat session + Query string `json:"query,omitempty"` // Original user query + RewriteQuery string `json:"rewrite_query,omitempty"` // Query after rewriting for better retrieval + History []*History `json:"history,omitempty"` // Chat history for context KnowledgeBaseID string `json:"knowledge_base_id"` // ID of the knowledge base to search against (deprecated, use KnowledgeBaseIDs) KnowledgeBaseIDs []string `json:"knowledge_base_ids"` // IDs of knowledge bases to search (multi-KB support) @@ -60,9 +58,7 @@ func (c *ChatManage) Clone() *ChatManage { return &ChatManage{ Query: c.Query, - ProcessedQuery: c.ProcessedQuery, RewriteQuery: c.RewriteQuery, - QueryIntent: c.QueryIntent, SessionID: c.SessionID, KnowledgeBaseID: c.KnowledgeBaseID, KnowledgeBaseIDs: knowledgeBaseIDs, @@ -103,9 +99,9 @@ func (c *ChatManage) Clone() *ChatManage { type EventType string const ( - PREPROCESS_QUERY EventType = "preprocess_query" // Query preprocessing stage REWRITE_QUERY EventType = "rewrite_query" // Query rewriting for better retrieval CHUNK_SEARCH EventType = "chunk_search" // Search for relevant chunks + CHUNK_SEARCH_PARALLEL EventType = "chunk_search_parallel" // Parallel search: chunks + entities ENTITY_SEARCH EventType = "entity_search" // Search for relevant entities CHUNK_RERANK EventType = "chunk_rerank" // Rerank search results CHUNK_MERGE EventType = "chunk_merge" // Merge similar chunks @@ -134,9 +130,7 @@ var Pipline = map[string][]EventType{ }, "rag_stream": { // Streaming Retrieval Augmented Generation REWRITE_QUERY, - PREPROCESS_QUERY, - CHUNK_SEARCH, - ENTITY_SEARCH, + CHUNK_SEARCH_PARALLEL, // Parallel: CHUNK_SEARCH + ENTITY_SEARCH CHUNK_RERANK, CHUNK_MERGE, FILTER_TOP_K, diff --git a/internal/types/search.go b/internal/types/search.go index 292eaeb6..f40107c3 100644 --- a/internal/types/search.go +++ b/internal/types/search.go @@ -46,6 +46,9 @@ type SearchResult struct { // Knowledge source // Used to indicate the source of the knowledge, such as "url" KnowledgeSource string `json:"knowledge_source"` + + // ChunkMetadata stores chunk-level metadata (e.g., generated questions) + ChunkMetadata JSON `json:"chunk_metadata,omitempty"` } // SearchParams represents the search parameters