From a9a3f3341bb6d10278cce8d9195d92dbc9914436 Mon Sep 17 00:00:00 2001 From: dreamer6680 <1468683855@qq.com> Date: Tue, 22 Jul 2025 10:54:29 +0800 Subject: [PATCH 1/7] fix: change the page of doc --- document/.gitignore | 30 + document/.source/index.ts | 1711 ------------ document/.source/source.config.mjs | 24 - document/app/[lang]/(home)/layout.tsx | 24 +- document/app/[lang]/(home)/page.tsx | 2 +- document/app/[lang]/docs/[[...slug]]/page.tsx | 9 +- document/app/[lang]/docs/layout.tsx | 58 +- document/app/[lang]/layout.tsx | 8 + document/app/api/search/route.ts | 2 +- document/app/global.css | 40 +- document/app/layout.config.tsx | 21 +- document/app/static.json/route.ts | 21 + document/components/CustomSearchDialog.tsx | 49 + document/components/ui/CustomHomeLayout.tsx | 47 + document/content/docs/agreement/meta.json | 4 - document/content/docs/api/api1.mdx | 13 + document/content/docs/api/api2.mdx | 9 + document/content/docs/api/index.mdx | 9 + document/content/docs/api/meta.json | 7 + .../docs/development/upgrading/meta.json | 5 - .../docs/{ => introduction}/FAQ/app.mdx | 0 .../docs/{ => introduction}/FAQ/chat.mdx | 0 .../docs/{ => introduction}/FAQ/dataset.mdx | 0 .../docs/{ => introduction}/FAQ/docker.mdx | 2 +- .../docs/{ => introduction}/FAQ/error.mdx | 0 .../FAQ/external_channel_integration.mdx | 0 .../docs/{ => introduction}/FAQ/other.mdx | 0 .../FAQ/points_consumption.mdx | 0 .../{ => introduction}/FAQ/privateDeploy.mdx | 2 +- .../docs/{ => introduction}/community.mdx | 0 .../development/configuration.mdx | 0 .../development/custom-models/bge-rerank.mdx | 0 .../custom-models/chatglm2-m3e.mdx | 0 .../development/custom-models/chatglm2.mdx | 0 .../development/custom-models/m3e.mdx | 0 .../development/custom-models/marker.mdx | 0 .../development/custom-models/meta.json | 0 .../development/custom-models/ollama.mdx | 0 .../development/custom-models/xinference.mdx | 0 .../development/design/dataset.mdx | 0 .../development/design/design_plugin.mdx | 0 .../development/design/meta.json | 0 .../{ => introduction}/development/docker.mdx | 0 .../{ => introduction}/development/faq.mdx | 0 .../{ => introduction}/development/intro.mdx | 0 .../{ => introduction}/development/meta.json | 0 .../development/migration/docker_db.mdx | 0 .../development/migration/docker_mongo.mdx | 0 .../development/migration/meta.json | 0 .../development/modelConfig/ai-proxy.mdx | 0 .../development/modelConfig/intro.mdx | 0 .../development/modelConfig/meta.json | 0 .../development/modelConfig/one-api.mdx | 0 .../development/modelConfig/ppio.mdx | 0 .../development/modelConfig/siliconCloud.mdx | 0 .../development/openapi/chat.mdx | 0 .../development/openapi/dataset.mdx | 0 .../development/openapi/intro.mdx | 0 .../development/openapi/meta.json | 0 .../development/openapi/share.mdx | 0 .../development/proxy/cloudflare.mdx | 0 .../development/proxy/http_proxy.mdx | 0 .../development/proxy/meta.json | 0 .../development/proxy/nginx.mdx | 0 .../{ => introduction}/development/sealos.mdx | 0 .../development/upgrading/40.mdx | 0 .../development/upgrading/41.mdx | 0 .../development/upgrading/42.mdx | 0 .../development/upgrading/421.mdx | 0 .../development/upgrading/43.mdx | 0 .../development/upgrading/44.mdx | 0 .../development/upgrading/441.mdx | 0 .../development/upgrading/442.mdx | 0 .../development/upgrading/445.mdx | 0 .../development/upgrading/446.mdx | 0 .../development/upgrading/447.mdx | 0 .../development/upgrading/45.mdx | 0 .../development/upgrading/451.mdx | 0 .../development/upgrading/452.mdx | 0 .../development/upgrading/46.mdx | 0 .../development/upgrading/461.mdx | 0 .../development/upgrading/462.mdx | 0 .../development/upgrading/463.mdx | 0 .../development/upgrading/464.mdx | 0 .../development/upgrading/465.mdx | 0 .../development/upgrading/466.mdx | 0 .../development/upgrading/467.mdx | 0 .../development/upgrading/468.mdx | 0 .../development/upgrading/469.mdx | 0 .../development/upgrading/47.mdx | 0 .../development/upgrading/471.mdx | 0 .../development/upgrading/48.mdx | 0 .../development/upgrading/481.mdx | 0 .../development/upgrading/4810.mdx | 0 .../development/upgrading/4811.mdx | 0 .../development/upgrading/4812.mdx | 0 .../development/upgrading/4813.mdx | 0 .../development/upgrading/4814.mdx | 0 .../development/upgrading/4815.mdx | 0 .../development/upgrading/4816.mdx | 0 .../development/upgrading/4817.mdx | 0 .../development/upgrading/4818.mdx | 0 .../development/upgrading/4819.mdx | 0 .../development/upgrading/482.mdx | 0 .../development/upgrading/4820.mdx | 0 .../development/upgrading/4821.mdx | 0 .../development/upgrading/4822.mdx | 0 .../development/upgrading/4823.mdx | 0 .../development/upgrading/483.mdx | 0 .../development/upgrading/484.mdx | 0 .../development/upgrading/485.mdx | 0 .../development/upgrading/486.mdx | 0 .../development/upgrading/487.mdx | 2 +- .../development/upgrading/488.mdx | 0 .../development/upgrading/489.mdx | 0 .../development/upgrading/490.mdx | 0 .../development/upgrading/491.mdx | 0 .../development/upgrading/4910.mdx | 0 .../development/upgrading/4911.mdx | 0 .../development/upgrading/4912.mdx | 0 .../development/upgrading/4913.mdx | 0 .../development/upgrading/4914.mdx | 0 .../development/upgrading/492.mdx | 0 .../development/upgrading/493.mdx | 0 .../development/upgrading/494.mdx | 0 .../development/upgrading/495.mdx | 0 .../development/upgrading/496.mdx | 0 .../development/upgrading/497.mdx | 0 .../development/upgrading/498.mdx | 0 .../development/upgrading/499.mdx | 0 .../development/upgrading/intro.mdx | 0 .../development/upgrading/meta.json | 6 + .../guide/DialogBoxes/htmlRendering.mdx | 0 .../guide/DialogBoxes/meta.json | 0 .../guide/DialogBoxes/quoteList.mdx | 0 .../{ => introduction}/guide/admin/meta.json | 0 .../{ => introduction}/guide/admin/sso.mdx | 0 .../guide/admin/teamMode.mdx | 0 .../guide/course/ai_settings.mdx | 0 .../guide/course/chat_input_guide.mdx | 0 .../guide/course/collection_tags.mdx | 0 .../guide/course/fileInput.mdx | 0 .../{ => introduction}/guide/course/meta.json | 0 .../guide/course/quick-start.mdx | 0 .../guide/dashboard/basic-mode.mdx | 3 +- .../guide/dashboard/gapier.mdx | 0 .../guide/dashboard/intro.mdx | 0 .../guide/dashboard/mcp_server.mdx | 0 .../guide/dashboard/mcp_tools.mdx | 0 .../guide/dashboard/meta.json | 0 .../guide/dashboard/workflow/ai_chat.mdx | 0 .../dashboard/workflow/content_extract.mdx | 0 .../workflow/coreferenceResolution.mdx | 0 .../dashboard/workflow/custom_feedback.mdx | 0 .../dashboard/workflow/dataset_search.mdx | 0 .../dashboard/workflow/document_parsing.mdx | 0 .../guide/dashboard/workflow/form_input.mdx | 0 .../guide/dashboard/workflow/http.mdx | 0 .../workflow/knowledge_base_search_merge.mdx | 0 .../guide/dashboard/workflow/laf.mdx | 0 .../guide/dashboard/workflow/loop.mdx | 0 .../guide/dashboard/workflow/meta.json | 0 .../dashboard/workflow/question_classify.mdx | 0 .../guide/dashboard/workflow/reply.mdx | 0 .../guide/dashboard/workflow/sandbox.mdx | 0 .../guide/dashboard/workflow/text_editor.mdx | 0 .../guide/dashboard/workflow/tfswitch.mdx | 0 .../guide/dashboard/workflow/tool.mdx | 0 .../dashboard/workflow/user-selection.mdx | 0 .../dashboard/workflow/variable_update.mdx | 0 .../guide/knowledge_base/RAG.mdx | 0 .../guide/knowledge_base/api_dataset.mdx | 0 .../guide/knowledge_base/dataset_engine.mdx | 0 .../guide/knowledge_base/externalFile.mdx | 0 .../guide/knowledge_base/lark_dataset.mdx | 0 .../guide/knowledge_base/meta.json | 0 .../guide/knowledge_base/template.mdx | 0 .../guide/knowledge_base/third_dataset.mdx | 0 .../guide/knowledge_base/websync.mdx | 0 .../guide/knowledge_base/yuque_dataset.mdx | 0 .../docs/{ => introduction}/guide/meta.json | 0 .../guide/plugins/bing_search_plugin.mdx | 0 .../guide/plugins/dev_system_tool.mdx | 200 ++ .../guide/plugins/doc2x_plugin_guide.mdx | 0 .../plugins/google_search_plugin_guide.mdx | 0 .../plugins/how_to_submit_system_plugin.mdx | 0 .../guide/plugins/meta.json | 0 .../guide/plugins/searxng_plugin_guide.mdx | 0 .../team_permissions/invitation_link.mdx | 0 .../guide/team_permissions/meta.json | 0 .../team_roles_permissions.mdx | 0 .../index.en.mdx} | 0 .../{intro.mdx => introduction/index.mdx} | 0 .../content/docs/introduction/meta.en.json | 5 + document/content/docs/introduction/meta.json | 6 + .../shopping_cart/intro.mdx | 0 .../shopping_cart/meta.json | 0 .../{ => introduction}/shopping_cart/saas.mdx | 0 document/content/docs/meta.en.json | 5 - document/content/docs/meta.json | 5 - document/content/docs/protocol/index.mdx | 9 + document/content/docs/protocol/meta.json | 8 + .../open-source.en.mdx | 0 .../{agreement => protocol}/open-source.mdx | 0 .../{agreement => protocol}/privacy.en.mdx | 0 .../docs/{agreement => protocol}/privacy.mdx | 0 .../docs/{agreement => protocol}/terms.en.mdx | 0 .../docs/{agreement => protocol}/terms.mdx | 0 .../iframe_integration.mdx | 2 +- .../content/docs/{ => use-cases}/index.mdx | 0 document/content/docs/use-cases/meta.json | 5 +- document/i18n/en/common.json | 6 +- document/i18n/zh-CN/common.json | 6 +- document/lib/github.ts | 17 + document/lib/source.ts | 9 +- document/mdx-components.tsx | 6 +- document/package.json | 31 +- document/pnpm-lock.yaml | 2288 +++++++++-------- document/public/FastGPT-full.svg | 37 +- document/public/feishu.svg | 1 + document/update-index.mjs | 17 + 221 files changed, 1844 insertions(+), 2927 deletions(-) create mode 100644 document/.gitignore delete mode 100644 document/.source/index.ts delete mode 100644 document/.source/source.config.mjs create mode 100644 document/app/static.json/route.ts create mode 100644 document/components/CustomSearchDialog.tsx create mode 100644 document/components/ui/CustomHomeLayout.tsx delete mode 100644 document/content/docs/agreement/meta.json create mode 100644 document/content/docs/api/api1.mdx create mode 100644 document/content/docs/api/api2.mdx create mode 100644 document/content/docs/api/index.mdx create mode 100644 document/content/docs/api/meta.json delete mode 100644 document/content/docs/development/upgrading/meta.json rename document/content/docs/{ => introduction}/FAQ/app.mdx (100%) rename document/content/docs/{ => introduction}/FAQ/chat.mdx (100%) rename document/content/docs/{ => introduction}/FAQ/dataset.mdx (100%) rename document/content/docs/{ => introduction}/FAQ/docker.mdx (79%) rename document/content/docs/{ => introduction}/FAQ/error.mdx (100%) rename document/content/docs/{ => introduction}/FAQ/external_channel_integration.mdx (100%) rename document/content/docs/{ => introduction}/FAQ/other.mdx (100%) rename document/content/docs/{ => introduction}/FAQ/points_consumption.mdx (100%) rename document/content/docs/{ => introduction}/FAQ/privateDeploy.mdx (81%) rename document/content/docs/{ => introduction}/community.mdx (100%) rename document/content/docs/{ => introduction}/development/configuration.mdx (100%) rename document/content/docs/{ => introduction}/development/custom-models/bge-rerank.mdx (100%) rename document/content/docs/{ => introduction}/development/custom-models/chatglm2-m3e.mdx (100%) rename document/content/docs/{ => introduction}/development/custom-models/chatglm2.mdx (100%) rename document/content/docs/{ => introduction}/development/custom-models/m3e.mdx (100%) rename document/content/docs/{ => introduction}/development/custom-models/marker.mdx (100%) rename document/content/docs/{ => introduction}/development/custom-models/meta.json (100%) rename document/content/docs/{ => introduction}/development/custom-models/ollama.mdx (100%) rename document/content/docs/{ => introduction}/development/custom-models/xinference.mdx (100%) rename document/content/docs/{ => introduction}/development/design/dataset.mdx (100%) rename document/content/docs/{ => introduction}/development/design/design_plugin.mdx (100%) rename document/content/docs/{ => introduction}/development/design/meta.json (100%) rename document/content/docs/{ => introduction}/development/docker.mdx (100%) rename document/content/docs/{ => introduction}/development/faq.mdx (100%) rename document/content/docs/{ => introduction}/development/intro.mdx (100%) rename document/content/docs/{ => introduction}/development/meta.json (100%) rename document/content/docs/{ => introduction}/development/migration/docker_db.mdx (100%) rename document/content/docs/{ => introduction}/development/migration/docker_mongo.mdx (100%) rename document/content/docs/{ => introduction}/development/migration/meta.json (100%) rename document/content/docs/{ => introduction}/development/modelConfig/ai-proxy.mdx (100%) rename document/content/docs/{ => introduction}/development/modelConfig/intro.mdx (100%) rename document/content/docs/{ => introduction}/development/modelConfig/meta.json (100%) rename document/content/docs/{ => introduction}/development/modelConfig/one-api.mdx (100%) rename document/content/docs/{ => introduction}/development/modelConfig/ppio.mdx (100%) rename document/content/docs/{ => introduction}/development/modelConfig/siliconCloud.mdx (100%) rename document/content/docs/{ => introduction}/development/openapi/chat.mdx (100%) rename document/content/docs/{ => introduction}/development/openapi/dataset.mdx (100%) rename document/content/docs/{ => introduction}/development/openapi/intro.mdx (100%) rename document/content/docs/{ => introduction}/development/openapi/meta.json (100%) rename document/content/docs/{ => introduction}/development/openapi/share.mdx (100%) rename document/content/docs/{ => introduction}/development/proxy/cloudflare.mdx (100%) rename document/content/docs/{ => introduction}/development/proxy/http_proxy.mdx (100%) rename document/content/docs/{ => introduction}/development/proxy/meta.json (100%) rename document/content/docs/{ => introduction}/development/proxy/nginx.mdx (100%) rename document/content/docs/{ => introduction}/development/sealos.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/40.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/41.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/42.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/421.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/43.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/44.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/441.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/442.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/445.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/446.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/447.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/45.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/451.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/452.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/46.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/461.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/462.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/463.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/464.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/465.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/466.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/467.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/468.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/469.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/47.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/471.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/48.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/481.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4810.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4811.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4812.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4813.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4814.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4815.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4816.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4817.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4818.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4819.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/482.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4820.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4821.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4822.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4823.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/483.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/484.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/485.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/486.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/487.mdx (98%) rename document/content/docs/{ => introduction}/development/upgrading/488.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/489.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/490.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/491.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4910.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4911.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4912.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4913.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/4914.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/492.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/493.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/494.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/495.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/496.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/497.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/498.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/499.mdx (100%) rename document/content/docs/{ => introduction}/development/upgrading/intro.mdx (100%) create mode 100644 document/content/docs/introduction/development/upgrading/meta.json rename document/content/docs/{ => introduction}/guide/DialogBoxes/htmlRendering.mdx (100%) rename document/content/docs/{ => introduction}/guide/DialogBoxes/meta.json (100%) rename document/content/docs/{ => introduction}/guide/DialogBoxes/quoteList.mdx (100%) rename document/content/docs/{ => introduction}/guide/admin/meta.json (100%) rename document/content/docs/{ => introduction}/guide/admin/sso.mdx (100%) rename document/content/docs/{ => introduction}/guide/admin/teamMode.mdx (100%) rename document/content/docs/{ => introduction}/guide/course/ai_settings.mdx (100%) rename document/content/docs/{ => introduction}/guide/course/chat_input_guide.mdx (100%) rename document/content/docs/{ => introduction}/guide/course/collection_tags.mdx (100%) rename document/content/docs/{ => introduction}/guide/course/fileInput.mdx (100%) rename document/content/docs/{ => introduction}/guide/course/meta.json (100%) rename document/content/docs/{ => introduction}/guide/course/quick-start.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/basic-mode.mdx (96%) rename document/content/docs/{ => introduction}/guide/dashboard/gapier.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/intro.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/mcp_server.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/mcp_tools.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/meta.json (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/ai_chat.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/content_extract.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/coreferenceResolution.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/custom_feedback.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/dataset_search.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/document_parsing.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/form_input.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/http.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/knowledge_base_search_merge.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/laf.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/loop.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/meta.json (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/question_classify.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/reply.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/sandbox.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/text_editor.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/tfswitch.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/tool.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/user-selection.mdx (100%) rename document/content/docs/{ => introduction}/guide/dashboard/workflow/variable_update.mdx (100%) rename document/content/docs/{ => introduction}/guide/knowledge_base/RAG.mdx (100%) rename document/content/docs/{ => introduction}/guide/knowledge_base/api_dataset.mdx (100%) rename document/content/docs/{ => introduction}/guide/knowledge_base/dataset_engine.mdx (100%) rename document/content/docs/{ => introduction}/guide/knowledge_base/externalFile.mdx (100%) rename document/content/docs/{ => introduction}/guide/knowledge_base/lark_dataset.mdx (100%) rename document/content/docs/{ => introduction}/guide/knowledge_base/meta.json (100%) rename document/content/docs/{ => introduction}/guide/knowledge_base/template.mdx (100%) rename document/content/docs/{ => introduction}/guide/knowledge_base/third_dataset.mdx (100%) rename document/content/docs/{ => introduction}/guide/knowledge_base/websync.mdx (100%) rename document/content/docs/{ => introduction}/guide/knowledge_base/yuque_dataset.mdx (100%) rename document/content/docs/{ => introduction}/guide/meta.json (100%) rename document/content/docs/{ => introduction}/guide/plugins/bing_search_plugin.mdx (100%) create mode 100644 document/content/docs/introduction/guide/plugins/dev_system_tool.mdx rename document/content/docs/{ => introduction}/guide/plugins/doc2x_plugin_guide.mdx (100%) rename document/content/docs/{ => introduction}/guide/plugins/google_search_plugin_guide.mdx (100%) rename document/content/docs/{ => introduction}/guide/plugins/how_to_submit_system_plugin.mdx (100%) rename document/content/docs/{ => introduction}/guide/plugins/meta.json (100%) rename document/content/docs/{ => introduction}/guide/plugins/searxng_plugin_guide.mdx (100%) rename document/content/docs/{ => introduction}/guide/team_permissions/invitation_link.mdx (100%) rename document/content/docs/{ => introduction}/guide/team_permissions/meta.json (100%) rename document/content/docs/{ => introduction}/guide/team_permissions/team_roles_permissions.mdx (100%) rename document/content/docs/{intro.en.mdx => introduction/index.en.mdx} (100%) rename document/content/docs/{intro.mdx => introduction/index.mdx} (100%) create mode 100644 document/content/docs/introduction/meta.en.json create mode 100644 document/content/docs/introduction/meta.json rename document/content/docs/{ => introduction}/shopping_cart/intro.mdx (100%) rename document/content/docs/{ => introduction}/shopping_cart/meta.json (100%) rename document/content/docs/{ => introduction}/shopping_cart/saas.mdx (100%) delete mode 100644 document/content/docs/meta.en.json delete mode 100644 document/content/docs/meta.json create mode 100644 document/content/docs/protocol/index.mdx create mode 100644 document/content/docs/protocol/meta.json rename document/content/docs/{agreement => protocol}/open-source.en.mdx (100%) rename document/content/docs/{agreement => protocol}/open-source.mdx (100%) rename document/content/docs/{agreement => protocol}/privacy.en.mdx (100%) rename document/content/docs/{agreement => protocol}/privacy.mdx (100%) rename document/content/docs/{agreement => protocol}/terms.en.mdx (100%) rename document/content/docs/{agreement => protocol}/terms.mdx (100%) rename document/content/docs/{ => use-cases}/index.mdx (100%) create mode 100644 document/lib/github.ts create mode 100644 document/public/feishu.svg create mode 100644 document/update-index.mjs diff --git a/document/.gitignore b/document/.gitignore new file mode 100644 index 000000000000..0c9ff6ca20ab --- /dev/null +++ b/document/.gitignore @@ -0,0 +1,30 @@ +# deps +/node_modules + +# generated content +.contentlayer +.content-collections +.source + +# test & build +/coverage +/.next/ +/out/ +/build +*.tsbuildinfo + +# misc +.DS_Store +*.pem +/.pnp +.pnp.js +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# others +.env*.local +.vercel +next-env.d.ts + +.env \ No newline at end of file diff --git a/document/.source/index.ts b/document/.source/index.ts deleted file mode 100644 index a4cad400b5d7..000000000000 --- a/document/.source/index.ts +++ /dev/null @@ -1,1711 +0,0 @@ -// @ts-nocheck -- skip type checking -import * as docs_179 from '../content/docs/guide/dashboard/workflow/variable_update.mdx?collection=docs&hash=1748921491598'; -import * as docs_178 from '../content/docs/guide/dashboard/workflow/user-selection.mdx?collection=docs&hash=1748921491598'; -import * as docs_177 from '../content/docs/guide/dashboard/workflow/tool.mdx?collection=docs&hash=1748921491598'; -import * as docs_176 from '../content/docs/guide/dashboard/workflow/tfswitch.mdx?collection=docs&hash=1748921491598'; -import * as docs_175 from '../content/docs/guide/dashboard/workflow/text_editor.mdx?collection=docs&hash=1748921491598'; -import * as docs_174 from '../content/docs/guide/dashboard/workflow/sandbox.mdx?collection=docs&hash=1748921491598'; -import * as docs_173 from '../content/docs/guide/dashboard/workflow/reply.mdx?collection=docs&hash=1748921491598'; -import * as docs_172 from '../content/docs/guide/dashboard/workflow/question_classify.mdx?collection=docs&hash=1748921491598'; -import * as docs_171 from '../content/docs/guide/dashboard/workflow/loop.mdx?collection=docs&hash=1748921491598'; -import * as docs_170 from '../content/docs/guide/dashboard/workflow/laf.mdx?collection=docs&hash=1748921491598'; -import * as docs_169 from '../content/docs/guide/dashboard/workflow/knowledge_base_search_merge.mdx?collection=docs&hash=1748921491598'; -import * as docs_168 from '../content/docs/guide/dashboard/workflow/http.mdx?collection=docs&hash=1748921491598'; -import * as docs_167 from '../content/docs/guide/dashboard/workflow/form_input.mdx?collection=docs&hash=1748921491598'; -import * as docs_166 from '../content/docs/guide/dashboard/workflow/document_parsing.mdx?collection=docs&hash=1748921491598'; -import * as docs_165 from '../content/docs/guide/dashboard/workflow/dataset_search.mdx?collection=docs&hash=1748921491598'; -import * as docs_164 from '../content/docs/guide/dashboard/workflow/custom_feedback.mdx?collection=docs&hash=1748921491598'; -import * as docs_163 from '../content/docs/guide/dashboard/workflow/coreferenceResolution.mdx?collection=docs&hash=1748921491598'; -import * as docs_162 from '../content/docs/guide/dashboard/workflow/content_extract.mdx?collection=docs&hash=1748921491598'; -import * as docs_161 from '../content/docs/guide/dashboard/workflow/ai_chat.mdx?collection=docs&hash=1748921491598'; -import * as docs_160 from '../content/docs/use-cases/external-integration/wechat.mdx?collection=docs&hash=1748921491598'; -import * as docs_159 from '../content/docs/use-cases/external-integration/openapi.mdx?collection=docs&hash=1748921491598'; -import * as docs_158 from '../content/docs/use-cases/external-integration/onwechat.mdx?collection=docs&hash=1748921491598'; -import * as docs_157 from '../content/docs/use-cases/external-integration/official_account.mdx?collection=docs&hash=1748921491598'; -import * as docs_156 from '../content/docs/use-cases/external-integration/iframe_integration.mdx?collection=docs&hash=1748921491598'; -import * as docs_155 from '../content/docs/use-cases/external-integration/feishu.mdx?collection=docs&hash=1748921491598'; -import * as docs_154 from '../content/docs/use-cases/external-integration/dingtalk.mdx?collection=docs&hash=1748921491598'; -import * as docs_153 from '../content/docs/use-cases/app-cases/translate-subtitle-using-gpt.mdx?collection=docs&hash=1748921491598'; -import * as docs_152 from '../content/docs/use-cases/app-cases/submit_application_template.mdx?collection=docs&hash=1748921491598'; -import * as docs_151 from '../content/docs/use-cases/app-cases/multi_turn_translation_bot.mdx?collection=docs&hash=1748921491598'; -import * as docs_150 from '../content/docs/use-cases/app-cases/lab_appointment.mdx?collection=docs&hash=1748921491598'; -import * as docs_149 from '../content/docs/use-cases/app-cases/google_search.mdx?collection=docs&hash=1748921491598'; -import * as docs_148 from '../content/docs/use-cases/app-cases/fixingEvidence.mdx?collection=docs&hash=1748921491598'; -import * as docs_147 from '../content/docs/use-cases/app-cases/feishu_webhook.mdx?collection=docs&hash=1748921491598'; -import * as docs_146 from '../content/docs/use-cases/app-cases/english_essay_correction_bot.mdx?collection=docs&hash=1748921491598'; -import * as docs_145 from '../content/docs/use-cases/app-cases/dalle3.mdx?collection=docs&hash=1748921491598'; -import * as docs_144 from '../content/docs/guide/knowledge_base/yuque_dataset.mdx?collection=docs&hash=1748921491598'; -import * as docs_143 from '../content/docs/guide/knowledge_base/websync.mdx?collection=docs&hash=1748921491598'; -import * as docs_142 from '../content/docs/guide/knowledge_base/third_dataset.mdx?collection=docs&hash=1748921491598'; -import * as docs_141 from '../content/docs/guide/knowledge_base/template.mdx?collection=docs&hash=1748921491598'; -import * as docs_140 from '../content/docs/guide/knowledge_base/lark_dataset.mdx?collection=docs&hash=1748921491598'; -import * as docs_139 from '../content/docs/guide/knowledge_base/externalFile.mdx?collection=docs&hash=1748921491598'; -import * as docs_138 from '../content/docs/guide/knowledge_base/dataset_engine.mdx?collection=docs&hash=1748921491598'; -import * as docs_137 from '../content/docs/guide/knowledge_base/api_dataset.mdx?collection=docs&hash=1748921491598'; -import * as docs_136 from '../content/docs/guide/knowledge_base/RAG.mdx?collection=docs&hash=1748921491598'; -import * as docs_135 from '../content/docs/guide/team_permissions/team_roles_permissions.mdx?collection=docs&hash=1748921491598'; -import * as docs_134 from '../content/docs/guide/team_permissions/invitation_link.mdx?collection=docs&hash=1748921491598'; -import * as docs_133 from '../content/docs/guide/plugins/searxng_plugin_guide.mdx?collection=docs&hash=1748921491598'; -import * as docs_132 from '../content/docs/guide/plugins/how_to_submit_system_plugin.mdx?collection=docs&hash=1748921491598'; -import * as docs_131 from '../content/docs/guide/plugins/google_search_plugin_guide.mdx?collection=docs&hash=1748921491598'; -import * as docs_130 from '../content/docs/guide/plugins/doc2x_plugin_guide.mdx?collection=docs&hash=1748921491598'; -import * as docs_129 from '../content/docs/guide/plugins/bing_search_plugin.mdx?collection=docs&hash=1748921491598'; -import * as docs_128 from '../content/docs/guide/dashboard/mcp_tools.mdx?collection=docs&hash=1748921491598'; -import * as docs_127 from '../content/docs/guide/dashboard/mcp_server.mdx?collection=docs&hash=1748921491598'; -import * as docs_126 from '../content/docs/guide/dashboard/intro.mdx?collection=docs&hash=1748921491598'; -import * as docs_125 from '../content/docs/guide/dashboard/gapier.mdx?collection=docs&hash=1748921491598'; -import * as docs_124 from '../content/docs/guide/dashboard/basic-mode.mdx?collection=docs&hash=1748921491598'; -import * as docs_123 from '../content/docs/guide/course/quick-start.mdx?collection=docs&hash=1748921491598'; -import * as docs_122 from '../content/docs/guide/course/fileInput.mdx?collection=docs&hash=1748921491598'; -import * as docs_121 from '../content/docs/guide/course/collection_tags.mdx?collection=docs&hash=1748921491598'; -import * as docs_120 from '../content/docs/guide/course/chat_input_guide.mdx?collection=docs&hash=1748921491598'; -import * as docs_119 from '../content/docs/guide/course/ai_settings.mdx?collection=docs&hash=1748921491598'; -import * as docs_118 from '../content/docs/guide/admin/teamMode.mdx?collection=docs&hash=1748921491598'; -import * as docs_117 from '../content/docs/guide/admin/sso.mdx?collection=docs&hash=1748921491598'; -import * as docs_116 from '../content/docs/development/upgrading/intro.mdx?collection=docs&hash=1748921491598'; -import * as docs_115 from '../content/docs/development/upgrading/499.mdx?collection=docs&hash=1748921491598'; -import * as docs_114 from '../content/docs/development/upgrading/498.mdx?collection=docs&hash=1748921491598'; -import * as docs_113 from '../content/docs/development/upgrading/497.mdx?collection=docs&hash=1748921491598'; -import * as docs_112 from '../content/docs/development/upgrading/496.mdx?collection=docs&hash=1748921491598'; -import * as docs_111 from '../content/docs/development/upgrading/495.mdx?collection=docs&hash=1748921491598'; -import * as docs_110 from '../content/docs/development/upgrading/494.mdx?collection=docs&hash=1748921491598'; -import * as docs_109 from '../content/docs/development/upgrading/493.mdx?collection=docs&hash=1748921491598'; -import * as docs_108 from '../content/docs/development/upgrading/492.mdx?collection=docs&hash=1748921491598'; -import * as docs_107 from '../content/docs/development/upgrading/4914.mdx?collection=docs&hash=1748921491598'; -import * as docs_106 from '../content/docs/development/upgrading/4913.mdx?collection=docs&hash=1748921491598'; -import * as docs_105 from '../content/docs/development/upgrading/4912.mdx?collection=docs&hash=1748921491598'; -import * as docs_104 from '../content/docs/development/upgrading/4911.mdx?collection=docs&hash=1748921491598'; -import * as docs_103 from '../content/docs/development/upgrading/4910.mdx?collection=docs&hash=1748921491598'; -import * as docs_102 from '../content/docs/development/upgrading/491.mdx?collection=docs&hash=1748921491598'; -import * as docs_101 from '../content/docs/development/upgrading/490.mdx?collection=docs&hash=1748921491598'; -import * as docs_100 from '../content/docs/development/upgrading/489.mdx?collection=docs&hash=1748921491598'; -import * as docs_99 from '../content/docs/development/upgrading/488.mdx?collection=docs&hash=1748921491598'; -import * as docs_98 from '../content/docs/development/upgrading/487.mdx?collection=docs&hash=1748921491598'; -import * as docs_97 from '../content/docs/development/upgrading/486.mdx?collection=docs&hash=1748921491598'; -import * as docs_96 from '../content/docs/development/upgrading/485.mdx?collection=docs&hash=1748921491598'; -import * as docs_95 from '../content/docs/development/upgrading/484.mdx?collection=docs&hash=1748921491598'; -import * as docs_94 from '../content/docs/development/upgrading/483.mdx?collection=docs&hash=1748921491598'; -import * as docs_93 from '../content/docs/development/upgrading/4823.mdx?collection=docs&hash=1748921491598'; -import * as docs_92 from '../content/docs/development/upgrading/4822.mdx?collection=docs&hash=1748921491598'; -import * as docs_91 from '../content/docs/development/upgrading/4821.mdx?collection=docs&hash=1748921491598'; -import * as docs_90 from '../content/docs/development/upgrading/4820.mdx?collection=docs&hash=1748921491598'; -import * as docs_89 from '../content/docs/development/upgrading/482.mdx?collection=docs&hash=1748921491598'; -import * as docs_88 from '../content/docs/development/upgrading/4819.mdx?collection=docs&hash=1748921491598'; -import * as docs_87 from '../content/docs/development/upgrading/4818.mdx?collection=docs&hash=1748921491598'; -import * as docs_86 from '../content/docs/development/upgrading/4817.mdx?collection=docs&hash=1748921491598'; -import * as docs_85 from '../content/docs/development/upgrading/4816.mdx?collection=docs&hash=1748921491598'; -import * as docs_84 from '../content/docs/development/upgrading/4815.mdx?collection=docs&hash=1748921491598'; -import * as docs_83 from '../content/docs/development/upgrading/4814.mdx?collection=docs&hash=1748921491598'; -import * as docs_82 from '../content/docs/development/upgrading/4813.mdx?collection=docs&hash=1748921491598'; -import * as docs_81 from '../content/docs/development/upgrading/4812.mdx?collection=docs&hash=1748921491598'; -import * as docs_80 from '../content/docs/development/upgrading/4811.mdx?collection=docs&hash=1748921491598'; -import * as docs_79 from '../content/docs/development/upgrading/4810.mdx?collection=docs&hash=1748921491598'; -import * as docs_78 from '../content/docs/development/upgrading/481.mdx?collection=docs&hash=1748921491598'; -import * as docs_77 from '../content/docs/development/upgrading/48.mdx?collection=docs&hash=1748921491598'; -import * as docs_76 from '../content/docs/development/upgrading/471.mdx?collection=docs&hash=1748921491598'; -import * as docs_75 from '../content/docs/development/upgrading/47.mdx?collection=docs&hash=1748921491598'; -import * as docs_74 from '../content/docs/development/upgrading/469.mdx?collection=docs&hash=1748921491598'; -import * as docs_73 from '../content/docs/development/upgrading/468.mdx?collection=docs&hash=1748921491598'; -import * as docs_72 from '../content/docs/development/upgrading/467.mdx?collection=docs&hash=1748921491598'; -import * as docs_71 from '../content/docs/development/upgrading/466.mdx?collection=docs&hash=1748921491598'; -import * as docs_70 from '../content/docs/development/upgrading/465.mdx?collection=docs&hash=1748921491598'; -import * as docs_69 from '../content/docs/development/upgrading/464.mdx?collection=docs&hash=1748921491598'; -import * as docs_68 from '../content/docs/development/upgrading/463.mdx?collection=docs&hash=1748921491598'; -import * as docs_67 from '../content/docs/development/upgrading/462.mdx?collection=docs&hash=1748921491598'; -import * as docs_66 from '../content/docs/development/upgrading/461.mdx?collection=docs&hash=1748921491598'; -import * as docs_65 from '../content/docs/development/upgrading/46.mdx?collection=docs&hash=1748921491598'; -import * as docs_64 from '../content/docs/development/upgrading/452.mdx?collection=docs&hash=1748921491598'; -import * as docs_63 from '../content/docs/development/upgrading/451.mdx?collection=docs&hash=1748921491598'; -import * as docs_62 from '../content/docs/development/upgrading/45.mdx?collection=docs&hash=1748921491598'; -import * as docs_61 from '../content/docs/development/upgrading/447.mdx?collection=docs&hash=1748921491598'; -import * as docs_60 from '../content/docs/development/upgrading/446.mdx?collection=docs&hash=1748921491598'; -import * as docs_59 from '../content/docs/development/upgrading/445.mdx?collection=docs&hash=1748921491598'; -import * as docs_58 from '../content/docs/development/upgrading/442.mdx?collection=docs&hash=1748921491598'; -import * as docs_57 from '../content/docs/development/upgrading/441.mdx?collection=docs&hash=1748921491598'; -import * as docs_56 from '../content/docs/development/upgrading/44.mdx?collection=docs&hash=1748921491598'; -import * as docs_55 from '../content/docs/development/upgrading/43.mdx?collection=docs&hash=1748921491598'; -import * as docs_54 from '../content/docs/development/upgrading/421.mdx?collection=docs&hash=1748921491598'; -import * as docs_53 from '../content/docs/development/upgrading/42.mdx?collection=docs&hash=1748921491598'; -import * as docs_52 from '../content/docs/development/upgrading/41.mdx?collection=docs&hash=1748921491598'; -import * as docs_51 from '../content/docs/development/upgrading/40.mdx?collection=docs&hash=1748921491598'; -import * as docs_50 from '../content/docs/guide/DialogBoxes/quoteList.mdx?collection=docs&hash=1748921491598'; -import * as docs_49 from '../content/docs/guide/DialogBoxes/htmlRendering.mdx?collection=docs&hash=1748921491598'; -import * as docs_48 from '../content/docs/development/proxy/nginx.mdx?collection=docs&hash=1748921491598'; -import * as docs_47 from '../content/docs/development/proxy/http_proxy.mdx?collection=docs&hash=1748921491598'; -import * as docs_46 from '../content/docs/development/proxy/cloudflare.mdx?collection=docs&hash=1748921491598'; -import * as docs_45 from '../content/docs/development/modelConfig/siliconCloud.mdx?collection=docs&hash=1748921491598'; -import * as docs_44 from '../content/docs/development/modelConfig/ppio.mdx?collection=docs&hash=1748921491598'; -import * as docs_43 from '../content/docs/development/modelConfig/one-api.mdx?collection=docs&hash=1748921491598'; -import * as docs_42 from '../content/docs/development/modelConfig/intro.mdx?collection=docs&hash=1748921491598'; -import * as docs_41 from '../content/docs/development/modelConfig/ai-proxy.mdx?collection=docs&hash=1748921491598'; -import * as docs_40 from '../content/docs/development/openapi/share.mdx?collection=docs&hash=1748921491598'; -import * as docs_39 from '../content/docs/development/openapi/intro.mdx?collection=docs&hash=1748921491598'; -import * as docs_38 from '../content/docs/development/openapi/dataset.mdx?collection=docs&hash=1748921491598'; -import * as docs_37 from '../content/docs/development/openapi/chat.mdx?collection=docs&hash=1748921491598'; -import * as docs_36 from '../content/docs/development/migration/docker_mongo.mdx?collection=docs&hash=1748921491598'; -import * as docs_35 from '../content/docs/development/migration/docker_db.mdx?collection=docs&hash=1748921491598'; -import * as docs_34 from '../content/docs/development/design/design_plugin.mdx?collection=docs&hash=1748921491598'; -import * as docs_33 from '../content/docs/development/design/dataset.mdx?collection=docs&hash=1748921491598'; -import * as docs_32 from '../content/docs/development/custom-models/xinference.mdx?collection=docs&hash=1748921491598'; -import * as docs_31 from '../content/docs/development/custom-models/ollama.mdx?collection=docs&hash=1748921491598'; -import * as docs_30 from '../content/docs/development/custom-models/marker.mdx?collection=docs&hash=1748921491598'; -import * as docs_29 from '../content/docs/development/custom-models/m3e.mdx?collection=docs&hash=1748921491598'; -import * as docs_28 from '../content/docs/development/custom-models/chatglm2.mdx?collection=docs&hash=1748921491598'; -import * as docs_27 from '../content/docs/development/custom-models/chatglm2-m3e.mdx?collection=docs&hash=1748921491598'; -import * as docs_26 from '../content/docs/development/custom-models/bge-rerank.mdx?collection=docs&hash=1748921491598'; -import * as docs_25 from '../content/docs/shopping_cart/saas.mdx?collection=docs&hash=1748921491598'; -import * as docs_24 from '../content/docs/shopping_cart/intro.mdx?collection=docs&hash=1748921491598'; -import * as docs_23 from '../content/docs/development/sealos.mdx?collection=docs&hash=1748921491598'; -import * as docs_22 from '../content/docs/development/intro.mdx?collection=docs&hash=1748921491598'; -import * as docs_21 from '../content/docs/development/faq.mdx?collection=docs&hash=1748921491598'; -import * as docs_20 from '../content/docs/development/docker.mdx?collection=docs&hash=1748921491598'; -import * as docs_19 from '../content/docs/development/configuration.mdx?collection=docs&hash=1748921491598'; -import * as docs_18 from '../content/docs/FAQ/privateDeploy.mdx?collection=docs&hash=1748921491598'; -import * as docs_17 from '../content/docs/FAQ/points_consumption.mdx?collection=docs&hash=1748921491598'; -import * as docs_16 from '../content/docs/FAQ/other.mdx?collection=docs&hash=1748921491598'; -import * as docs_15 from '../content/docs/FAQ/external_channel_integration.mdx?collection=docs&hash=1748921491598'; -import * as docs_14 from '../content/docs/FAQ/error.mdx?collection=docs&hash=1748921491598'; -import * as docs_13 from '../content/docs/FAQ/docker.mdx?collection=docs&hash=1748921491598'; -import * as docs_12 from '../content/docs/FAQ/dataset.mdx?collection=docs&hash=1748921491598'; -import * as docs_11 from '../content/docs/FAQ/chat.mdx?collection=docs&hash=1748921491598'; -import * as docs_10 from '../content/docs/FAQ/app.mdx?collection=docs&hash=1748921491598'; -import * as docs_9 from '../content/docs/agreement/terms.mdx?collection=docs&hash=1748921491598'; -import * as docs_8 from '../content/docs/agreement/terms.en.mdx?collection=docs&hash=1748921491598'; -import * as docs_7 from '../content/docs/agreement/privacy.mdx?collection=docs&hash=1748921491598'; -import * as docs_6 from '../content/docs/agreement/privacy.en.mdx?collection=docs&hash=1748921491598'; -import * as docs_5 from '../content/docs/agreement/open-source.mdx?collection=docs&hash=1748921491598'; -import * as docs_4 from '../content/docs/agreement/open-source.en.mdx?collection=docs&hash=1748921491598'; -import * as docs_3 from '../content/docs/intro.mdx?collection=docs&hash=1748921491598'; -import * as docs_2 from '../content/docs/intro.en.mdx?collection=docs&hash=1748921491598'; -import * as docs_1 from '../content/docs/index.mdx?collection=docs&hash=1748921491598'; -import * as docs_0 from '../content/docs/community.mdx?collection=docs&hash=1748921491598'; -import { _runtime } from 'fumadocs-mdx'; -import * as _source from '../source.config'; -export const docs = _runtime.docs( - [ - { - info: { - path: 'community.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/community.mdx' - }, - data: docs_0 - }, - { - info: { path: 'index.mdx', absolutePath: '/Users/dreamer/work/fast/content/docs/index.mdx' }, - data: docs_1 - }, - { - info: { - path: 'intro.en.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/intro.en.mdx' - }, - data: docs_2 - }, - { - info: { path: 'intro.mdx', absolutePath: '/Users/dreamer/work/fast/content/docs/intro.mdx' }, - data: docs_3 - }, - { - info: { - path: 'agreement/open-source.en.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/agreement/open-source.en.mdx' - }, - data: docs_4 - }, - { - info: { - path: 'agreement/open-source.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/agreement/open-source.mdx' - }, - data: docs_5 - }, - { - info: { - path: 'agreement/privacy.en.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/agreement/privacy.en.mdx' - }, - data: docs_6 - }, - { - info: { - path: 'agreement/privacy.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/agreement/privacy.mdx' - }, - data: docs_7 - }, - { - info: { - path: 'agreement/terms.en.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/agreement/terms.en.mdx' - }, - data: docs_8 - }, - { - info: { - path: 'agreement/terms.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/agreement/terms.mdx' - }, - data: docs_9 - }, - { - info: { - path: 'FAQ/app.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/FAQ/app.mdx' - }, - data: docs_10 - }, - { - info: { - path: 'FAQ/chat.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/FAQ/chat.mdx' - }, - data: docs_11 - }, - { - info: { - path: 'FAQ/dataset.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/FAQ/dataset.mdx' - }, - data: docs_12 - }, - { - info: { - path: 'FAQ/docker.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/FAQ/docker.mdx' - }, - data: docs_13 - }, - { - info: { - path: 'FAQ/error.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/FAQ/error.mdx' - }, - data: docs_14 - }, - { - info: { - path: 'FAQ/external_channel_integration.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/FAQ/external_channel_integration.mdx' - }, - data: docs_15 - }, - { - info: { - path: 'FAQ/other.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/FAQ/other.mdx' - }, - data: docs_16 - }, - { - info: { - path: 'FAQ/points_consumption.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/FAQ/points_consumption.mdx' - }, - data: docs_17 - }, - { - info: { - path: 'FAQ/privateDeploy.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/FAQ/privateDeploy.mdx' - }, - data: docs_18 - }, - { - info: { - path: 'development/configuration.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/configuration.mdx' - }, - data: docs_19 - }, - { - info: { - path: 'development/docker.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/docker.mdx' - }, - data: docs_20 - }, - { - info: { - path: 'development/faq.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/faq.mdx' - }, - data: docs_21 - }, - { - info: { - path: 'development/intro.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/intro.mdx' - }, - data: docs_22 - }, - { - info: { - path: 'development/sealos.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/sealos.mdx' - }, - data: docs_23 - }, - { - info: { - path: 'shopping_cart/intro.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/shopping_cart/intro.mdx' - }, - data: docs_24 - }, - { - info: { - path: 'shopping_cart/saas.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/shopping_cart/saas.mdx' - }, - data: docs_25 - }, - { - info: { - path: 'development/custom-models/bge-rerank.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/development/custom-models/bge-rerank.mdx' - }, - data: docs_26 - }, - { - info: { - path: 'development/custom-models/chatglm2-m3e.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/development/custom-models/chatglm2-m3e.mdx' - }, - data: docs_27 - }, - { - info: { - path: 'development/custom-models/chatglm2.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/custom-models/chatglm2.mdx' - }, - data: docs_28 - }, - { - info: { - path: 'development/custom-models/m3e.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/custom-models/m3e.mdx' - }, - data: docs_29 - }, - { - info: { - path: 'development/custom-models/marker.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/custom-models/marker.mdx' - }, - data: docs_30 - }, - { - info: { - path: 'development/custom-models/ollama.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/custom-models/ollama.mdx' - }, - data: docs_31 - }, - { - info: { - path: 'development/custom-models/xinference.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/development/custom-models/xinference.mdx' - }, - data: docs_32 - }, - { - info: { - path: 'development/design/dataset.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/design/dataset.mdx' - }, - data: docs_33 - }, - { - info: { - path: 'development/design/design_plugin.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/design/design_plugin.mdx' - }, - data: docs_34 - }, - { - info: { - path: 'development/migration/docker_db.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/migration/docker_db.mdx' - }, - data: docs_35 - }, - { - info: { - path: 'development/migration/docker_mongo.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/migration/docker_mongo.mdx' - }, - data: docs_36 - }, - { - info: { - path: 'development/openapi/chat.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/openapi/chat.mdx' - }, - data: docs_37 - }, - { - info: { - path: 'development/openapi/dataset.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/openapi/dataset.mdx' - }, - data: docs_38 - }, - { - info: { - path: 'development/openapi/intro.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/openapi/intro.mdx' - }, - data: docs_39 - }, - { - info: { - path: 'development/openapi/share.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/openapi/share.mdx' - }, - data: docs_40 - }, - { - info: { - path: 'development/modelConfig/ai-proxy.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/modelConfig/ai-proxy.mdx' - }, - data: docs_41 - }, - { - info: { - path: 'development/modelConfig/intro.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/modelConfig/intro.mdx' - }, - data: docs_42 - }, - { - info: { - path: 'development/modelConfig/one-api.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/modelConfig/one-api.mdx' - }, - data: docs_43 - }, - { - info: { - path: 'development/modelConfig/ppio.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/modelConfig/ppio.mdx' - }, - data: docs_44 - }, - { - info: { - path: 'development/modelConfig/siliconCloud.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/development/modelConfig/siliconCloud.mdx' - }, - data: docs_45 - }, - { - info: { - path: 'development/proxy/cloudflare.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/proxy/cloudflare.mdx' - }, - data: docs_46 - }, - { - info: { - path: 'development/proxy/http_proxy.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/proxy/http_proxy.mdx' - }, - data: docs_47 - }, - { - info: { - path: 'development/proxy/nginx.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/proxy/nginx.mdx' - }, - data: docs_48 - }, - { - info: { - path: 'guide/DialogBoxes/htmlRendering.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/DialogBoxes/htmlRendering.mdx' - }, - data: docs_49 - }, - { - info: { - path: 'guide/DialogBoxes/quoteList.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/DialogBoxes/quoteList.mdx' - }, - data: docs_50 - }, - { - info: { - path: 'development/upgrading/40.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/40.mdx' - }, - data: docs_51 - }, - { - info: { - path: 'development/upgrading/41.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/41.mdx' - }, - data: docs_52 - }, - { - info: { - path: 'development/upgrading/42.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/42.mdx' - }, - data: docs_53 - }, - { - info: { - path: 'development/upgrading/421.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/421.mdx' - }, - data: docs_54 - }, - { - info: { - path: 'development/upgrading/43.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/43.mdx' - }, - data: docs_55 - }, - { - info: { - path: 'development/upgrading/44.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/44.mdx' - }, - data: docs_56 - }, - { - info: { - path: 'development/upgrading/441.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/441.mdx' - }, - data: docs_57 - }, - { - info: { - path: 'development/upgrading/442.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/442.mdx' - }, - data: docs_58 - }, - { - info: { - path: 'development/upgrading/445.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/445.mdx' - }, - data: docs_59 - }, - { - info: { - path: 'development/upgrading/446.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/446.mdx' - }, - data: docs_60 - }, - { - info: { - path: 'development/upgrading/447.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/447.mdx' - }, - data: docs_61 - }, - { - info: { - path: 'development/upgrading/45.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/45.mdx' - }, - data: docs_62 - }, - { - info: { - path: 'development/upgrading/451.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/451.mdx' - }, - data: docs_63 - }, - { - info: { - path: 'development/upgrading/452.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/452.mdx' - }, - data: docs_64 - }, - { - info: { - path: 'development/upgrading/46.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/46.mdx' - }, - data: docs_65 - }, - { - info: { - path: 'development/upgrading/461.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/461.mdx' - }, - data: docs_66 - }, - { - info: { - path: 'development/upgrading/462.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/462.mdx' - }, - data: docs_67 - }, - { - info: { - path: 'development/upgrading/463.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/463.mdx' - }, - data: docs_68 - }, - { - info: { - path: 'development/upgrading/464.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/464.mdx' - }, - data: docs_69 - }, - { - info: { - path: 'development/upgrading/465.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/465.mdx' - }, - data: docs_70 - }, - { - info: { - path: 'development/upgrading/466.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/466.mdx' - }, - data: docs_71 - }, - { - info: { - path: 'development/upgrading/467.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/467.mdx' - }, - data: docs_72 - }, - { - info: { - path: 'development/upgrading/468.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/468.mdx' - }, - data: docs_73 - }, - { - info: { - path: 'development/upgrading/469.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/469.mdx' - }, - data: docs_74 - }, - { - info: { - path: 'development/upgrading/47.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/47.mdx' - }, - data: docs_75 - }, - { - info: { - path: 'development/upgrading/471.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/471.mdx' - }, - data: docs_76 - }, - { - info: { - path: 'development/upgrading/48.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/48.mdx' - }, - data: docs_77 - }, - { - info: { - path: 'development/upgrading/481.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/481.mdx' - }, - data: docs_78 - }, - { - info: { - path: 'development/upgrading/4810.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4810.mdx' - }, - data: docs_79 - }, - { - info: { - path: 'development/upgrading/4811.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4811.mdx' - }, - data: docs_80 - }, - { - info: { - path: 'development/upgrading/4812.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4812.mdx' - }, - data: docs_81 - }, - { - info: { - path: 'development/upgrading/4813.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4813.mdx' - }, - data: docs_82 - }, - { - info: { - path: 'development/upgrading/4814.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4814.mdx' - }, - data: docs_83 - }, - { - info: { - path: 'development/upgrading/4815.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4815.mdx' - }, - data: docs_84 - }, - { - info: { - path: 'development/upgrading/4816.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4816.mdx' - }, - data: docs_85 - }, - { - info: { - path: 'development/upgrading/4817.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4817.mdx' - }, - data: docs_86 - }, - { - info: { - path: 'development/upgrading/4818.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4818.mdx' - }, - data: docs_87 - }, - { - info: { - path: 'development/upgrading/4819.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4819.mdx' - }, - data: docs_88 - }, - { - info: { - path: 'development/upgrading/482.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/482.mdx' - }, - data: docs_89 - }, - { - info: { - path: 'development/upgrading/4820.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4820.mdx' - }, - data: docs_90 - }, - { - info: { - path: 'development/upgrading/4821.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4821.mdx' - }, - data: docs_91 - }, - { - info: { - path: 'development/upgrading/4822.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4822.mdx' - }, - data: docs_92 - }, - { - info: { - path: 'development/upgrading/4823.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4823.mdx' - }, - data: docs_93 - }, - { - info: { - path: 'development/upgrading/483.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/483.mdx' - }, - data: docs_94 - }, - { - info: { - path: 'development/upgrading/484.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/484.mdx' - }, - data: docs_95 - }, - { - info: { - path: 'development/upgrading/485.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/485.mdx' - }, - data: docs_96 - }, - { - info: { - path: 'development/upgrading/486.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/486.mdx' - }, - data: docs_97 - }, - { - info: { - path: 'development/upgrading/487.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/487.mdx' - }, - data: docs_98 - }, - { - info: { - path: 'development/upgrading/488.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/488.mdx' - }, - data: docs_99 - }, - { - info: { - path: 'development/upgrading/489.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/489.mdx' - }, - data: docs_100 - }, - { - info: { - path: 'development/upgrading/490.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/490.mdx' - }, - data: docs_101 - }, - { - info: { - path: 'development/upgrading/491.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/491.mdx' - }, - data: docs_102 - }, - { - info: { - path: 'development/upgrading/4910.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4910.mdx' - }, - data: docs_103 - }, - { - info: { - path: 'development/upgrading/4911.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4911.mdx' - }, - data: docs_104 - }, - { - info: { - path: 'development/upgrading/4912.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4912.mdx' - }, - data: docs_105 - }, - { - info: { - path: 'development/upgrading/4913.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4913.mdx' - }, - data: docs_106 - }, - { - info: { - path: 'development/upgrading/4914.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/4914.mdx' - }, - data: docs_107 - }, - { - info: { - path: 'development/upgrading/492.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/492.mdx' - }, - data: docs_108 - }, - { - info: { - path: 'development/upgrading/493.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/493.mdx' - }, - data: docs_109 - }, - { - info: { - path: 'development/upgrading/494.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/494.mdx' - }, - data: docs_110 - }, - { - info: { - path: 'development/upgrading/495.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/495.mdx' - }, - data: docs_111 - }, - { - info: { - path: 'development/upgrading/496.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/496.mdx' - }, - data: docs_112 - }, - { - info: { - path: 'development/upgrading/497.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/497.mdx' - }, - data: docs_113 - }, - { - info: { - path: 'development/upgrading/498.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/498.mdx' - }, - data: docs_114 - }, - { - info: { - path: 'development/upgrading/499.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/499.mdx' - }, - data: docs_115 - }, - { - info: { - path: 'development/upgrading/intro.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/intro.mdx' - }, - data: docs_116 - }, - { - info: { - path: 'guide/admin/sso.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/admin/sso.mdx' - }, - data: docs_117 - }, - { - info: { - path: 'guide/admin/teamMode.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/admin/teamMode.mdx' - }, - data: docs_118 - }, - { - info: { - path: 'guide/course/ai_settings.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/course/ai_settings.mdx' - }, - data: docs_119 - }, - { - info: { - path: 'guide/course/chat_input_guide.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/course/chat_input_guide.mdx' - }, - data: docs_120 - }, - { - info: { - path: 'guide/course/collection_tags.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/course/collection_tags.mdx' - }, - data: docs_121 - }, - { - info: { - path: 'guide/course/fileInput.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/course/fileInput.mdx' - }, - data: docs_122 - }, - { - info: { - path: 'guide/course/quick-start.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/course/quick-start.mdx' - }, - data: docs_123 - }, - { - info: { - path: 'guide/dashboard/basic-mode.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/dashboard/basic-mode.mdx' - }, - data: docs_124 - }, - { - info: { - path: 'guide/dashboard/gapier.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/dashboard/gapier.mdx' - }, - data: docs_125 - }, - { - info: { - path: 'guide/dashboard/intro.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/dashboard/intro.mdx' - }, - data: docs_126 - }, - { - info: { - path: 'guide/dashboard/mcp_server.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/dashboard/mcp_server.mdx' - }, - data: docs_127 - }, - { - info: { - path: 'guide/dashboard/mcp_tools.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/dashboard/mcp_tools.mdx' - }, - data: docs_128 - }, - { - info: { - path: 'guide/plugins/bing_search_plugin.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/plugins/bing_search_plugin.mdx' - }, - data: docs_129 - }, - { - info: { - path: 'guide/plugins/doc2x_plugin_guide.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/plugins/doc2x_plugin_guide.mdx' - }, - data: docs_130 - }, - { - info: { - path: 'guide/plugins/google_search_plugin_guide.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/plugins/google_search_plugin_guide.mdx' - }, - data: docs_131 - }, - { - info: { - path: 'guide/plugins/how_to_submit_system_plugin.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/plugins/how_to_submit_system_plugin.mdx' - }, - data: docs_132 - }, - { - info: { - path: 'guide/plugins/searxng_plugin_guide.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/plugins/searxng_plugin_guide.mdx' - }, - data: docs_133 - }, - { - info: { - path: 'guide/team_permissions/invitation_link.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/team_permissions/invitation_link.mdx' - }, - data: docs_134 - }, - { - info: { - path: 'guide/team_permissions/team_roles_permissions.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/team_permissions/team_roles_permissions.mdx' - }, - data: docs_135 - }, - { - info: { - path: 'guide/knowledge_base/RAG.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/knowledge_base/RAG.mdx' - }, - data: docs_136 - }, - { - info: { - path: 'guide/knowledge_base/api_dataset.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/knowledge_base/api_dataset.mdx' - }, - data: docs_137 - }, - { - info: { - path: 'guide/knowledge_base/dataset_engine.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/knowledge_base/dataset_engine.mdx' - }, - data: docs_138 - }, - { - info: { - path: 'guide/knowledge_base/externalFile.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/knowledge_base/externalFile.mdx' - }, - data: docs_139 - }, - { - info: { - path: 'guide/knowledge_base/lark_dataset.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/knowledge_base/lark_dataset.mdx' - }, - data: docs_140 - }, - { - info: { - path: 'guide/knowledge_base/template.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/knowledge_base/template.mdx' - }, - data: docs_141 - }, - { - info: { - path: 'guide/knowledge_base/third_dataset.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/knowledge_base/third_dataset.mdx' - }, - data: docs_142 - }, - { - info: { - path: 'guide/knowledge_base/websync.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/knowledge_base/websync.mdx' - }, - data: docs_143 - }, - { - info: { - path: 'guide/knowledge_base/yuque_dataset.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/knowledge_base/yuque_dataset.mdx' - }, - data: docs_144 - }, - { - info: { - path: 'use-cases/app-cases/dalle3.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/use-cases/app-cases/dalle3.mdx' - }, - data: docs_145 - }, - { - info: { - path: 'use-cases/app-cases/english_essay_correction_bot.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/use-cases/app-cases/english_essay_correction_bot.mdx' - }, - data: docs_146 - }, - { - info: { - path: 'use-cases/app-cases/feishu_webhook.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/use-cases/app-cases/feishu_webhook.mdx' - }, - data: docs_147 - }, - { - info: { - path: 'use-cases/app-cases/fixingEvidence.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/use-cases/app-cases/fixingEvidence.mdx' - }, - data: docs_148 - }, - { - info: { - path: 'use-cases/app-cases/google_search.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/use-cases/app-cases/google_search.mdx' - }, - data: docs_149 - }, - { - info: { - path: 'use-cases/app-cases/lab_appointment.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/use-cases/app-cases/lab_appointment.mdx' - }, - data: docs_150 - }, - { - info: { - path: 'use-cases/app-cases/multi_turn_translation_bot.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/use-cases/app-cases/multi_turn_translation_bot.mdx' - }, - data: docs_151 - }, - { - info: { - path: 'use-cases/app-cases/submit_application_template.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/use-cases/app-cases/submit_application_template.mdx' - }, - data: docs_152 - }, - { - info: { - path: 'use-cases/app-cases/translate-subtitle-using-gpt.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/use-cases/app-cases/translate-subtitle-using-gpt.mdx' - }, - data: docs_153 - }, - { - info: { - path: 'use-cases/external-integration/dingtalk.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/use-cases/external-integration/dingtalk.mdx' - }, - data: docs_154 - }, - { - info: { - path: 'use-cases/external-integration/feishu.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/use-cases/external-integration/feishu.mdx' - }, - data: docs_155 - }, - { - info: { - path: 'use-cases/external-integration/iframe_integration.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/use-cases/external-integration/iframe_integration.mdx' - }, - data: docs_156 - }, - { - info: { - path: 'use-cases/external-integration/official_account.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/use-cases/external-integration/official_account.mdx' - }, - data: docs_157 - }, - { - info: { - path: 'use-cases/external-integration/onwechat.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/use-cases/external-integration/onwechat.mdx' - }, - data: docs_158 - }, - { - info: { - path: 'use-cases/external-integration/openapi.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/use-cases/external-integration/openapi.mdx' - }, - data: docs_159 - }, - { - info: { - path: 'use-cases/external-integration/wechat.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/use-cases/external-integration/wechat.mdx' - }, - data: docs_160 - }, - { - info: { - path: 'guide/dashboard/workflow/ai_chat.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/ai_chat.mdx' - }, - data: docs_161 - }, - { - info: { - path: 'guide/dashboard/workflow/content_extract.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/content_extract.mdx' - }, - data: docs_162 - }, - { - info: { - path: 'guide/dashboard/workflow/coreferenceResolution.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/coreferenceResolution.mdx' - }, - data: docs_163 - }, - { - info: { - path: 'guide/dashboard/workflow/custom_feedback.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/custom_feedback.mdx' - }, - data: docs_164 - }, - { - info: { - path: 'guide/dashboard/workflow/dataset_search.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/dataset_search.mdx' - }, - data: docs_165 - }, - { - info: { - path: 'guide/dashboard/workflow/document_parsing.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/document_parsing.mdx' - }, - data: docs_166 - }, - { - info: { - path: 'guide/dashboard/workflow/form_input.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/form_input.mdx' - }, - data: docs_167 - }, - { - info: { - path: 'guide/dashboard/workflow/http.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/http.mdx' - }, - data: docs_168 - }, - { - info: { - path: 'guide/dashboard/workflow/knowledge_base_search_merge.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/knowledge_base_search_merge.mdx' - }, - data: docs_169 - }, - { - info: { - path: 'guide/dashboard/workflow/laf.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/laf.mdx' - }, - data: docs_170 - }, - { - info: { - path: 'guide/dashboard/workflow/loop.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/loop.mdx' - }, - data: docs_171 - }, - { - info: { - path: 'guide/dashboard/workflow/question_classify.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/question_classify.mdx' - }, - data: docs_172 - }, - { - info: { - path: 'guide/dashboard/workflow/reply.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/reply.mdx' - }, - data: docs_173 - }, - { - info: { - path: 'guide/dashboard/workflow/sandbox.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/sandbox.mdx' - }, - data: docs_174 - }, - { - info: { - path: 'guide/dashboard/workflow/text_editor.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/text_editor.mdx' - }, - data: docs_175 - }, - { - info: { - path: 'guide/dashboard/workflow/tfswitch.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/tfswitch.mdx' - }, - data: docs_176 - }, - { - info: { - path: 'guide/dashboard/workflow/tool.mdx', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/tool.mdx' - }, - data: docs_177 - }, - { - info: { - path: 'guide/dashboard/workflow/user-selection.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/user-selection.mdx' - }, - data: docs_178 - }, - { - info: { - path: 'guide/dashboard/workflow/variable_update.mdx', - absolutePath: - '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/variable_update.mdx' - }, - data: docs_179 - } - ], - [ - { - info: { - path: 'meta.en.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/meta.en.json' - }, - data: { - title: 'FastGPT Docs', - pages: [ - 'intro.en', - 'guide', - 'use-cases', - 'development', - 'FAQ', - 'shopping_cart', - 'agreement', - 'community' - ], - root: true - } - }, - { - info: { path: 'meta.json', absolutePath: '/Users/dreamer/work/fast/content/docs/meta.json' }, - data: { - title: 'FastGPT Docs', - pages: [ - '[Handshake][联系我们](https://fael3z0zfze.feishu.cn/share/base/form/shrcnRxj3utrzjywsom96Px4sud)', - 'intro', - 'test', - 'guide', - 'use-cases', - 'development', - 'FAQ', - 'shopping_cart', - 'agreement', - 'community' - ], - root: true - } - }, - { - info: { - path: 'agreement/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/agreement/meta.json' - }, - data: { title: '协议' } - }, - { - info: { - path: 'guide/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/meta.json' - }, - data: { - title: '功能介绍', - pages: [ - 'course', - 'dashboard', - 'plugins', - 'knowledge_base', - 'team_permissions', - 'DialogBoxes', - 'admin' - ], - description: 'FastGPT 功能介绍' - } - }, - { - info: { - path: 'development/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/meta.json' - }, - data: { - title: '开发与部署指南', - pages: [ - 'intro', - 'sealos', - 'docker', - 'configuration', - 'faq', - 'modelConfig', - 'upgrading', - 'openapi', - 'custom-models', - 'proxy', - 'migration', - 'design' - ], - description: 'FastGPT 开发与部署指南', - icon: '🔧' - } - }, - { - info: { - path: 'shopping_cart/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/shopping_cart/meta.json' - }, - data: { title: '收费说明' } - }, - { - info: { - path: 'use-cases/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/use-cases/meta.json' - }, - data: { title: '使用案例', description: '有关 FastGPT 其他实践案例的更多信息' } - }, - { - info: { - path: 'guide/DialogBoxes/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/DialogBoxes/meta.json' - }, - data: { - title: '对话框', - description: '对话框组件,支持多种交互方式,提升用户在应用中的交互体验。' - } - }, - { - info: { - path: 'guide/course/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/course/meta.json' - }, - data: { title: '基础教程', description: 'FastGPT 基础教程' } - }, - { - info: { - path: 'guide/dashboard/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/dashboard/meta.json' - }, - data: { title: '工作台', description: 'FastGPT 工作台及工作流节点的使用说明' } - }, - { - info: { - path: 'guide/knowledge_base/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/knowledge_base/meta.json' - }, - data: { - title: '知识库', - description: '知识库的基础原理、搜索方案、Web站点同步和外部文件知识库的使用方法。' - } - }, - { - info: { - path: 'guide/plugins/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/plugins/meta.json' - }, - data: { title: '系统插件', description: '介绍如何使用和提交系统插件,以及各插件的填写说明' } - }, - { - info: { - path: 'guide/team_permissions/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/team_permissions/meta.json' - }, - data: { - title: '团队与权限', - description: '团队管理、成员组与权限设置,确保团队协作中的数据安全和权限分配合理。' - } - }, - { - info: { - path: 'development/design/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/design/meta.json' - }, - data: { title: '设计方案' } - }, - { - info: { - path: 'development/custom-models/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/custom-models/meta.json' - }, - data: { title: '本地模型使用' } - }, - { - info: { - path: 'guide/admin/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/admin/meta.json' - }, - data: { title: '商业版后台', description: '商业版后台使用教程' } - }, - { - info: { - path: 'development/migration/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/migration/meta.json' - }, - data: { title: '迁移&备份' } - }, - { - info: { - path: 'development/modelConfig/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/modelConfig/meta.json' - }, - data: { title: '模型配置方案' } - }, - { - info: { - path: 'development/openapi/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/openapi/meta.json' - }, - data: { title: 'OpenAPI接口文档' } - }, - { - info: { - path: 'development/proxy/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/proxy/meta.json' - }, - data: { title: '代理方案', description: 'FastGPT 私有化部署代理方案' } - }, - { - info: { - path: 'use-cases/app-cases/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/use-cases/app-cases/meta.json' - }, - data: { title: '应用搭建案例', description: 'FastGPT 应用场景及功能实现的搭建案例' } - }, - { - info: { - path: 'use-cases/external-integration/meta.json', - absolutePath: - '/Users/dreamer/work/fast/content/docs/use-cases/external-integration/meta.json' - }, - data: { - title: '外部调用 FastGPT', - description: '外部应用通过多种方式调用 FastGPT 功能的教程' - } - }, - { - info: { - path: 'development/upgrading/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/development/upgrading/meta.json' - }, - data: { title: '版本更新/升级操作', description: 'FastGPT 版本更新介绍及升级操作' } - }, - { - info: { - path: 'guide/dashboard/workflow/meta.json', - absolutePath: '/Users/dreamer/work/fast/content/docs/guide/dashboard/workflow/meta.json' - }, - data: { title: '工作流节点', description: 'FastGPT 工作流节点设置和使用指南' } - } - ] -); diff --git a/document/.source/source.config.mjs b/document/.source/source.config.mjs deleted file mode 100644 index 30ec6e06b58d..000000000000 --- a/document/.source/source.config.mjs +++ /dev/null @@ -1,24 +0,0 @@ -// source.config.ts -import { - defineConfig, - defineDocs, - frontmatterSchema, - metaSchema -} from "fumadocs-mdx/config"; -var docs = defineDocs({ - docs: { - schema: frontmatterSchema - }, - meta: { - schema: metaSchema - } -}); -var source_config_default = defineConfig({ - mdxOptions: { - // MDX options - } -}); -export { - source_config_default as default, - docs -}; diff --git a/document/app/[lang]/(home)/layout.tsx b/document/app/[lang]/(home)/layout.tsx index cf2a94b944d3..4503a7a0041a 100644 --- a/document/app/[lang]/(home)/layout.tsx +++ b/document/app/[lang]/(home)/layout.tsx @@ -2,6 +2,14 @@ import type { ReactNode } from 'react'; import { HomeLayout } from 'fumadocs-ui/layouts/home'; import { baseOptions } from '@/app/layout.config'; import { t } from '@/lib/i18n'; +import Link from 'next/link'; +import { + NavbarMenu, + NavbarMenuContent, + NavbarMenuLink, + NavbarMenuTrigger +} from 'fumadocs-ui/layouts/home/navbar'; +import { Navbar } from 'fumadocs-ui/layouts/docs-client'; export default async function Layout({ params, @@ -13,13 +21,15 @@ export default async function Layout({ const lang = (await params).lang; return ( + FastGPT + FastGPT + + ) + }} + i18n > {children} diff --git a/document/app/[lang]/(home)/page.tsx b/document/app/[lang]/(home)/page.tsx index 139c34ee5cc2..24ff5bb806ff 100644 --- a/document/app/[lang]/(home)/page.tsx +++ b/document/app/[lang]/(home)/page.tsx @@ -6,7 +6,7 @@ export default function HomePage() {

Hello World

You can open{' '} - + /docs {' '} and see the documentation. diff --git a/document/app/[lang]/docs/[[...slug]]/page.tsx b/document/app/[lang]/docs/[[...slug]]/page.tsx index dad74af9e530..86ab54724f69 100644 --- a/document/app/[lang]/docs/[[...slug]]/page.tsx +++ b/document/app/[lang]/docs/[[...slug]]/page.tsx @@ -3,6 +3,7 @@ import { DocsPage, DocsBody, DocsDescription, DocsTitle } from 'fumadocs-ui/page import { notFound } from 'next/navigation'; import { createRelativeLink } from 'fumadocs-ui/mdx'; import { getMDXComponents } from '@/mdx-components'; +import { fetchLastModified } from '@/lib/github'; export default async function Page({ params @@ -14,6 +15,7 @@ export default async function Page({ if (!page || !page.data || !page.file) notFound(); const MDXContent = page.data.body; + const lastModified = await fetchLastModified(`content/docs/${page.file.path}`); return ( {page.data.title} {page.data.description} diff --git a/document/app/[lang]/docs/layout.tsx b/document/app/[lang]/docs/layout.tsx index a102ec6f5e48..4f73a6614d4d 100644 --- a/document/app/[lang]/docs/layout.tsx +++ b/document/app/[lang]/docs/layout.tsx @@ -1,7 +1,9 @@ -import type { ReactNode } from 'react'; +import { type ReactNode } from 'react'; import { source } from '@/lib/source'; -import { DocsLayout } from 'fumadocs-ui/layouts/docs'; +import { DocsLayout } from 'fumadocs-ui/layouts/notebook'; import { baseOptions } from '@/app/layout.config'; +import { t } from '@/lib/i18n'; +import '@/app/global.css'; export default async function Layout({ params, @@ -12,8 +14,58 @@ export default async function Layout({ }) { const { lang } = await params; + const tab = [ + { + title: t('common:introduction'), + url: '/docs/introduction', + className: 'nav-tabs' + }, + { + title: t('common:use-cases'), + url: '/docs/use-cases', + className: 'nav-tabs-link-active-color' + }, + { + title: t('common:api'), + url: '/docs/api', + className: 'nav-tabs-link-active-color' + }, + { + title: t('common:protocol'), + url: '/docs/protocol', + className: 'nav-tabs-link-active-color' + } + ]; + return ( - + + FastGPT + + ), + mode: 'top' + }} + // links={[ + // { + // type: "icon", + // icon: FastGPT, + // url: "https://oss.laf.run/otnvvf-imgs/fastgpt-feishu1.png", + // text: "飞书群", + // }, + // ]} + tree={source.pageTree[lang]} + searchToggle={{ + enabled: true + }} + sidebar={{ + tabs: tab, + collapsible: false + }} + tabMode="navbar" + > {children} ); diff --git a/document/app/[lang]/layout.tsx b/document/app/[lang]/layout.tsx index dd3f90f123d9..427fcb4b853d 100644 --- a/document/app/[lang]/layout.tsx +++ b/document/app/[lang]/layout.tsx @@ -3,6 +3,7 @@ import { RootProvider } from 'fumadocs-ui/provider'; import { Inter } from 'next/font/google'; import type { ReactNode } from 'react'; import type { Translations } from 'fumadocs-ui/i18n'; +import CustomSearchDialog from '@/components/CustomSearchDialog'; const inter = Inter({ subsets: ['latin'] @@ -62,6 +63,13 @@ export default async function Layout({ } }[lang] }} + search={{ + enabled: true, + SearchDialog: CustomSearchDialog + }} + theme={{ + enabled: true + }} > {children} diff --git a/document/app/api/search/route.ts b/document/app/api/search/route.ts index e696c334ef5a..4fadc43d144a 100644 --- a/document/app/api/search/route.ts +++ b/document/app/api/search/route.ts @@ -1,7 +1,7 @@ import { source } from '@/lib/source'; import { createFromSource } from 'fumadocs-core/search/server'; -// Force English as the search language export const { GET } = createFromSource(source, { + // https://docs.orama.com/open-source/supported-languages language: 'english' }); diff --git a/document/app/global.css b/document/app/global.css index 05d728dc3abd..0eefafa87f3e 100644 --- a/document/app/global.css +++ b/document/app/global.css @@ -1,9 +1,6 @@ @import 'tailwindcss'; @import 'fumadocs-ui/css/neutral.css'; @import 'fumadocs-ui/css/preset.css'; -@import 'tailwindcss'; -@import 'fumadocs-ui/css/neutral.css'; -@import 'fumadocs-ui/css/preset.css'; /* 在文件开头添加这些基础变量 */ :root { @@ -17,6 +14,7 @@ --yellow-50-hsl: 55, 92%, 95%; --yellow-500-hsl: 45, 93%, 47%; --blue-500-hsl: 217, 91%, 60%; + --fd-layout-width: 1400px; /* 文本颜色 */ --text-default: #374151; @@ -150,3 +148,39 @@ img { margin-bottom: 0.8rem; padding: 1rem 0; } + +#nd-subnav > div:nth-of-type(1) button:nth-of-type(1) { + box-shadow: 1px 1px 1px 1px #a9a0a0 !important; + background-color: none !important; + &:hover { + background-color: transparent !important; + cursor: pointer; + } +} +#nd-subnav > div:nth-of-type(1) { + border-bottom: 0.5px solid var(--gray-200) !important;; +} +#nd-subnav > div:nth-of-type(2) { + border-bottom: 0.5px solid var(--gray-200) !important; +} + +#nd-subnav > div:nth-of-type(2) a { + text-decoration: none; + color: inherit; + transition: color 0.2s ease; + background-color: transparent !important; + /* 先清除默认下划线 */ + &:hover { + text-decoration: underline; + text-decoration-color: gray; + text-decoration-thickness: 2px; /* 下划线粗细 */ + text-underline-offset: 10px; /* 下划线与文字距离 */ + } + &:active { + text-decoration: underline; + text-decoration-color: blue; + text-decoration-thickness: 2px; /* 下划线粗细 */ + text-underline-offset: 10px; /* 下划线与文字距离 */ + background-color: transparent !important; + } +} \ No newline at end of file diff --git a/document/app/layout.config.tsx b/document/app/layout.config.tsx index 999af6852fc0..b9d7109d2a31 100644 --- a/document/app/layout.config.tsx +++ b/document/app/layout.config.tsx @@ -10,15 +10,24 @@ import { i18n } from '@/lib/i18n'; */ export const baseOptions = (locale: string): BaseLayoutProps => { return { - i18n, - githubUrl: 'https://github.com/labring/FastGPT', + themeSwitch: { + enabled: true, + mode: 'light-dark' + }, nav: { title: ( - <> - FastGPT - FastGPT - +

+
+ FastGPT +
+
12321
+
) + }, + i18n, + githubUrl: 'https://github.com/labring/FastGPT/tree/main/document', + searchToggle: { + enabled: true } }; }; diff --git a/document/app/static.json/route.ts b/document/app/static.json/route.ts new file mode 100644 index 000000000000..cb02df869a2d --- /dev/null +++ b/document/app/static.json/route.ts @@ -0,0 +1,21 @@ +import { NextResponse } from 'next/server'; +import { type DocumentRecord } from 'fumadocs-core/search/algolia'; +import { source } from '@/lib/source'; + +export const revalidate = false; + +export function GET() { + const results: DocumentRecord[] = []; + + for (const page of source.getPages()) { + results.push({ + _id: page.url, + structured: page.data.structuredData, + url: page.url, + title: page.data.title, + description: page.data.description + }); + } + + return NextResponse.json(results); +} diff --git a/document/components/CustomSearchDialog.tsx b/document/components/CustomSearchDialog.tsx new file mode 100644 index 000000000000..cb41f594c6c2 --- /dev/null +++ b/document/components/CustomSearchDialog.tsx @@ -0,0 +1,49 @@ +'use client'; +// components/CustomSearchDialog.tsx +import { liteClient } from 'algoliasearch/lite'; +import { useDocsSearch } from 'fumadocs-core/search/client'; +import { + SearchDialog, + SearchDialogOverlay, + SearchDialogContent, + SearchDialogHeader, + SearchDialogIcon, + SearchDialogInput, + SearchDialogClose, + SearchDialogList, + type SharedProps +} from 'fumadocs-ui/components/dialog/search'; +import { useI18n } from 'fumadocs-ui/contexts/i18n'; + +if (!process.env.NEXT_PUBLIC_SEARCH_APPID || !process.env.NEXT_PUBLIC_SEARCH_APPKEY) { + throw new Error('NEXT_PUBLIC_SEARCH_APPID and NEXT_PUBLIC_SEARCH_APPKEY are not set'); +} + +const client = liteClient( + process.env.NEXT_PUBLIC_SEARCH_APPID, + process.env.NEXT_PUBLIC_SEARCH_APPKEY +); + +export default function CustomSearchDialog(props: SharedProps) { + const { locale } = useI18n(); + const { search, setSearch, query } = useDocsSearch({ + type: 'algolia', + client, + indexName: 'document', + locale + }); + + return ( + + + + + + + + + + + + ); +} diff --git a/document/components/ui/CustomHomeLayout.tsx b/document/components/ui/CustomHomeLayout.tsx new file mode 100644 index 000000000000..5be91e85ec3b --- /dev/null +++ b/document/components/ui/CustomHomeLayout.tsx @@ -0,0 +1,47 @@ +import { type HTMLAttributes } from 'react'; +import { HomeLayout, type HomeLayoutProps } from 'fumadocs-ui/layouts/home'; +import Link from 'next/link'; + +interface CustomHomeLayoutProps extends HomeLayoutProps { + // 可以在这里添加自定义的属性 +} + +export function CustomHomeLayout({ + children, + nav, + ...props +}: CustomHomeLayoutProps & HTMLAttributes) { + return ( + +
+ FastGPT + FastGPT +
+
+ + 使用说明 + + + 使用案例 + + + 协议 + + + API手册 + +
+ + ), + transparentMode: 'none' + }} + > + {children} +
+ ); +} diff --git a/document/content/docs/agreement/meta.json b/document/content/docs/agreement/meta.json deleted file mode 100644 index 5a25b85b320d..000000000000 --- a/document/content/docs/agreement/meta.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "title": "协议" -} - \ No newline at end of file diff --git a/document/content/docs/api/api1.mdx b/document/content/docs/api/api1.mdx new file mode 100644 index 000000000000..63a75425582e --- /dev/null +++ b/document/content/docs/api/api1.mdx @@ -0,0 +1,13 @@ +--- +title: Tabs +description: + A Tabs component built with Radix UI, with additional features such as + persistent and shared value. +preview: tabs +--- + + + Javascript is weird + Rust is fast + + diff --git a/document/content/docs/api/api2.mdx b/document/content/docs/api/api2.mdx new file mode 100644 index 000000000000..2c9d1b34558c --- /dev/null +++ b/document/content/docs/api/api2.mdx @@ -0,0 +1,9 @@ +--- +weight: 0 +title: 'API2' +description: 'FastGPT API手册' +icon: menu_book +lead: '' +draft: false +images: [] +--- diff --git a/document/content/docs/api/index.mdx b/document/content/docs/api/index.mdx new file mode 100644 index 000000000000..8f68d025a55d --- /dev/null +++ b/document/content/docs/api/index.mdx @@ -0,0 +1,9 @@ +--- +weight: 0 +title: 'API手册' +description: 'FastGPT API手册' +icon: menu_book +lead: '' +draft: false +images: [] +--- diff --git a/document/content/docs/api/meta.json b/document/content/docs/api/meta.json new file mode 100644 index 000000000000..b4bff82e9149 --- /dev/null +++ b/document/content/docs/api/meta.json @@ -0,0 +1,7 @@ +{ + "title": "API手册", + "description": "FastGPT API手册", + "root": true, + "pages": ["api1","api2"], + "order": 4 +} \ No newline at end of file diff --git a/document/content/docs/development/upgrading/meta.json b/document/content/docs/development/upgrading/meta.json deleted file mode 100644 index d151b023cb84..000000000000 --- a/document/content/docs/development/upgrading/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "版本更新/升级操作", - "description": "FastGPT 版本更新介绍及升级操作" -} - \ No newline at end of file diff --git a/document/content/docs/FAQ/app.mdx b/document/content/docs/introduction/FAQ/app.mdx similarity index 100% rename from document/content/docs/FAQ/app.mdx rename to document/content/docs/introduction/FAQ/app.mdx diff --git a/document/content/docs/FAQ/chat.mdx b/document/content/docs/introduction/FAQ/chat.mdx similarity index 100% rename from document/content/docs/FAQ/chat.mdx rename to document/content/docs/introduction/FAQ/chat.mdx diff --git a/document/content/docs/FAQ/dataset.mdx b/document/content/docs/introduction/FAQ/dataset.mdx similarity index 100% rename from document/content/docs/FAQ/dataset.mdx rename to document/content/docs/introduction/FAQ/dataset.mdx diff --git a/document/content/docs/FAQ/docker.mdx b/document/content/docs/introduction/FAQ/docker.mdx similarity index 79% rename from document/content/docs/FAQ/docker.mdx rename to document/content/docs/introduction/FAQ/docker.mdx index 67affad70a5e..62b6979eec96 100644 --- a/document/content/docs/FAQ/docker.mdx +++ b/document/content/docs/introduction/FAQ/docker.mdx @@ -11,4 +11,4 @@ target: /docs/development/docker/#faq import {Redirect} from '@/components/docs/Redirect' - \ No newline at end of file + \ No newline at end of file diff --git a/document/content/docs/FAQ/error.mdx b/document/content/docs/introduction/FAQ/error.mdx similarity index 100% rename from document/content/docs/FAQ/error.mdx rename to document/content/docs/introduction/FAQ/error.mdx diff --git a/document/content/docs/FAQ/external_channel_integration.mdx b/document/content/docs/introduction/FAQ/external_channel_integration.mdx similarity index 100% rename from document/content/docs/FAQ/external_channel_integration.mdx rename to document/content/docs/introduction/FAQ/external_channel_integration.mdx diff --git a/document/content/docs/FAQ/other.mdx b/document/content/docs/introduction/FAQ/other.mdx similarity index 100% rename from document/content/docs/FAQ/other.mdx rename to document/content/docs/introduction/FAQ/other.mdx diff --git a/document/content/docs/FAQ/points_consumption.mdx b/document/content/docs/introduction/FAQ/points_consumption.mdx similarity index 100% rename from document/content/docs/FAQ/points_consumption.mdx rename to document/content/docs/introduction/FAQ/points_consumption.mdx diff --git a/document/content/docs/FAQ/privateDeploy.mdx b/document/content/docs/introduction/FAQ/privateDeploy.mdx similarity index 81% rename from document/content/docs/FAQ/privateDeploy.mdx rename to document/content/docs/introduction/FAQ/privateDeploy.mdx index 93d0a01fb387..2f8d0d2ce249 100644 --- a/document/content/docs/FAQ/privateDeploy.mdx +++ b/document/content/docs/introduction/FAQ/privateDeploy.mdx @@ -11,4 +11,4 @@ target: /docs/development/faq/ import {Redirect} from '@/components/docs/Redirect' - \ No newline at end of file + \ No newline at end of file diff --git a/document/content/docs/community.mdx b/document/content/docs/introduction/community.mdx similarity index 100% rename from document/content/docs/community.mdx rename to document/content/docs/introduction/community.mdx diff --git a/document/content/docs/development/configuration.mdx b/document/content/docs/introduction/development/configuration.mdx similarity index 100% rename from document/content/docs/development/configuration.mdx rename to document/content/docs/introduction/development/configuration.mdx diff --git a/document/content/docs/development/custom-models/bge-rerank.mdx b/document/content/docs/introduction/development/custom-models/bge-rerank.mdx similarity index 100% rename from document/content/docs/development/custom-models/bge-rerank.mdx rename to document/content/docs/introduction/development/custom-models/bge-rerank.mdx diff --git a/document/content/docs/development/custom-models/chatglm2-m3e.mdx b/document/content/docs/introduction/development/custom-models/chatglm2-m3e.mdx similarity index 100% rename from document/content/docs/development/custom-models/chatglm2-m3e.mdx rename to document/content/docs/introduction/development/custom-models/chatglm2-m3e.mdx diff --git a/document/content/docs/development/custom-models/chatglm2.mdx b/document/content/docs/introduction/development/custom-models/chatglm2.mdx similarity index 100% rename from document/content/docs/development/custom-models/chatglm2.mdx rename to document/content/docs/introduction/development/custom-models/chatglm2.mdx diff --git a/document/content/docs/development/custom-models/m3e.mdx b/document/content/docs/introduction/development/custom-models/m3e.mdx similarity index 100% rename from document/content/docs/development/custom-models/m3e.mdx rename to document/content/docs/introduction/development/custom-models/m3e.mdx diff --git a/document/content/docs/development/custom-models/marker.mdx b/document/content/docs/introduction/development/custom-models/marker.mdx similarity index 100% rename from document/content/docs/development/custom-models/marker.mdx rename to document/content/docs/introduction/development/custom-models/marker.mdx diff --git a/document/content/docs/development/custom-models/meta.json b/document/content/docs/introduction/development/custom-models/meta.json similarity index 100% rename from document/content/docs/development/custom-models/meta.json rename to document/content/docs/introduction/development/custom-models/meta.json diff --git a/document/content/docs/development/custom-models/ollama.mdx b/document/content/docs/introduction/development/custom-models/ollama.mdx similarity index 100% rename from document/content/docs/development/custom-models/ollama.mdx rename to document/content/docs/introduction/development/custom-models/ollama.mdx diff --git a/document/content/docs/development/custom-models/xinference.mdx b/document/content/docs/introduction/development/custom-models/xinference.mdx similarity index 100% rename from document/content/docs/development/custom-models/xinference.mdx rename to document/content/docs/introduction/development/custom-models/xinference.mdx diff --git a/document/content/docs/development/design/dataset.mdx b/document/content/docs/introduction/development/design/dataset.mdx similarity index 100% rename from document/content/docs/development/design/dataset.mdx rename to document/content/docs/introduction/development/design/dataset.mdx diff --git a/document/content/docs/development/design/design_plugin.mdx b/document/content/docs/introduction/development/design/design_plugin.mdx similarity index 100% rename from document/content/docs/development/design/design_plugin.mdx rename to document/content/docs/introduction/development/design/design_plugin.mdx diff --git a/document/content/docs/development/design/meta.json b/document/content/docs/introduction/development/design/meta.json similarity index 100% rename from document/content/docs/development/design/meta.json rename to document/content/docs/introduction/development/design/meta.json diff --git a/document/content/docs/development/docker.mdx b/document/content/docs/introduction/development/docker.mdx similarity index 100% rename from document/content/docs/development/docker.mdx rename to document/content/docs/introduction/development/docker.mdx diff --git a/document/content/docs/development/faq.mdx b/document/content/docs/introduction/development/faq.mdx similarity index 100% rename from document/content/docs/development/faq.mdx rename to document/content/docs/introduction/development/faq.mdx diff --git a/document/content/docs/development/intro.mdx b/document/content/docs/introduction/development/intro.mdx similarity index 100% rename from document/content/docs/development/intro.mdx rename to document/content/docs/introduction/development/intro.mdx diff --git a/document/content/docs/development/meta.json b/document/content/docs/introduction/development/meta.json similarity index 100% rename from document/content/docs/development/meta.json rename to document/content/docs/introduction/development/meta.json diff --git a/document/content/docs/development/migration/docker_db.mdx b/document/content/docs/introduction/development/migration/docker_db.mdx similarity index 100% rename from document/content/docs/development/migration/docker_db.mdx rename to document/content/docs/introduction/development/migration/docker_db.mdx diff --git a/document/content/docs/development/migration/docker_mongo.mdx b/document/content/docs/introduction/development/migration/docker_mongo.mdx similarity index 100% rename from document/content/docs/development/migration/docker_mongo.mdx rename to document/content/docs/introduction/development/migration/docker_mongo.mdx diff --git a/document/content/docs/development/migration/meta.json b/document/content/docs/introduction/development/migration/meta.json similarity index 100% rename from document/content/docs/development/migration/meta.json rename to document/content/docs/introduction/development/migration/meta.json diff --git a/document/content/docs/development/modelConfig/ai-proxy.mdx b/document/content/docs/introduction/development/modelConfig/ai-proxy.mdx similarity index 100% rename from document/content/docs/development/modelConfig/ai-proxy.mdx rename to document/content/docs/introduction/development/modelConfig/ai-proxy.mdx diff --git a/document/content/docs/development/modelConfig/intro.mdx b/document/content/docs/introduction/development/modelConfig/intro.mdx similarity index 100% rename from document/content/docs/development/modelConfig/intro.mdx rename to document/content/docs/introduction/development/modelConfig/intro.mdx diff --git a/document/content/docs/development/modelConfig/meta.json b/document/content/docs/introduction/development/modelConfig/meta.json similarity index 100% rename from document/content/docs/development/modelConfig/meta.json rename to document/content/docs/introduction/development/modelConfig/meta.json diff --git a/document/content/docs/development/modelConfig/one-api.mdx b/document/content/docs/introduction/development/modelConfig/one-api.mdx similarity index 100% rename from document/content/docs/development/modelConfig/one-api.mdx rename to document/content/docs/introduction/development/modelConfig/one-api.mdx diff --git a/document/content/docs/development/modelConfig/ppio.mdx b/document/content/docs/introduction/development/modelConfig/ppio.mdx similarity index 100% rename from document/content/docs/development/modelConfig/ppio.mdx rename to document/content/docs/introduction/development/modelConfig/ppio.mdx diff --git a/document/content/docs/development/modelConfig/siliconCloud.mdx b/document/content/docs/introduction/development/modelConfig/siliconCloud.mdx similarity index 100% rename from document/content/docs/development/modelConfig/siliconCloud.mdx rename to document/content/docs/introduction/development/modelConfig/siliconCloud.mdx diff --git a/document/content/docs/development/openapi/chat.mdx b/document/content/docs/introduction/development/openapi/chat.mdx similarity index 100% rename from document/content/docs/development/openapi/chat.mdx rename to document/content/docs/introduction/development/openapi/chat.mdx diff --git a/document/content/docs/development/openapi/dataset.mdx b/document/content/docs/introduction/development/openapi/dataset.mdx similarity index 100% rename from document/content/docs/development/openapi/dataset.mdx rename to document/content/docs/introduction/development/openapi/dataset.mdx diff --git a/document/content/docs/development/openapi/intro.mdx b/document/content/docs/introduction/development/openapi/intro.mdx similarity index 100% rename from document/content/docs/development/openapi/intro.mdx rename to document/content/docs/introduction/development/openapi/intro.mdx diff --git a/document/content/docs/development/openapi/meta.json b/document/content/docs/introduction/development/openapi/meta.json similarity index 100% rename from document/content/docs/development/openapi/meta.json rename to document/content/docs/introduction/development/openapi/meta.json diff --git a/document/content/docs/development/openapi/share.mdx b/document/content/docs/introduction/development/openapi/share.mdx similarity index 100% rename from document/content/docs/development/openapi/share.mdx rename to document/content/docs/introduction/development/openapi/share.mdx diff --git a/document/content/docs/development/proxy/cloudflare.mdx b/document/content/docs/introduction/development/proxy/cloudflare.mdx similarity index 100% rename from document/content/docs/development/proxy/cloudflare.mdx rename to document/content/docs/introduction/development/proxy/cloudflare.mdx diff --git a/document/content/docs/development/proxy/http_proxy.mdx b/document/content/docs/introduction/development/proxy/http_proxy.mdx similarity index 100% rename from document/content/docs/development/proxy/http_proxy.mdx rename to document/content/docs/introduction/development/proxy/http_proxy.mdx diff --git a/document/content/docs/development/proxy/meta.json b/document/content/docs/introduction/development/proxy/meta.json similarity index 100% rename from document/content/docs/development/proxy/meta.json rename to document/content/docs/introduction/development/proxy/meta.json diff --git a/document/content/docs/development/proxy/nginx.mdx b/document/content/docs/introduction/development/proxy/nginx.mdx similarity index 100% rename from document/content/docs/development/proxy/nginx.mdx rename to document/content/docs/introduction/development/proxy/nginx.mdx diff --git a/document/content/docs/development/sealos.mdx b/document/content/docs/introduction/development/sealos.mdx similarity index 100% rename from document/content/docs/development/sealos.mdx rename to document/content/docs/introduction/development/sealos.mdx diff --git a/document/content/docs/development/upgrading/40.mdx b/document/content/docs/introduction/development/upgrading/40.mdx similarity index 100% rename from document/content/docs/development/upgrading/40.mdx rename to document/content/docs/introduction/development/upgrading/40.mdx diff --git a/document/content/docs/development/upgrading/41.mdx b/document/content/docs/introduction/development/upgrading/41.mdx similarity index 100% rename from document/content/docs/development/upgrading/41.mdx rename to document/content/docs/introduction/development/upgrading/41.mdx diff --git a/document/content/docs/development/upgrading/42.mdx b/document/content/docs/introduction/development/upgrading/42.mdx similarity index 100% rename from document/content/docs/development/upgrading/42.mdx rename to document/content/docs/introduction/development/upgrading/42.mdx diff --git a/document/content/docs/development/upgrading/421.mdx b/document/content/docs/introduction/development/upgrading/421.mdx similarity index 100% rename from document/content/docs/development/upgrading/421.mdx rename to document/content/docs/introduction/development/upgrading/421.mdx diff --git a/document/content/docs/development/upgrading/43.mdx b/document/content/docs/introduction/development/upgrading/43.mdx similarity index 100% rename from document/content/docs/development/upgrading/43.mdx rename to document/content/docs/introduction/development/upgrading/43.mdx diff --git a/document/content/docs/development/upgrading/44.mdx b/document/content/docs/introduction/development/upgrading/44.mdx similarity index 100% rename from document/content/docs/development/upgrading/44.mdx rename to document/content/docs/introduction/development/upgrading/44.mdx diff --git a/document/content/docs/development/upgrading/441.mdx b/document/content/docs/introduction/development/upgrading/441.mdx similarity index 100% rename from document/content/docs/development/upgrading/441.mdx rename to document/content/docs/introduction/development/upgrading/441.mdx diff --git a/document/content/docs/development/upgrading/442.mdx b/document/content/docs/introduction/development/upgrading/442.mdx similarity index 100% rename from document/content/docs/development/upgrading/442.mdx rename to document/content/docs/introduction/development/upgrading/442.mdx diff --git a/document/content/docs/development/upgrading/445.mdx b/document/content/docs/introduction/development/upgrading/445.mdx similarity index 100% rename from document/content/docs/development/upgrading/445.mdx rename to document/content/docs/introduction/development/upgrading/445.mdx diff --git a/document/content/docs/development/upgrading/446.mdx b/document/content/docs/introduction/development/upgrading/446.mdx similarity index 100% rename from document/content/docs/development/upgrading/446.mdx rename to document/content/docs/introduction/development/upgrading/446.mdx diff --git a/document/content/docs/development/upgrading/447.mdx b/document/content/docs/introduction/development/upgrading/447.mdx similarity index 100% rename from document/content/docs/development/upgrading/447.mdx rename to document/content/docs/introduction/development/upgrading/447.mdx diff --git a/document/content/docs/development/upgrading/45.mdx b/document/content/docs/introduction/development/upgrading/45.mdx similarity index 100% rename from document/content/docs/development/upgrading/45.mdx rename to document/content/docs/introduction/development/upgrading/45.mdx diff --git a/document/content/docs/development/upgrading/451.mdx b/document/content/docs/introduction/development/upgrading/451.mdx similarity index 100% rename from document/content/docs/development/upgrading/451.mdx rename to document/content/docs/introduction/development/upgrading/451.mdx diff --git a/document/content/docs/development/upgrading/452.mdx b/document/content/docs/introduction/development/upgrading/452.mdx similarity index 100% rename from document/content/docs/development/upgrading/452.mdx rename to document/content/docs/introduction/development/upgrading/452.mdx diff --git a/document/content/docs/development/upgrading/46.mdx b/document/content/docs/introduction/development/upgrading/46.mdx similarity index 100% rename from document/content/docs/development/upgrading/46.mdx rename to document/content/docs/introduction/development/upgrading/46.mdx diff --git a/document/content/docs/development/upgrading/461.mdx b/document/content/docs/introduction/development/upgrading/461.mdx similarity index 100% rename from document/content/docs/development/upgrading/461.mdx rename to document/content/docs/introduction/development/upgrading/461.mdx diff --git a/document/content/docs/development/upgrading/462.mdx b/document/content/docs/introduction/development/upgrading/462.mdx similarity index 100% rename from document/content/docs/development/upgrading/462.mdx rename to document/content/docs/introduction/development/upgrading/462.mdx diff --git a/document/content/docs/development/upgrading/463.mdx b/document/content/docs/introduction/development/upgrading/463.mdx similarity index 100% rename from document/content/docs/development/upgrading/463.mdx rename to document/content/docs/introduction/development/upgrading/463.mdx diff --git a/document/content/docs/development/upgrading/464.mdx b/document/content/docs/introduction/development/upgrading/464.mdx similarity index 100% rename from document/content/docs/development/upgrading/464.mdx rename to document/content/docs/introduction/development/upgrading/464.mdx diff --git a/document/content/docs/development/upgrading/465.mdx b/document/content/docs/introduction/development/upgrading/465.mdx similarity index 100% rename from document/content/docs/development/upgrading/465.mdx rename to document/content/docs/introduction/development/upgrading/465.mdx diff --git a/document/content/docs/development/upgrading/466.mdx b/document/content/docs/introduction/development/upgrading/466.mdx similarity index 100% rename from document/content/docs/development/upgrading/466.mdx rename to document/content/docs/introduction/development/upgrading/466.mdx diff --git a/document/content/docs/development/upgrading/467.mdx b/document/content/docs/introduction/development/upgrading/467.mdx similarity index 100% rename from document/content/docs/development/upgrading/467.mdx rename to document/content/docs/introduction/development/upgrading/467.mdx diff --git a/document/content/docs/development/upgrading/468.mdx b/document/content/docs/introduction/development/upgrading/468.mdx similarity index 100% rename from document/content/docs/development/upgrading/468.mdx rename to document/content/docs/introduction/development/upgrading/468.mdx diff --git a/document/content/docs/development/upgrading/469.mdx b/document/content/docs/introduction/development/upgrading/469.mdx similarity index 100% rename from document/content/docs/development/upgrading/469.mdx rename to document/content/docs/introduction/development/upgrading/469.mdx diff --git a/document/content/docs/development/upgrading/47.mdx b/document/content/docs/introduction/development/upgrading/47.mdx similarity index 100% rename from document/content/docs/development/upgrading/47.mdx rename to document/content/docs/introduction/development/upgrading/47.mdx diff --git a/document/content/docs/development/upgrading/471.mdx b/document/content/docs/introduction/development/upgrading/471.mdx similarity index 100% rename from document/content/docs/development/upgrading/471.mdx rename to document/content/docs/introduction/development/upgrading/471.mdx diff --git a/document/content/docs/development/upgrading/48.mdx b/document/content/docs/introduction/development/upgrading/48.mdx similarity index 100% rename from document/content/docs/development/upgrading/48.mdx rename to document/content/docs/introduction/development/upgrading/48.mdx diff --git a/document/content/docs/development/upgrading/481.mdx b/document/content/docs/introduction/development/upgrading/481.mdx similarity index 100% rename from document/content/docs/development/upgrading/481.mdx rename to document/content/docs/introduction/development/upgrading/481.mdx diff --git a/document/content/docs/development/upgrading/4810.mdx b/document/content/docs/introduction/development/upgrading/4810.mdx similarity index 100% rename from document/content/docs/development/upgrading/4810.mdx rename to document/content/docs/introduction/development/upgrading/4810.mdx diff --git a/document/content/docs/development/upgrading/4811.mdx b/document/content/docs/introduction/development/upgrading/4811.mdx similarity index 100% rename from document/content/docs/development/upgrading/4811.mdx rename to document/content/docs/introduction/development/upgrading/4811.mdx diff --git a/document/content/docs/development/upgrading/4812.mdx b/document/content/docs/introduction/development/upgrading/4812.mdx similarity index 100% rename from document/content/docs/development/upgrading/4812.mdx rename to document/content/docs/introduction/development/upgrading/4812.mdx diff --git a/document/content/docs/development/upgrading/4813.mdx b/document/content/docs/introduction/development/upgrading/4813.mdx similarity index 100% rename from document/content/docs/development/upgrading/4813.mdx rename to document/content/docs/introduction/development/upgrading/4813.mdx diff --git a/document/content/docs/development/upgrading/4814.mdx b/document/content/docs/introduction/development/upgrading/4814.mdx similarity index 100% rename from document/content/docs/development/upgrading/4814.mdx rename to document/content/docs/introduction/development/upgrading/4814.mdx diff --git a/document/content/docs/development/upgrading/4815.mdx b/document/content/docs/introduction/development/upgrading/4815.mdx similarity index 100% rename from document/content/docs/development/upgrading/4815.mdx rename to document/content/docs/introduction/development/upgrading/4815.mdx diff --git a/document/content/docs/development/upgrading/4816.mdx b/document/content/docs/introduction/development/upgrading/4816.mdx similarity index 100% rename from document/content/docs/development/upgrading/4816.mdx rename to document/content/docs/introduction/development/upgrading/4816.mdx diff --git a/document/content/docs/development/upgrading/4817.mdx b/document/content/docs/introduction/development/upgrading/4817.mdx similarity index 100% rename from document/content/docs/development/upgrading/4817.mdx rename to document/content/docs/introduction/development/upgrading/4817.mdx diff --git a/document/content/docs/development/upgrading/4818.mdx b/document/content/docs/introduction/development/upgrading/4818.mdx similarity index 100% rename from document/content/docs/development/upgrading/4818.mdx rename to document/content/docs/introduction/development/upgrading/4818.mdx diff --git a/document/content/docs/development/upgrading/4819.mdx b/document/content/docs/introduction/development/upgrading/4819.mdx similarity index 100% rename from document/content/docs/development/upgrading/4819.mdx rename to document/content/docs/introduction/development/upgrading/4819.mdx diff --git a/document/content/docs/development/upgrading/482.mdx b/document/content/docs/introduction/development/upgrading/482.mdx similarity index 100% rename from document/content/docs/development/upgrading/482.mdx rename to document/content/docs/introduction/development/upgrading/482.mdx diff --git a/document/content/docs/development/upgrading/4820.mdx b/document/content/docs/introduction/development/upgrading/4820.mdx similarity index 100% rename from document/content/docs/development/upgrading/4820.mdx rename to document/content/docs/introduction/development/upgrading/4820.mdx diff --git a/document/content/docs/development/upgrading/4821.mdx b/document/content/docs/introduction/development/upgrading/4821.mdx similarity index 100% rename from document/content/docs/development/upgrading/4821.mdx rename to document/content/docs/introduction/development/upgrading/4821.mdx diff --git a/document/content/docs/development/upgrading/4822.mdx b/document/content/docs/introduction/development/upgrading/4822.mdx similarity index 100% rename from document/content/docs/development/upgrading/4822.mdx rename to document/content/docs/introduction/development/upgrading/4822.mdx diff --git a/document/content/docs/development/upgrading/4823.mdx b/document/content/docs/introduction/development/upgrading/4823.mdx similarity index 100% rename from document/content/docs/development/upgrading/4823.mdx rename to document/content/docs/introduction/development/upgrading/4823.mdx diff --git a/document/content/docs/development/upgrading/483.mdx b/document/content/docs/introduction/development/upgrading/483.mdx similarity index 100% rename from document/content/docs/development/upgrading/483.mdx rename to document/content/docs/introduction/development/upgrading/483.mdx diff --git a/document/content/docs/development/upgrading/484.mdx b/document/content/docs/introduction/development/upgrading/484.mdx similarity index 100% rename from document/content/docs/development/upgrading/484.mdx rename to document/content/docs/introduction/development/upgrading/484.mdx diff --git a/document/content/docs/development/upgrading/485.mdx b/document/content/docs/introduction/development/upgrading/485.mdx similarity index 100% rename from document/content/docs/development/upgrading/485.mdx rename to document/content/docs/introduction/development/upgrading/485.mdx diff --git a/document/content/docs/development/upgrading/486.mdx b/document/content/docs/introduction/development/upgrading/486.mdx similarity index 100% rename from document/content/docs/development/upgrading/486.mdx rename to document/content/docs/introduction/development/upgrading/486.mdx diff --git a/document/content/docs/development/upgrading/487.mdx b/document/content/docs/introduction/development/upgrading/487.mdx similarity index 98% rename from document/content/docs/development/upgrading/487.mdx rename to document/content/docs/introduction/development/upgrading/487.mdx index 85856ffdaf01..81a08d73facf 100644 --- a/document/content/docs/development/upgrading/487.mdx +++ b/document/content/docs/introduction/development/upgrading/487.mdx @@ -5,7 +5,7 @@ icon: 'upgrade' draft: false toc: true weight: 817 ------- +--- ## 升级指南 ### 1. 做好数据库备份 diff --git a/document/content/docs/development/upgrading/488.mdx b/document/content/docs/introduction/development/upgrading/488.mdx similarity index 100% rename from document/content/docs/development/upgrading/488.mdx rename to document/content/docs/introduction/development/upgrading/488.mdx diff --git a/document/content/docs/development/upgrading/489.mdx b/document/content/docs/introduction/development/upgrading/489.mdx similarity index 100% rename from document/content/docs/development/upgrading/489.mdx rename to document/content/docs/introduction/development/upgrading/489.mdx diff --git a/document/content/docs/development/upgrading/490.mdx b/document/content/docs/introduction/development/upgrading/490.mdx similarity index 100% rename from document/content/docs/development/upgrading/490.mdx rename to document/content/docs/introduction/development/upgrading/490.mdx diff --git a/document/content/docs/development/upgrading/491.mdx b/document/content/docs/introduction/development/upgrading/491.mdx similarity index 100% rename from document/content/docs/development/upgrading/491.mdx rename to document/content/docs/introduction/development/upgrading/491.mdx diff --git a/document/content/docs/development/upgrading/4910.mdx b/document/content/docs/introduction/development/upgrading/4910.mdx similarity index 100% rename from document/content/docs/development/upgrading/4910.mdx rename to document/content/docs/introduction/development/upgrading/4910.mdx diff --git a/document/content/docs/development/upgrading/4911.mdx b/document/content/docs/introduction/development/upgrading/4911.mdx similarity index 100% rename from document/content/docs/development/upgrading/4911.mdx rename to document/content/docs/introduction/development/upgrading/4911.mdx diff --git a/document/content/docs/development/upgrading/4912.mdx b/document/content/docs/introduction/development/upgrading/4912.mdx similarity index 100% rename from document/content/docs/development/upgrading/4912.mdx rename to document/content/docs/introduction/development/upgrading/4912.mdx diff --git a/document/content/docs/development/upgrading/4913.mdx b/document/content/docs/introduction/development/upgrading/4913.mdx similarity index 100% rename from document/content/docs/development/upgrading/4913.mdx rename to document/content/docs/introduction/development/upgrading/4913.mdx diff --git a/document/content/docs/development/upgrading/4914.mdx b/document/content/docs/introduction/development/upgrading/4914.mdx similarity index 100% rename from document/content/docs/development/upgrading/4914.mdx rename to document/content/docs/introduction/development/upgrading/4914.mdx diff --git a/document/content/docs/development/upgrading/492.mdx b/document/content/docs/introduction/development/upgrading/492.mdx similarity index 100% rename from document/content/docs/development/upgrading/492.mdx rename to document/content/docs/introduction/development/upgrading/492.mdx diff --git a/document/content/docs/development/upgrading/493.mdx b/document/content/docs/introduction/development/upgrading/493.mdx similarity index 100% rename from document/content/docs/development/upgrading/493.mdx rename to document/content/docs/introduction/development/upgrading/493.mdx diff --git a/document/content/docs/development/upgrading/494.mdx b/document/content/docs/introduction/development/upgrading/494.mdx similarity index 100% rename from document/content/docs/development/upgrading/494.mdx rename to document/content/docs/introduction/development/upgrading/494.mdx diff --git a/document/content/docs/development/upgrading/495.mdx b/document/content/docs/introduction/development/upgrading/495.mdx similarity index 100% rename from document/content/docs/development/upgrading/495.mdx rename to document/content/docs/introduction/development/upgrading/495.mdx diff --git a/document/content/docs/development/upgrading/496.mdx b/document/content/docs/introduction/development/upgrading/496.mdx similarity index 100% rename from document/content/docs/development/upgrading/496.mdx rename to document/content/docs/introduction/development/upgrading/496.mdx diff --git a/document/content/docs/development/upgrading/497.mdx b/document/content/docs/introduction/development/upgrading/497.mdx similarity index 100% rename from document/content/docs/development/upgrading/497.mdx rename to document/content/docs/introduction/development/upgrading/497.mdx diff --git a/document/content/docs/development/upgrading/498.mdx b/document/content/docs/introduction/development/upgrading/498.mdx similarity index 100% rename from document/content/docs/development/upgrading/498.mdx rename to document/content/docs/introduction/development/upgrading/498.mdx diff --git a/document/content/docs/development/upgrading/499.mdx b/document/content/docs/introduction/development/upgrading/499.mdx similarity index 100% rename from document/content/docs/development/upgrading/499.mdx rename to document/content/docs/introduction/development/upgrading/499.mdx diff --git a/document/content/docs/development/upgrading/intro.mdx b/document/content/docs/introduction/development/upgrading/intro.mdx similarity index 100% rename from document/content/docs/development/upgrading/intro.mdx rename to document/content/docs/introduction/development/upgrading/intro.mdx diff --git a/document/content/docs/introduction/development/upgrading/meta.json b/document/content/docs/introduction/development/upgrading/meta.json new file mode 100644 index 000000000000..a8f5d563491d --- /dev/null +++ b/document/content/docs/introduction/development/upgrading/meta.json @@ -0,0 +1,6 @@ +{ + "title": "版本更新/升级操作", + "description": "FastGPT 版本更新介绍及升级操作", + "pages": ["4914","z...a"] +} + \ No newline at end of file diff --git a/document/content/docs/guide/DialogBoxes/htmlRendering.mdx b/document/content/docs/introduction/guide/DialogBoxes/htmlRendering.mdx similarity index 100% rename from document/content/docs/guide/DialogBoxes/htmlRendering.mdx rename to document/content/docs/introduction/guide/DialogBoxes/htmlRendering.mdx diff --git a/document/content/docs/guide/DialogBoxes/meta.json b/document/content/docs/introduction/guide/DialogBoxes/meta.json similarity index 100% rename from document/content/docs/guide/DialogBoxes/meta.json rename to document/content/docs/introduction/guide/DialogBoxes/meta.json diff --git a/document/content/docs/guide/DialogBoxes/quoteList.mdx b/document/content/docs/introduction/guide/DialogBoxes/quoteList.mdx similarity index 100% rename from document/content/docs/guide/DialogBoxes/quoteList.mdx rename to document/content/docs/introduction/guide/DialogBoxes/quoteList.mdx diff --git a/document/content/docs/guide/admin/meta.json b/document/content/docs/introduction/guide/admin/meta.json similarity index 100% rename from document/content/docs/guide/admin/meta.json rename to document/content/docs/introduction/guide/admin/meta.json diff --git a/document/content/docs/guide/admin/sso.mdx b/document/content/docs/introduction/guide/admin/sso.mdx similarity index 100% rename from document/content/docs/guide/admin/sso.mdx rename to document/content/docs/introduction/guide/admin/sso.mdx diff --git a/document/content/docs/guide/admin/teamMode.mdx b/document/content/docs/introduction/guide/admin/teamMode.mdx similarity index 100% rename from document/content/docs/guide/admin/teamMode.mdx rename to document/content/docs/introduction/guide/admin/teamMode.mdx diff --git a/document/content/docs/guide/course/ai_settings.mdx b/document/content/docs/introduction/guide/course/ai_settings.mdx similarity index 100% rename from document/content/docs/guide/course/ai_settings.mdx rename to document/content/docs/introduction/guide/course/ai_settings.mdx diff --git a/document/content/docs/guide/course/chat_input_guide.mdx b/document/content/docs/introduction/guide/course/chat_input_guide.mdx similarity index 100% rename from document/content/docs/guide/course/chat_input_guide.mdx rename to document/content/docs/introduction/guide/course/chat_input_guide.mdx diff --git a/document/content/docs/guide/course/collection_tags.mdx b/document/content/docs/introduction/guide/course/collection_tags.mdx similarity index 100% rename from document/content/docs/guide/course/collection_tags.mdx rename to document/content/docs/introduction/guide/course/collection_tags.mdx diff --git a/document/content/docs/guide/course/fileInput.mdx b/document/content/docs/introduction/guide/course/fileInput.mdx similarity index 100% rename from document/content/docs/guide/course/fileInput.mdx rename to document/content/docs/introduction/guide/course/fileInput.mdx diff --git a/document/content/docs/guide/course/meta.json b/document/content/docs/introduction/guide/course/meta.json similarity index 100% rename from document/content/docs/guide/course/meta.json rename to document/content/docs/introduction/guide/course/meta.json diff --git a/document/content/docs/guide/course/quick-start.mdx b/document/content/docs/introduction/guide/course/quick-start.mdx similarity index 100% rename from document/content/docs/guide/course/quick-start.mdx rename to document/content/docs/introduction/guide/course/quick-start.mdx diff --git a/document/content/docs/guide/dashboard/basic-mode.mdx b/document/content/docs/introduction/guide/dashboard/basic-mode.mdx similarity index 96% rename from document/content/docs/guide/dashboard/basic-mode.mdx rename to document/content/docs/introduction/guide/dashboard/basic-mode.mdx index bea21ea4c00e..207190a36c37 100644 --- a/document/content/docs/guide/dashboard/basic-mode.mdx +++ b/document/content/docs/introduction/guide/dashboard/basic-mode.mdx @@ -5,4 +5,5 @@ description: '快速了解 FastGPT 工作台的简易模式' icon: 'speed' draft: false images: [] ---- \ No newline at end of file +--- + diff --git a/document/content/docs/guide/dashboard/gapier.mdx b/document/content/docs/introduction/guide/dashboard/gapier.mdx similarity index 100% rename from document/content/docs/guide/dashboard/gapier.mdx rename to document/content/docs/introduction/guide/dashboard/gapier.mdx diff --git a/document/content/docs/guide/dashboard/intro.mdx b/document/content/docs/introduction/guide/dashboard/intro.mdx similarity index 100% rename from document/content/docs/guide/dashboard/intro.mdx rename to document/content/docs/introduction/guide/dashboard/intro.mdx diff --git a/document/content/docs/guide/dashboard/mcp_server.mdx b/document/content/docs/introduction/guide/dashboard/mcp_server.mdx similarity index 100% rename from document/content/docs/guide/dashboard/mcp_server.mdx rename to document/content/docs/introduction/guide/dashboard/mcp_server.mdx diff --git a/document/content/docs/guide/dashboard/mcp_tools.mdx b/document/content/docs/introduction/guide/dashboard/mcp_tools.mdx similarity index 100% rename from document/content/docs/guide/dashboard/mcp_tools.mdx rename to document/content/docs/introduction/guide/dashboard/mcp_tools.mdx diff --git a/document/content/docs/guide/dashboard/meta.json b/document/content/docs/introduction/guide/dashboard/meta.json similarity index 100% rename from document/content/docs/guide/dashboard/meta.json rename to document/content/docs/introduction/guide/dashboard/meta.json diff --git a/document/content/docs/guide/dashboard/workflow/ai_chat.mdx b/document/content/docs/introduction/guide/dashboard/workflow/ai_chat.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/ai_chat.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/ai_chat.mdx diff --git a/document/content/docs/guide/dashboard/workflow/content_extract.mdx b/document/content/docs/introduction/guide/dashboard/workflow/content_extract.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/content_extract.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/content_extract.mdx diff --git a/document/content/docs/guide/dashboard/workflow/coreferenceResolution.mdx b/document/content/docs/introduction/guide/dashboard/workflow/coreferenceResolution.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/coreferenceResolution.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/coreferenceResolution.mdx diff --git a/document/content/docs/guide/dashboard/workflow/custom_feedback.mdx b/document/content/docs/introduction/guide/dashboard/workflow/custom_feedback.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/custom_feedback.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/custom_feedback.mdx diff --git a/document/content/docs/guide/dashboard/workflow/dataset_search.mdx b/document/content/docs/introduction/guide/dashboard/workflow/dataset_search.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/dataset_search.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/dataset_search.mdx diff --git a/document/content/docs/guide/dashboard/workflow/document_parsing.mdx b/document/content/docs/introduction/guide/dashboard/workflow/document_parsing.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/document_parsing.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/document_parsing.mdx diff --git a/document/content/docs/guide/dashboard/workflow/form_input.mdx b/document/content/docs/introduction/guide/dashboard/workflow/form_input.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/form_input.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/form_input.mdx diff --git a/document/content/docs/guide/dashboard/workflow/http.mdx b/document/content/docs/introduction/guide/dashboard/workflow/http.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/http.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/http.mdx diff --git a/document/content/docs/guide/dashboard/workflow/knowledge_base_search_merge.mdx b/document/content/docs/introduction/guide/dashboard/workflow/knowledge_base_search_merge.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/knowledge_base_search_merge.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/knowledge_base_search_merge.mdx diff --git a/document/content/docs/guide/dashboard/workflow/laf.mdx b/document/content/docs/introduction/guide/dashboard/workflow/laf.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/laf.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/laf.mdx diff --git a/document/content/docs/guide/dashboard/workflow/loop.mdx b/document/content/docs/introduction/guide/dashboard/workflow/loop.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/loop.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/loop.mdx diff --git a/document/content/docs/guide/dashboard/workflow/meta.json b/document/content/docs/introduction/guide/dashboard/workflow/meta.json similarity index 100% rename from document/content/docs/guide/dashboard/workflow/meta.json rename to document/content/docs/introduction/guide/dashboard/workflow/meta.json diff --git a/document/content/docs/guide/dashboard/workflow/question_classify.mdx b/document/content/docs/introduction/guide/dashboard/workflow/question_classify.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/question_classify.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/question_classify.mdx diff --git a/document/content/docs/guide/dashboard/workflow/reply.mdx b/document/content/docs/introduction/guide/dashboard/workflow/reply.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/reply.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/reply.mdx diff --git a/document/content/docs/guide/dashboard/workflow/sandbox.mdx b/document/content/docs/introduction/guide/dashboard/workflow/sandbox.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/sandbox.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/sandbox.mdx diff --git a/document/content/docs/guide/dashboard/workflow/text_editor.mdx b/document/content/docs/introduction/guide/dashboard/workflow/text_editor.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/text_editor.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/text_editor.mdx diff --git a/document/content/docs/guide/dashboard/workflow/tfswitch.mdx b/document/content/docs/introduction/guide/dashboard/workflow/tfswitch.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/tfswitch.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/tfswitch.mdx diff --git a/document/content/docs/guide/dashboard/workflow/tool.mdx b/document/content/docs/introduction/guide/dashboard/workflow/tool.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/tool.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/tool.mdx diff --git a/document/content/docs/guide/dashboard/workflow/user-selection.mdx b/document/content/docs/introduction/guide/dashboard/workflow/user-selection.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/user-selection.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/user-selection.mdx diff --git a/document/content/docs/guide/dashboard/workflow/variable_update.mdx b/document/content/docs/introduction/guide/dashboard/workflow/variable_update.mdx similarity index 100% rename from document/content/docs/guide/dashboard/workflow/variable_update.mdx rename to document/content/docs/introduction/guide/dashboard/workflow/variable_update.mdx diff --git a/document/content/docs/guide/knowledge_base/RAG.mdx b/document/content/docs/introduction/guide/knowledge_base/RAG.mdx similarity index 100% rename from document/content/docs/guide/knowledge_base/RAG.mdx rename to document/content/docs/introduction/guide/knowledge_base/RAG.mdx diff --git a/document/content/docs/guide/knowledge_base/api_dataset.mdx b/document/content/docs/introduction/guide/knowledge_base/api_dataset.mdx similarity index 100% rename from document/content/docs/guide/knowledge_base/api_dataset.mdx rename to document/content/docs/introduction/guide/knowledge_base/api_dataset.mdx diff --git a/document/content/docs/guide/knowledge_base/dataset_engine.mdx b/document/content/docs/introduction/guide/knowledge_base/dataset_engine.mdx similarity index 100% rename from document/content/docs/guide/knowledge_base/dataset_engine.mdx rename to document/content/docs/introduction/guide/knowledge_base/dataset_engine.mdx diff --git a/document/content/docs/guide/knowledge_base/externalFile.mdx b/document/content/docs/introduction/guide/knowledge_base/externalFile.mdx similarity index 100% rename from document/content/docs/guide/knowledge_base/externalFile.mdx rename to document/content/docs/introduction/guide/knowledge_base/externalFile.mdx diff --git a/document/content/docs/guide/knowledge_base/lark_dataset.mdx b/document/content/docs/introduction/guide/knowledge_base/lark_dataset.mdx similarity index 100% rename from document/content/docs/guide/knowledge_base/lark_dataset.mdx rename to document/content/docs/introduction/guide/knowledge_base/lark_dataset.mdx diff --git a/document/content/docs/guide/knowledge_base/meta.json b/document/content/docs/introduction/guide/knowledge_base/meta.json similarity index 100% rename from document/content/docs/guide/knowledge_base/meta.json rename to document/content/docs/introduction/guide/knowledge_base/meta.json diff --git a/document/content/docs/guide/knowledge_base/template.mdx b/document/content/docs/introduction/guide/knowledge_base/template.mdx similarity index 100% rename from document/content/docs/guide/knowledge_base/template.mdx rename to document/content/docs/introduction/guide/knowledge_base/template.mdx diff --git a/document/content/docs/guide/knowledge_base/third_dataset.mdx b/document/content/docs/introduction/guide/knowledge_base/third_dataset.mdx similarity index 100% rename from document/content/docs/guide/knowledge_base/third_dataset.mdx rename to document/content/docs/introduction/guide/knowledge_base/third_dataset.mdx diff --git a/document/content/docs/guide/knowledge_base/websync.mdx b/document/content/docs/introduction/guide/knowledge_base/websync.mdx similarity index 100% rename from document/content/docs/guide/knowledge_base/websync.mdx rename to document/content/docs/introduction/guide/knowledge_base/websync.mdx diff --git a/document/content/docs/guide/knowledge_base/yuque_dataset.mdx b/document/content/docs/introduction/guide/knowledge_base/yuque_dataset.mdx similarity index 100% rename from document/content/docs/guide/knowledge_base/yuque_dataset.mdx rename to document/content/docs/introduction/guide/knowledge_base/yuque_dataset.mdx diff --git a/document/content/docs/guide/meta.json b/document/content/docs/introduction/guide/meta.json similarity index 100% rename from document/content/docs/guide/meta.json rename to document/content/docs/introduction/guide/meta.json diff --git a/document/content/docs/guide/plugins/bing_search_plugin.mdx b/document/content/docs/introduction/guide/plugins/bing_search_plugin.mdx similarity index 100% rename from document/content/docs/guide/plugins/bing_search_plugin.mdx rename to document/content/docs/introduction/guide/plugins/bing_search_plugin.mdx diff --git a/document/content/docs/introduction/guide/plugins/dev_system_tool.mdx b/document/content/docs/introduction/guide/plugins/dev_system_tool.mdx new file mode 100644 index 000000000000..3dadb6b0a80d --- /dev/null +++ b/document/content/docs/introduction/guide/plugins/dev_system_tool.mdx @@ -0,0 +1,200 @@ +--- +title: "如何开发系统工具" +description: "FastGPT 系统工具开发指南" +icon: "home_repair_service" +draft: false +toc: true +weight: 302 +--- + +## 介绍 + +FastGPT 系统工具项目从 4.10.0 版本后移动到独立的`fastgpt-plugin`项目中,采用纯代码的模式进行工具编写。你可以在`fastgpt-plugin`项目中进行独立开发和调试好插件后,直接向 FastGPT 官方提交 PR 即可,无需运行 FastGPT 主服务。 + +## 概念 + +- 工具(Tool):最小的运行单元,每个工具都有唯一 ID 和特定的输入和输出。 +- 工具集(Toolset):工具的集合,可以包含多个工具。 + +在`fastgpt-plugin`中,你可以每次创建一个工具/工具集,每次提交时,仅接收一个工具/工具集。如需开发多个,可以创建多个 PR 进行提交。 + +## 1. 准备工作 + +- Fork[fastgpt-plugin 项目](https://github.com/labring/fastgpt-plugin) +- 安装[Bun](https://bun.sh/) +- 本地拉取项目进行 Dev 开发。 + - bun install + - bun run dev + +## 2. 初始化一个新的工具/工具集 + +### 2.1 执行创建命令 + +```bash +bun run new:tool +``` + +依据提示分别选择创建工具/工具集,以及目录名(小驼峰命名)。 + +执行完后,系统会在 `packages/tool/packages/[your-tool-name]`下生成一个工具/工具集的目录。 + +系统工具 (Tool) 文件结构如下: + +```plaintext +src // 源代码,处理逻辑 +└── index.ts +test // 测试样例 +└── index.test.ts +config.ts // 配置,配置工具的名称、描述、类型、图标等 +index.ts // 入口,不要改这个文件 +logo.svg // Logo,替换成你的工具的 Logo +package.json // npm 包 +``` + +工具集(toolset) 的文件结构如下: + +```plaintext +children +└── tool // 这个里面的结构就和上面的 tool 基本一致 +config.ts +index.ts +logo.svg +package.json +``` + +### 2.2 修改 config.ts + +- **name** 和 **description** 字段为中文和英文两种语言 +- **courseUrl** 密钥获取链接,或官网链接。 +- **author** 开发者名 +- **type** 为枚举类型,目前有: + - tools: 工具 + - search: 搜索 + - multimodal: 多模态 + - communication: 通讯 + - other: 其他 +- **versionList** (工具中配置)用于版本管理,是一个列表,其中的元素格式: + - value:版本号,建议使用 semver + - description: 描述 + - inputs 入参 + - outputs 返回值 +- **children**:(工具集 toolset 配置),需要将 tool import 后手动写入。 + +对于 ToolSet 下的 tool 来说,无需填写 `type`、`courseUrl`、`author`,这几个字段会继承 ToolSet 的配置。 + +#### inputs 参数格式 + +一般格式: + +```ts +{ + key: '本工具内唯一的 key,和 src/index.ts 中的 InputType 定义相同', + label: '前端显示的 label', + renderTypeList: [FlowNodeInputTypeEnum.input, FlowNodeInputTypeEnum.reference], // 前端输入框的类型 + valueType: WorkflowIOValueTypeEnum.string, // 数据类型 + toolDescription: '工具调用时用到的描述' // 如果需要设置成工具调用参数,需要设置这个字段 +} +``` + +有一个特殊的 key `'system_input_config'`,其用于配置工具的`激活信息`,通常包含`密钥`、`Endpoint`、`Port`等。 + +配置中`inputType=secret`的数据,将会通过对称加密的方式保存,以保证安全性。 + +**参考 dalle3**: + +``` +"inputs": [ + { + key: 'system_input_config', // 必须为这个值 + label: '', // 为空即可 + inputList: [ + { + key: 'url', + label: 'Dalle3 接口基础地址', + description: '例如:https://api.openai.com', + required: true, + inputType: 'input' + }, + { + key: 'authorization', + label: '接口凭证(不需要 Bearer)', + description: 'sk-xxxx', + required: true, + inputType: 'secret' + } + ], + renderTypeList: [FlowNodeInputTypeEnum.hidden], // 必须为这个值 + valueType: WorkflowIOValueTypeEnum.object // 必须为这个值 + }, +.... +] +``` + +#### outputs 参数格式 +``` +{ + key: 'link', // 唯一键值对 + valueType: WorkflowIOValueTypeEnum.string, // 具体可以看这个 Enum 的类型定义 + label: '图片访问链接', // 名字 + description: '图片访问链接' // 描述,可选 +} +``` + +## 2. 编写处理逻辑 + +在 `[your-tool-name]/src/index.ts` 为入口编写处理逻辑,需要注意: + +1. 使用 zod 进行类型定义,导出为 InputType 和 OutputType 两个 Schema。 +2. 入口函数为 `tool`,可以定义其他的函数。 + +```ts +import { format } from 'date-fns'; +import { z } from 'zod'; + +export const InputType = z.object({ + formatStr: z.string().optional() +}); + +export const OutputType = z.object({ + time: z.string() +}); + +export async function tool(props: z.infer): Promise> { + const formatStr = props.formatStr || 'yyyy-MM-dd HH:mm:ss'; + + return { + time: format(new Date(), formatStr) + }; +} +``` + +上述例子给出了一个传入 formatStr (格式化字符串)并且返回当前时间的简单样例,如需安装包,可以在`/packages/tools/packages/[your-tool-name]`路径下,使用`bun install PACKAGE` 进行安装。 + +## 3. 调试 + +### 单测 + +在 `test/index.test.ts` 中编写测试样例,使用 `bun run test index.test.ts完整路径` 即可运行测试。 + +### 从 OpenAPI 文件进行测试 + +浏览器打开`localhost:3000/openapi`可进入`fastgpt-plugin`的 OpenAPI 页面,进行 API 调试。 + +![](/imgs/plugin-openapi.png) + +可以先通过`/tool/list`接口,获取工具列表,找到需要调试的工具的`toolId`。紧接着,通过`/tool/run`来运行工具获取实际结果。 + +![](/imgs/plugin-openapi2.png) + +### 从 FastGPT 主服务进行测试 + +如果本地运行有`FastGPT`主服务,则可以直接添加对应的工具进行测试。 + +### 可视化调试(TODO) + +## 4. 提交工具至官方目录 + +完毕上述所有内容后,向官方仓库 `https://github.com/labring/fastgpt-plugin` 提交 PR。官方人员审核通过后即可收录为 FastGPT 的官方插件。 + +如无需官方收录,可自行对该项目进行 Docker 打包,并替换官方镜像即可。 + diff --git a/document/content/docs/guide/plugins/doc2x_plugin_guide.mdx b/document/content/docs/introduction/guide/plugins/doc2x_plugin_guide.mdx similarity index 100% rename from document/content/docs/guide/plugins/doc2x_plugin_guide.mdx rename to document/content/docs/introduction/guide/plugins/doc2x_plugin_guide.mdx diff --git a/document/content/docs/guide/plugins/google_search_plugin_guide.mdx b/document/content/docs/introduction/guide/plugins/google_search_plugin_guide.mdx similarity index 100% rename from document/content/docs/guide/plugins/google_search_plugin_guide.mdx rename to document/content/docs/introduction/guide/plugins/google_search_plugin_guide.mdx diff --git a/document/content/docs/guide/plugins/how_to_submit_system_plugin.mdx b/document/content/docs/introduction/guide/plugins/how_to_submit_system_plugin.mdx similarity index 100% rename from document/content/docs/guide/plugins/how_to_submit_system_plugin.mdx rename to document/content/docs/introduction/guide/plugins/how_to_submit_system_plugin.mdx diff --git a/document/content/docs/guide/plugins/meta.json b/document/content/docs/introduction/guide/plugins/meta.json similarity index 100% rename from document/content/docs/guide/plugins/meta.json rename to document/content/docs/introduction/guide/plugins/meta.json diff --git a/document/content/docs/guide/plugins/searxng_plugin_guide.mdx b/document/content/docs/introduction/guide/plugins/searxng_plugin_guide.mdx similarity index 100% rename from document/content/docs/guide/plugins/searxng_plugin_guide.mdx rename to document/content/docs/introduction/guide/plugins/searxng_plugin_guide.mdx diff --git a/document/content/docs/guide/team_permissions/invitation_link.mdx b/document/content/docs/introduction/guide/team_permissions/invitation_link.mdx similarity index 100% rename from document/content/docs/guide/team_permissions/invitation_link.mdx rename to document/content/docs/introduction/guide/team_permissions/invitation_link.mdx diff --git a/document/content/docs/guide/team_permissions/meta.json b/document/content/docs/introduction/guide/team_permissions/meta.json similarity index 100% rename from document/content/docs/guide/team_permissions/meta.json rename to document/content/docs/introduction/guide/team_permissions/meta.json diff --git a/document/content/docs/guide/team_permissions/team_roles_permissions.mdx b/document/content/docs/introduction/guide/team_permissions/team_roles_permissions.mdx similarity index 100% rename from document/content/docs/guide/team_permissions/team_roles_permissions.mdx rename to document/content/docs/introduction/guide/team_permissions/team_roles_permissions.mdx diff --git a/document/content/docs/intro.en.mdx b/document/content/docs/introduction/index.en.mdx similarity index 100% rename from document/content/docs/intro.en.mdx rename to document/content/docs/introduction/index.en.mdx diff --git a/document/content/docs/intro.mdx b/document/content/docs/introduction/index.mdx similarity index 100% rename from document/content/docs/intro.mdx rename to document/content/docs/introduction/index.mdx diff --git a/document/content/docs/introduction/meta.en.json b/document/content/docs/introduction/meta.en.json new file mode 100644 index 000000000000..cd99bdf52559 --- /dev/null +++ b/document/content/docs/introduction/meta.en.json @@ -0,0 +1,5 @@ +{ + "title": "FastGPT Docs", + "root": true, + "pages": ["guide", "development", "FAQ", "shopping_cart", "community"] +} \ No newline at end of file diff --git a/document/content/docs/introduction/meta.json b/document/content/docs/introduction/meta.json new file mode 100644 index 000000000000..6e769cfc4dac --- /dev/null +++ b/document/content/docs/introduction/meta.json @@ -0,0 +1,6 @@ +{ + "title": "FastGPT Docs", + "root": true, + "pages": ["[Handshake][联系我们](https://fael3z0zfze.feishu.cn/share/base/form/shrcnRxj3utrzjywsom96Px4sud)","guide","development", "FAQ", "shopping_cart","community"], + "order": 1 +} \ No newline at end of file diff --git a/document/content/docs/shopping_cart/intro.mdx b/document/content/docs/introduction/shopping_cart/intro.mdx similarity index 100% rename from document/content/docs/shopping_cart/intro.mdx rename to document/content/docs/introduction/shopping_cart/intro.mdx diff --git a/document/content/docs/shopping_cart/meta.json b/document/content/docs/introduction/shopping_cart/meta.json similarity index 100% rename from document/content/docs/shopping_cart/meta.json rename to document/content/docs/introduction/shopping_cart/meta.json diff --git a/document/content/docs/shopping_cart/saas.mdx b/document/content/docs/introduction/shopping_cart/saas.mdx similarity index 100% rename from document/content/docs/shopping_cart/saas.mdx rename to document/content/docs/introduction/shopping_cart/saas.mdx diff --git a/document/content/docs/meta.en.json b/document/content/docs/meta.en.json deleted file mode 100644 index 806c5734a5c3..000000000000 --- a/document/content/docs/meta.en.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "FastGPT Docs", - "root": true, - "pages": ["intro.en", "guide", "use-cases", "development", "FAQ", "shopping_cart", "agreement", "community"] -} \ No newline at end of file diff --git a/document/content/docs/meta.json b/document/content/docs/meta.json deleted file mode 100644 index 57685719c7db..000000000000 --- a/document/content/docs/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "FastGPT Docs", - "root": true, - "pages": ["[Handshake][联系我们](https://fael3z0zfze.feishu.cn/share/base/form/shrcnRxj3utrzjywsom96Px4sud)","intro","test","guide","use-cases","development", "FAQ", "shopping_cart","agreement","community"] -} \ No newline at end of file diff --git a/document/content/docs/protocol/index.mdx b/document/content/docs/protocol/index.mdx new file mode 100644 index 000000000000..5a7a56b0acd4 --- /dev/null +++ b/document/content/docs/protocol/index.mdx @@ -0,0 +1,9 @@ +--- +weight: 0 +title: 'FastGPT 协议' +description: 'FastGPT 协议' +icon: menu_book +lead: '' +draft: false +images: [] +--- diff --git a/document/content/docs/protocol/meta.json b/document/content/docs/protocol/meta.json new file mode 100644 index 000000000000..fe80f6dab1b4 --- /dev/null +++ b/document/content/docs/protocol/meta.json @@ -0,0 +1,8 @@ +{ + "title": "协议", + "root": true, + "description": "协议", + "pages": ["open-source","privacy-policy","terms"], + "order": 3 +} + \ No newline at end of file diff --git a/document/content/docs/agreement/open-source.en.mdx b/document/content/docs/protocol/open-source.en.mdx similarity index 100% rename from document/content/docs/agreement/open-source.en.mdx rename to document/content/docs/protocol/open-source.en.mdx diff --git a/document/content/docs/agreement/open-source.mdx b/document/content/docs/protocol/open-source.mdx similarity index 100% rename from document/content/docs/agreement/open-source.mdx rename to document/content/docs/protocol/open-source.mdx diff --git a/document/content/docs/agreement/privacy.en.mdx b/document/content/docs/protocol/privacy.en.mdx similarity index 100% rename from document/content/docs/agreement/privacy.en.mdx rename to document/content/docs/protocol/privacy.en.mdx diff --git a/document/content/docs/agreement/privacy.mdx b/document/content/docs/protocol/privacy.mdx similarity index 100% rename from document/content/docs/agreement/privacy.mdx rename to document/content/docs/protocol/privacy.mdx diff --git a/document/content/docs/agreement/terms.en.mdx b/document/content/docs/protocol/terms.en.mdx similarity index 100% rename from document/content/docs/agreement/terms.en.mdx rename to document/content/docs/protocol/terms.en.mdx diff --git a/document/content/docs/agreement/terms.mdx b/document/content/docs/protocol/terms.mdx similarity index 100% rename from document/content/docs/agreement/terms.mdx rename to document/content/docs/protocol/terms.mdx diff --git a/document/content/docs/use-cases/external-integration/iframe_integration.mdx b/document/content/docs/use-cases/external-integration/iframe_integration.mdx index e88d55e475db..7fa8cb2883a0 100644 --- a/document/content/docs/use-cases/external-integration/iframe_integration.mdx +++ b/document/content/docs/use-cases/external-integration/iframe_integration.mdx @@ -5,4 +5,4 @@ icon: "iframe" draft: false toc: true weight: 512 ---- \ No newline at end of file +--- diff --git a/document/content/docs/index.mdx b/document/content/docs/use-cases/index.mdx similarity index 100% rename from document/content/docs/index.mdx rename to document/content/docs/use-cases/index.mdx diff --git a/document/content/docs/use-cases/meta.json b/document/content/docs/use-cases/meta.json index 62ec1ffe2465..2fddf885e540 100644 --- a/document/content/docs/use-cases/meta.json +++ b/document/content/docs/use-cases/meta.json @@ -1,4 +1,7 @@ { "title": "使用案例", - "description": "有关 FastGPT 其他实践案例的更多信息" + "description": "有关 FastGPT 其他实践案例的更多信息", + "root": true, + "pages": ["app-cases","external-integration"], + "order": 2 } \ No newline at end of file diff --git a/document/i18n/en/common.json b/document/i18n/en/common.json index c4f5bb468aed..2ddc3f529569 100644 --- a/document/i18n/en/common.json +++ b/document/i18n/en/common.json @@ -10,5 +10,9 @@ "links": "Links", "community": "Community", "resources": "Resources" - } + }, + "introduction": "Introduction", + "use-cases": "Use Cases", + "api": "API", + "protocol": "Protocol" } \ No newline at end of file diff --git a/document/i18n/zh-CN/common.json b/document/i18n/zh-CN/common.json index d7d27d043cbc..0e247d645e9d 100644 --- a/document/i18n/zh-CN/common.json +++ b/document/i18n/zh-CN/common.json @@ -10,5 +10,9 @@ "links": "链接", "community": "社区", "resources": "资源" - } + }, + "introduction": "使用说明", + "use-cases": "使用场景", + "api": "API 手册", + "protocol": "协议" } \ No newline at end of file diff --git a/document/lib/github.ts b/document/lib/github.ts new file mode 100644 index 000000000000..b82971cfd923 --- /dev/null +++ b/document/lib/github.ts @@ -0,0 +1,17 @@ +// lib/github.ts +import { getGithubLastEdit } from 'fumadocs-core/server'; + +export async function fetchLastModified(path: string): Promise { + try { + const lastEdit = await getGithubLastEdit({ + owner: process.env.GITHUB_OWNER || 'labring', + repo: process.env.GITHUB_REPO || 'FastGPT', + path, + token: `Bearer ${process.env.GIT_TOKEN}` // 可选,提高速率限制 + }); + return lastEdit ? lastEdit.toISOString() : null; + } catch (err) { + console.error('获取 GitHub 最后编辑时间失败', err); + return null; + } +} diff --git a/document/lib/source.ts b/document/lib/source.ts index a0cf24f9962c..dacecc99d06f 100644 --- a/document/lib/source.ts +++ b/document/lib/source.ts @@ -1,11 +1,18 @@ import { docs } from '@/.source'; import { loader } from 'fumadocs-core/source'; import { i18n } from './i18n'; +import { icons } from 'lucide-react'; +import { createElement } from 'react'; // See https://fumadocs.vercel.app/docs/headless/source-api for more info export const source = loader({ i18n, // it assigns a URL to your pages baseUrl: '/docs', - source: docs.toFumadocsSource() + source: docs.toFumadocsSource(), + icon(iconName) { + return iconName && icons[iconName as keyof typeof icons] + ? createElement(icons[iconName as keyof typeof icons]) + : undefined; + } }); diff --git a/document/mdx-components.tsx b/document/mdx-components.tsx index 8ff9738b2827..dcc93e0c5b33 100644 --- a/document/mdx-components.tsx +++ b/document/mdx-components.tsx @@ -1,12 +1,16 @@ import defaultMdxComponents from 'fumadocs-ui/mdx'; import type { MDXComponents } from 'mdx/types'; import { ImageZoom } from 'fumadocs-ui/components/image-zoom'; +import * as TabsComponents from 'fumadocs-ui/components/tabs'; +import { TypeTable } from 'fumadocs-ui/components/type-table'; // use this function to get MDX components, you will need it for rendering MDX export function getMDXComponents(components?: MDXComponents): MDXComponents { return { ...defaultMdxComponents, img: (props) => , - ...components + ...TabsComponents, + ...components, + TypeTable }; } diff --git a/document/package.json b/document/package.json index 09363de3da6b..3c82fab60f89 100644 --- a/document/package.json +++ b/document/package.json @@ -3,27 +3,34 @@ "version": "0.0.0", "private": true, "scripts": { - "build": "next build", + "build": "next build && node ./update-index.mjs", "dev": "next dev --turbo", "start": "next start", "postinstall": "fumadocs-mdx" }, "dependencies": { - "fumadocs-core": "15.3.0", - "fumadocs-mdx": "11.6.3", - "fumadocs-ui": "15.3.0", - "next": "15.3.2", + "@orama/orama": "^3.1.11", + "@orama/tokenizers": "^3.1.11", + "algoliasearch": "^5.32.0", + "fumadocs-core": "15.6.3", + "fumadocs-mdx": "11.6.11", + "fumadocs-ui": "15.6.3", + "lucide-react": "^0.525.0", + "next": "15.3.5", "react": "^19.1.0", "react-dom": "^19.1.0" }, "devDependencies": { - "@tailwindcss/postcss": "^4.1.5", + "@content-collections/core": "^0.10.0", + "@content-collections/next": "^0.2.6", + "@tailwindcss/postcss": "^4.1.11", "@types/mdx": "^2.0.13", - "@types/node": "22.15.12", - "@types/react": "^19.1.3", - "@types/react-dom": "^19.1.3", - "postcss": "^8.5.3", - "tailwindcss": "^4.1.5", - "typescript": "^5.8.3" + "@types/node": "24.0.13", + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", + "postcss": "^8.5.6", + "tailwindcss": "^4.1.11", + "typescript": "^5.8.3", + "zod": "^4.0.5" } } \ No newline at end of file diff --git a/document/pnpm-lock.yaml b/document/pnpm-lock.yaml index 044276e952ad..d2f605aa0c99 100644 --- a/document/pnpm-lock.yaml +++ b/document/pnpm-lock.yaml @@ -8,30 +8,30 @@ importers: .: dependencies: - fs-extra: - specifier: ^11.3.0 - version: 11.3.0 + '@orama/orama': + specifier: ^3.1.11 + version: 3.1.11 + '@orama/tokenizers': + specifier: ^3.1.11 + version: 3.1.11 + algoliasearch: + specifier: ^5.32.0 + version: 5.32.0 fumadocs-core: - specifier: 15.3.0 - version: 15.3.0(@types/react@19.1.3)(next@15.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.6.3 + version: 15.6.3(@types/react@19.1.8)(algoliasearch@5.32.0)(next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) fumadocs-mdx: - specifier: 11.6.3 - version: 11.6.3(acorn@8.14.1)(fumadocs-core@15.3.0(@types/react@19.1.3)(next@15.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(next@15.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) + specifier: 11.6.11 + version: 11.6.11(acorn@8.15.0)(fumadocs-core@15.6.3(@types/react@19.1.8)(algoliasearch@5.32.0)(next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) fumadocs-ui: - specifier: 15.3.0 - version: 15.3.0(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(next@15.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.1.6) - globby: - specifier: ^14.1.0 - version: 14.1.0 + specifier: 15.6.3 + version: 15.6.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(algoliasearch@5.32.0)(next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.1.11) + lucide-react: + specifier: ^0.525.0 + version: 0.525.0(react@19.1.0) next: - specifier: 15.3.2 - version: 15.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - node-fetch: - specifier: ^3.3.2 - version: 3.3.2 - p-limit: - specifier: ^6.2.0 - version: 6.2.0 + specifier: 15.3.5 + version: 15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: specifier: ^19.1.0 version: 19.1.0 @@ -39,33 +39,94 @@ importers: specifier: ^19.1.0 version: 19.1.0(react@19.1.0) devDependencies: + '@content-collections/core': + specifier: ^0.10.0 + version: 0.10.0(typescript@5.8.3) + '@content-collections/next': + specifier: ^0.2.6 + version: 0.2.6(@content-collections/core@0.10.0(typescript@5.8.3))(next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) '@tailwindcss/postcss': - specifier: ^4.1.5 - version: 4.1.6 + specifier: ^4.1.11 + version: 4.1.11 '@types/mdx': specifier: ^2.0.13 version: 2.0.13 '@types/node': - specifier: 22.15.12 - version: 22.15.12 + specifier: 24.0.13 + version: 24.0.13 '@types/react': - specifier: ^19.1.3 - version: 19.1.3 + specifier: ^19.1.8 + version: 19.1.8 '@types/react-dom': - specifier: ^19.1.3 - version: 19.1.3(@types/react@19.1.3) + specifier: ^19.1.6 + version: 19.1.6(@types/react@19.1.8) postcss: - specifier: ^8.5.3 - version: 8.5.3 + specifier: ^8.5.6 + version: 8.5.6 tailwindcss: - specifier: ^4.1.5 - version: 4.1.6 + specifier: ^4.1.11 + version: 4.1.11 typescript: specifier: ^5.8.3 version: 5.8.3 + zod: + specifier: ^4.0.5 + version: 4.0.5 packages: + '@algolia/client-abtesting@5.32.0': + resolution: {integrity: sha512-HG/6Eib6DnJYm/B2ijWFXr4txca/YOuA4K7AsEU0JBrOZSB+RU7oeDyNBPi3c0v0UDDqlkBqM3vBU/auwZlglA==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-analytics@5.32.0': + resolution: {integrity: sha512-8Y9MLU72WFQOW3HArYv16+Wvm6eGmsqbxxM1qxtm0hvSASJbxCm+zQAZe5stqysTlcWo4BJ82KEH1PfgHbJAmQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-common@5.32.0': + resolution: {integrity: sha512-w8L+rgyXMCPBKmEdOT+RfgMrF0mT6HK60vPYWLz8DBs/P7yFdGo7urn99XCJvVLMSKXrIbZ2FMZ/i50nZTXnuQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-insights@5.32.0': + resolution: {integrity: sha512-AdWfynhUeX7jz/LTiFU3wwzJembTbdLkQIOLs4n7PyBuxZ3jz4azV1CWbIP8AjUOFmul6uXbmYza+KqyS5CzOA==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-personalization@5.32.0': + resolution: {integrity: sha512-bTupJY4xzGZYI4cEQcPlSjjIEzMvv80h7zXGrXY1Y0KC/n/SLiMv84v7Uy+B6AG1Kiy9FQm2ADChBLo1uEhGtQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-query-suggestions@5.32.0': + resolution: {integrity: sha512-if+YTJw1G3nDKL2omSBjQltCHUQzbaHADkcPQrGFnIGhVyHU3Dzq4g46uEv8mrL5sxL8FjiS9LvekeUlL2NRqw==} + engines: {node: '>= 14.0.0'} + + '@algolia/client-search@5.32.0': + resolution: {integrity: sha512-kmK5nVkKb4DSUgwbveMKe4X3xHdMsPsOVJeEzBvFJ+oS7CkBPmpfHAEq+CcmiPJs20YMv6yVtUT9yPWL5WgAhg==} + engines: {node: '>= 14.0.0'} + + '@algolia/ingestion@1.32.0': + resolution: {integrity: sha512-PZTqjJbx+fmPuT2ud1n4vYDSF1yrT//vOGI9HNYKNA0PM0xGUBWigf5gRivHsXa3oBnUlTyHV9j7Kqx5BHbVHQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/monitoring@1.32.0': + resolution: {integrity: sha512-kYYoOGjvNQAmHDS1v5sBj+0uEL9RzYqH/TAdq8wmcV+/22weKt/fjh+6LfiqkS1SCZFYYrwGnirrUhUM36lBIQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/recommend@5.32.0': + resolution: {integrity: sha512-jyIBLdskjPAL7T1g57UMfUNx+PzvYbxKslwRUKBrBA6sNEsYCFdxJAtZSLUMmw6MC98RDt4ksmEl5zVMT5bsuw==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-browser-xhr@5.32.0': + resolution: {integrity: sha512-eDp14z92Gt6JlFgiexImcWWH+Lk07s/FtxcoDaGrE4UVBgpwqOO6AfQM6dXh1pvHxlDFbMJihHc/vj3gBhPjqQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-fetch@5.32.0': + resolution: {integrity: sha512-rnWVglh/K75hnaLbwSc2t7gCkbq1ldbPgeIKDUiEJxZ4mlguFgcltWjzpDQ/t1LQgxk9HdIFcQfM17Hid3aQ6Q==} + engines: {node: '>= 14.0.0'} + + '@algolia/requester-node-http@5.32.0': + resolution: {integrity: sha512-LbzQ04+VLkzXY4LuOzgyjqEv/46Gwrk55PldaglMJ4i4eDXSRXGKkwJpXFwsoU+c1HMQlHIyjJBhrfsfdyRmyQ==} + engines: {node: '>= 14.0.0'} + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -74,283 +135,317 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@emnapi/runtime@1.4.3': - resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + '@content-collections/core@0.10.0': + resolution: {integrity: sha512-GDBYbvhoj9lHNlarY5wr+3PoO3m9GBMjftio9NXatLuZaenY+EHHNCcbbA3J+c06Q7WBYwNoLAaMX2I5N0duAg==} + peerDependencies: + typescript: ^5.0.2 - '@esbuild/aix-ppc64@0.25.4': - resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + '@content-collections/integrations@0.2.1': + resolution: {integrity: sha512-AyEcS2MmcOXSYt6vNmJsAiu6EBYjtNiwYGUVUmpG3llm8Gt8uiNrhIhlHyv3cuk+N8KJ2PWemLcMqtQJ+sW3bA==} + peerDependencies: + '@content-collections/core': 0.x + + '@content-collections/next@0.2.6': + resolution: {integrity: sha512-gbVgtnXD7Qad95ENjL99LvrXoBtRTL8N0aZc5gz5NIK/yKBlpTZI6/CKVQMmROtGrqLOwcBdWlGUIzZPwpUBVA==} + peerDependencies: + '@content-collections/core': 0.x + next: ^12 || ^13 || ^14 || ^15 + + '@emnapi/runtime@1.4.4': + resolution: {integrity: sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==} + + '@esbuild/aix-ppc64@0.25.6': + resolution: {integrity: sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.4': - resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + '@esbuild/android-arm64@0.25.6': + resolution: {integrity: sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.4': - resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + '@esbuild/android-arm@0.25.6': + resolution: {integrity: sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.4': - resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + '@esbuild/android-x64@0.25.6': + resolution: {integrity: sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.4': - resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + '@esbuild/darwin-arm64@0.25.6': + resolution: {integrity: sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.4': - resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + '@esbuild/darwin-x64@0.25.6': + resolution: {integrity: sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.4': - resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + '@esbuild/freebsd-arm64@0.25.6': + resolution: {integrity: sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.4': - resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + '@esbuild/freebsd-x64@0.25.6': + resolution: {integrity: sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.4': - resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + '@esbuild/linux-arm64@0.25.6': + resolution: {integrity: sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.4': - resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + '@esbuild/linux-arm@0.25.6': + resolution: {integrity: sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.4': - resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + '@esbuild/linux-ia32@0.25.6': + resolution: {integrity: sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.4': - resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + '@esbuild/linux-loong64@0.25.6': + resolution: {integrity: sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.4': - resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + '@esbuild/linux-mips64el@0.25.6': + resolution: {integrity: sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.4': - resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + '@esbuild/linux-ppc64@0.25.6': + resolution: {integrity: sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.4': - resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + '@esbuild/linux-riscv64@0.25.6': + resolution: {integrity: sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.4': - resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + '@esbuild/linux-s390x@0.25.6': + resolution: {integrity: sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.4': - resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + '@esbuild/linux-x64@0.25.6': + resolution: {integrity: sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.4': - resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + '@esbuild/netbsd-arm64@0.25.6': + resolution: {integrity: sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.4': - resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + '@esbuild/netbsd-x64@0.25.6': + resolution: {integrity: sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.4': - resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + '@esbuild/openbsd-arm64@0.25.6': + resolution: {integrity: sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.4': - resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + '@esbuild/openbsd-x64@0.25.6': + resolution: {integrity: sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.25.4': - resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + '@esbuild/openharmony-arm64@0.25.6': + resolution: {integrity: sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.6': + resolution: {integrity: sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.4': - resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + '@esbuild/win32-arm64@0.25.6': + resolution: {integrity: sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.4': - resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + '@esbuild/win32-ia32@0.25.6': + resolution: {integrity: sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.4': - resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + '@esbuild/win32-x64@0.25.6': + resolution: {integrity: sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@floating-ui/core@1.7.0': - resolution: {integrity: sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==} + '@floating-ui/core@1.7.2': + resolution: {integrity: sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==} - '@floating-ui/dom@1.7.0': - resolution: {integrity: sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==} + '@floating-ui/dom@1.7.2': + resolution: {integrity: sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==} - '@floating-ui/react-dom@2.1.2': - resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + '@floating-ui/react-dom@2.1.4': + resolution: {integrity: sha512-JbbpPhp38UmXDDAu60RJmbeme37Jbgsm7NrHGgzYYFKmblzRUh6Pa641dII6LsjwF4XlScDrde2UAzDo/b9KPw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - '@floating-ui/utils@0.2.9': - resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} '@formatjs/intl-localematcher@0.6.1': resolution: {integrity: sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==} - '@img/sharp-darwin-arm64@0.34.1': - resolution: {integrity: sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==} + '@img/sharp-darwin-arm64@0.34.3': + resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.34.1': - resolution: {integrity: sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==} + '@img/sharp-darwin-x64@0.34.3': + resolution: {integrity: sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.1.0': - resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==} + '@img/sharp-libvips-darwin-arm64@1.2.0': + resolution: {integrity: sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.1.0': - resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==} + '@img/sharp-libvips-darwin-x64@1.2.0': + resolution: {integrity: sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.1.0': - resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==} + '@img/sharp-libvips-linux-arm64@1.2.0': + resolution: {integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm@1.1.0': - resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==} + '@img/sharp-libvips-linux-arm@1.2.0': + resolution: {integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==} cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-ppc64@1.1.0': - resolution: {integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==} + '@img/sharp-libvips-linux-ppc64@1.2.0': + resolution: {integrity: sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==} cpu: [ppc64] os: [linux] - '@img/sharp-libvips-linux-s390x@1.1.0': - resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==} + '@img/sharp-libvips-linux-s390x@1.2.0': + resolution: {integrity: sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==} cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-x64@1.1.0': - resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==} + '@img/sharp-libvips-linux-x64@1.2.0': + resolution: {integrity: sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==} cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.1.0': - resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==} + '@img/sharp-libvips-linuxmusl-arm64@1.2.0': + resolution: {integrity: sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.1.0': - resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==} + '@img/sharp-libvips-linuxmusl-x64@1.2.0': + resolution: {integrity: sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==} cpu: [x64] os: [linux] - '@img/sharp-linux-arm64@0.34.1': - resolution: {integrity: sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==} + '@img/sharp-linux-arm64@0.34.3': + resolution: {integrity: sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linux-arm@0.34.1': - resolution: {integrity: sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==} + '@img/sharp-linux-arm@0.34.3': + resolution: {integrity: sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - '@img/sharp-linux-s390x@0.34.1': - resolution: {integrity: sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==} + '@img/sharp-linux-ppc64@0.34.3': + resolution: {integrity: sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.3': + resolution: {integrity: sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - '@img/sharp-linux-x64@0.34.1': - resolution: {integrity: sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==} + '@img/sharp-linux-x64@0.34.3': + resolution: {integrity: sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.34.1': - resolution: {integrity: sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==} + '@img/sharp-linuxmusl-arm64@0.34.3': + resolution: {integrity: sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-x64@0.34.1': - resolution: {integrity: sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==} + '@img/sharp-linuxmusl-x64@0.34.3': + resolution: {integrity: sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-wasm32@0.34.1': - resolution: {integrity: sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==} + '@img/sharp-wasm32@0.34.3': + resolution: {integrity: sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-ia32@0.34.1': - resolution: {integrity: sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==} + '@img/sharp-win32-arm64@0.34.3': + resolution: {integrity: sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.3': + resolution: {integrity: sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.34.1': - resolution: {integrity: sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==} + '@img/sharp-win32-x64@0.34.3': + resolution: {integrity: sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] @@ -359,93 +454,80 @@ packages: resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.12': + resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} + '@jridgewell/sourcemap-codec@1.5.4': + resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.29': + resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} '@mdx-js/mdx@3.1.0': resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} - '@next/env@15.3.2': - resolution: {integrity: sha512-xURk++7P7qR9JG1jJtLzPzf0qEvqCN0A/T3DXf8IPMKo9/6FfjxtEffRJIIew/bIL4T3C2jLLqBor8B/zVlx6g==} + '@next/env@15.3.5': + resolution: {integrity: sha512-7g06v8BUVtN2njAX/r8gheoVffhiKFVt4nx74Tt6G4Hqw9HCLYQVx/GkH2qHvPtAHZaUNZ0VXAa0pQP6v1wk7g==} - '@next/swc-darwin-arm64@15.3.2': - resolution: {integrity: sha512-2DR6kY/OGcokbnCsjHpNeQblqCZ85/1j6njYSkzRdpLn5At7OkSdmk7WyAmB9G0k25+VgqVZ/u356OSoQZ3z0g==} + '@next/swc-darwin-arm64@15.3.5': + resolution: {integrity: sha512-lM/8tilIsqBq+2nq9kbTW19vfwFve0NR7MxfkuSUbRSgXlMQoJYg+31+++XwKVSXk4uT23G2eF/7BRIKdn8t8w==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.3.2': - resolution: {integrity: sha512-ro/fdqaZWL6k1S/5CLv1I0DaZfDVJkWNaUU3un8Lg6m0YENWlDulmIWzV96Iou2wEYyEsZq51mwV8+XQXqMp3w==} + '@next/swc-darwin-x64@15.3.5': + resolution: {integrity: sha512-WhwegPQJ5IfoUNZUVsI9TRAlKpjGVK0tpJTL6KeiC4cux9774NYE9Wu/iCfIkL/5J8rPAkqZpG7n+EfiAfidXA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.3.2': - resolution: {integrity: sha512-covwwtZYhlbRWK2HlYX9835qXum4xYZ3E2Mra1mdQ+0ICGoMiw1+nVAn4d9Bo7R3JqSmK1grMq/va+0cdh7bJA==} + '@next/swc-linux-arm64-gnu@15.3.5': + resolution: {integrity: sha512-LVD6uMOZ7XePg3KWYdGuzuvVboxujGjbcuP2jsPAN3MnLdLoZUXKRc6ixxfs03RH7qBdEHCZjyLP/jBdCJVRJQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.3.2': - resolution: {integrity: sha512-KQkMEillvlW5Qk5mtGA/3Yz0/tzpNlSw6/3/ttsV1lNtMuOHcGii3zVeXZyi4EJmmLDKYcTcByV2wVsOhDt/zg==} + '@next/swc-linux-arm64-musl@15.3.5': + resolution: {integrity: sha512-k8aVScYZ++BnS2P69ClK7v4nOu702jcF9AIHKu6llhHEtBSmM2zkPGl9yoqbSU/657IIIb0QHpdxEr0iW9z53A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.3.2': - resolution: {integrity: sha512-uRBo6THWei0chz+Y5j37qzx+BtoDRFIkDzZjlpCItBRXyMPIg079eIkOCl3aqr2tkxL4HFyJ4GHDes7W8HuAUg==} + '@next/swc-linux-x64-gnu@15.3.5': + resolution: {integrity: sha512-2xYU0DI9DGN/bAHzVwADid22ba5d/xrbrQlr2U+/Q5WkFUzeL0TDR963BdrtLS/4bMmKZGptLeg6282H/S2i8A==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.3.2': - resolution: {integrity: sha512-+uxFlPuCNx/T9PdMClOqeE8USKzj8tVz37KflT3Kdbx/LOlZBRI2yxuIcmx1mPNK8DwSOMNCr4ureSet7eyC0w==} + '@next/swc-linux-x64-musl@15.3.5': + resolution: {integrity: sha512-TRYIqAGf1KCbuAB0gjhdn5Ytd8fV+wJSM2Nh2is/xEqR8PZHxfQuaiNhoF50XfY90sNpaRMaGhF6E+qjV1b9Tg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.3.2': - resolution: {integrity: sha512-LLTKmaI5cfD8dVzh5Vt7+OMo+AIOClEdIU/TSKbXXT2iScUTSxOGoBhfuv+FU8R9MLmrkIL1e2fBMkEEjYAtPQ==} + '@next/swc-win32-arm64-msvc@15.3.5': + resolution: {integrity: sha512-h04/7iMEUSMY6fDGCvdanKqlO1qYvzNxntZlCzfE8i5P0uqzVQWQquU1TIhlz0VqGQGXLrFDuTJVONpqGqjGKQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.3.2': - resolution: {integrity: sha512-aW5B8wOPioJ4mBdMDXkt5f3j8pUr9W8AnlX0Df35uRWNT1Y6RIybxjnSUe+PhM+M1bwgyY8PHLmXZC6zT1o5tA==} + '@next/swc-win32-x64-msvc@15.3.5': + resolution: {integrity: sha512-5fhH6fccXxnX2KhllnGhkYMndhOiLOLEiVGYjP2nizqeGWkN10sA9taATlXwake2E2XMvYZjjz0Uj7T0y+z1yw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@orama/orama@3.1.11': + resolution: {integrity: sha512-Szki0cgFiXE5F9RLx2lUyEtJllnuCSQ4B8RLDwIjXkVit6qZjoDAxH+xhJs29MjKLDz0tbPLdKFa6QrQ/qoGGA==} + engines: {node: '>= 20.0.0'} - '@orama/orama@3.1.6': - resolution: {integrity: sha512-qtSrqCqRU93SjEBedz987tvWao1YQSELjBhGkHYGVP7Dg0lBWP6d+uZEIt5gxTAYio/YWWlhivmRABvRfPLmnQ==} - engines: {node: '>= 16.0.0'} + '@orama/tokenizers@3.1.11': + resolution: {integrity: sha512-fwULrEdbP5/83gFjaX1X/l7lzdD7LxBT8YbAzcY89BmXjJcJETU/5qckp4ZNDMhRRjJUSGKH4bAXHsm6yu+ZPw==} + engines: {node: '>= 20.0.0'} '@radix-ui/number@1.1.1': resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} @@ -453,8 +535,8 @@ packages: '@radix-ui/primitive@1.1.2': resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} - '@radix-ui/react-accordion@1.2.10': - resolution: {integrity: sha512-x+URzV1siKmeXPSUIQ22L81qp2eOhjpy3tgteF+zOr4d1u0qJnFuyBF4MoQRhmKP6ivDxlvDAvqaF77gh7DOIw==} + '@radix-ui/react-accordion@1.2.11': + resolution: {integrity: sha512-l3W5D54emV2ues7jjeG1xcyN7S3jnK3zE2zHqgn0CmMsy9lNJwmgcrmaxS+7ipw15FAivzKNzH3d5EcGoFKw0A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -466,8 +548,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-arrow@1.1.6': - resolution: {integrity: sha512-2JMfHJf/eVnwq+2dewT3C0acmCWD3XiVA1Da+jTDqo342UlU13WvXtqHhG+yJw5JeQmu4ue2eMy6gcEArLBlcw==} + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -479,8 +561,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-collapsible@1.1.10': - resolution: {integrity: sha512-O2mcG3gZNkJ/Ena34HurA3llPOEA/M4dJtIRMa6y/cknRDC8XY5UZBInKTsUwW5cUue9A4k0wi1XU5fKBzKe1w==} + '@radix-ui/react-collapsible@1.1.11': + resolution: {integrity: sha512-2qrRsVGSCYasSz1RFOorXwl0H7g7J1frQtgpQgYrt+MOidtPAINHn9CPovQXb83r8ahapdx3Tu0fa/pdFFSdPg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -492,8 +574,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-collection@1.1.6': - resolution: {integrity: sha512-PbhRFK4lIEw9ADonj48tiYWzkllz81TM7KVYyyMMw2cwHO7D5h4XKEblL8NlaRisTK3QTe6tBEhDccFUryxHBQ==} + '@radix-ui/react-collection@1.1.7': + resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -523,8 +605,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dialog@1.1.13': - resolution: {integrity: sha512-ARFmqUyhIVS3+riWzwGTe7JLjqwqgnODBUZdqpWar/z1WFs9z76fuOs/2BOWCR+YboRn4/WN9aoaGVwqNRr8VA==} + '@radix-ui/react-dialog@1.1.14': + resolution: {integrity: sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -545,8 +627,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dismissable-layer@1.1.9': - resolution: {integrity: sha512-way197PiTvNp+WBP7svMJasHl+vibhWGQDb6Mgf5mhEWJkgb85z7Lfl9TUdkqpWsf8GRNmoopx9ZxCyDzmgRMQ==} + '@radix-ui/react-dismissable-layer@1.1.10': + resolution: {integrity: sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -567,8 +649,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-focus-scope@1.1.6': - resolution: {integrity: sha512-r9zpYNUQY+2jWHWZGyddQLL9YHkM/XvSFHVcWs7bdVuxMAnCwTAuy6Pf47Z4nw7dYcUou1vg/VgjjrrH03VeBw==} + '@radix-ui/react-focus-scope@1.1.7': + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -589,8 +671,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-navigation-menu@1.2.12': - resolution: {integrity: sha512-iExvawdu7n6DidDJRU5pMTdi+Z3DaVPN4UZbAGuTs7nJA8P4RvvkEz+XYI2UJjb/Hh23RrH19DakgZNLdaq9Bw==} + '@radix-ui/react-navigation-menu@1.2.13': + resolution: {integrity: sha512-WG8wWfDiJlSF5hELjwfjSGOXcBR/ZMhBFCGYe8vERpC39CQYZeq1PQ2kaYHdye3V95d06H89KGMsVCIE4LWo3g==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -602,8 +684,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popover@1.1.13': - resolution: {integrity: sha512-84uqQV3omKDR076izYgcha6gdpN8m3z6w/AeJ83MSBJYVG/AbOHdLjAgsPZkeC/kt+k64moXFCnio8BbqXszlw==} + '@radix-ui/react-popover@1.1.14': + resolution: {integrity: sha512-ODz16+1iIbGUfFEfKx2HTPKizg2MN39uIOV8MXeHnmdd3i/N9Wt7vU46wbHsqA0xoaQyXVcs0KIlBdOA2Y95bw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -615,8 +697,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popper@1.2.6': - resolution: {integrity: sha512-7iqXaOWIjDBfIG7aq8CUEeCSsQMLFdn7VEE8TaFz704DtEzpPHR7w/uuzRflvKgltqSAImgcmxQ7fFX3X7wasg==} + '@radix-ui/react-popper@1.2.7': + resolution: {integrity: sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -628,8 +710,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-portal@1.1.8': - resolution: {integrity: sha512-hQsTUIn7p7fxCPvao/q6wpbxmCwgLrlz+nOrJgC+RwfZqWY/WN+UMqkXzrtKbPrF82P43eCTl3ekeKuyAQbFeg==} + '@radix-ui/react-portal@1.1.9': + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -654,8 +736,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-primitive@2.1.2': - resolution: {integrity: sha512-uHa+l/lKfxuDD2zjN/0peM/RhhSmRjr5YWdk/37EnSv1nJ88uvG85DPexSm8HdFQROd2VdERJ6ynXbkCFi+APw==} + '@radix-ui/react-primitive@2.1.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -667,8 +749,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-roving-focus@1.1.9': - resolution: {integrity: sha512-ZzrIFnMYHHCNqSNCsuN6l7wlewBEq0O0BCSBkabJMFXVO51LRUTq71gLP1UxFvmrXElqmPjA5VX7IqC9VpazAQ==} + '@radix-ui/react-roving-focus@1.1.10': + resolution: {integrity: sha512-dT9aOXUen9JSsxnMPv/0VqySQf5eDQ6LCk5Sw28kamz8wSOW2bJdlX2Bg5VUIIcV+6XlHpWTIuTPCf/UNIyq8Q==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -680,8 +762,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-scroll-area@1.2.8': - resolution: {integrity: sha512-K5h1RkYA6M0Sn61BV5LQs686zqBsSC0sGzL4/Gw4mNnjzrQcGSc6YXfC6CRFNaGydSdv5+M8cb0eNsOGo0OXtQ==} + '@radix-ui/react-scroll-area@1.2.9': + resolution: {integrity: sha512-YSjEfBXnhUELsO2VzjdtYYD4CfQjvao+lhhrX5XsHD7/cyUNzljF1FHEbgTPN7LH2MClfwRMIsYlqTYpKTTe2A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -693,8 +775,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-slot@1.2.2': - resolution: {integrity: sha512-y7TBO4xN4Y94FvcWIOIh18fM4R1A8S4q1jhoz4PNzOoHsFcN8pogcFmZrTYAm4F9VRUrWP/Mw7xSKybIeRI+CQ==} + '@radix-ui/react-slot@1.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -702,8 +784,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-tabs@1.1.11': - resolution: {integrity: sha512-4FiKSVoXqPP/KfzlB7lwwqoFV6EPwkrrqGp9cUYXjwDYHhvpnqq79P+EPHKcdoTE7Rl8w/+6s9rTlsfXHES9GA==} + '@radix-ui/react-tabs@1.1.12': + resolution: {integrity: sha512-GTVAlRVrQrSw3cEARM0nAx73ixrWDPNZAruETn3oHCNP6SbZ/hNxdxp+u7VkIEv3/sFoLq1PfcHrl7Pnp0CDpw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -787,8 +869,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-visually-hidden@1.2.2': - resolution: {integrity: sha512-ORCmRUbNiZIv6uV5mhFrhsIKw4UX/N3syZtyqvry61tbGm4JlgQuSn0hk5TwCARsCjkcnuRkSdCE3xfb+ADHew==} + '@radix-ui/react-visually-hidden@1.2.3': + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -803,37 +885,33 @@ packages: '@radix-ui/rect@1.1.1': resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} - '@shikijs/core@3.4.0': - resolution: {integrity: sha512-0YOzTSRDn/IAfQWtK791gs1u8v87HNGToU6IwcA3K7nPoVOrS2Dh6X6A6YfXgPTSkTwR5y6myk0MnI0htjnwrA==} + '@shikijs/core@3.8.0': + resolution: {integrity: sha512-gWt8NNZFurL6FMESO4lEsmspDh0H1fyUibhx1NnEH/S3kOXgYiWa6ZFqy+dcjBLhZqCXsepuUaL1QFXk6PrpsQ==} - '@shikijs/engine-javascript@3.4.0': - resolution: {integrity: sha512-1ywDoe+z/TPQKj9Jw0eU61B003J9DqUFRfH+DVSzdwPUFhR7yOmfyLzUrFz0yw8JxFg/NgzXoQyyykXgO21n5Q==} + '@shikijs/engine-javascript@3.8.0': + resolution: {integrity: sha512-IBULFFpQ1N5Cg/C7jPCGnjIKz72CcRtD0BIbNhSuXPUOxLG0bF1URsP/uLfxQFQ9ORfunCQwL7UuSX1RSRBwUQ==} - '@shikijs/engine-oniguruma@3.4.0': - resolution: {integrity: sha512-zwcWlZ4OQuJ/+1t32ClTtyTU1AiDkK1lhtviRWoq/hFqPjCNyLj22bIg9rB7BfoZKOEOfrsGz7No33BPCf+WlQ==} + '@shikijs/engine-oniguruma@3.8.0': + resolution: {integrity: sha512-Tx7kR0oFzqa+rY7t80LjN8ZVtHO3a4+33EUnBVx2qYP3fGxoI9H0bvnln5ySelz9SIUTsS0/Qn+9dg5zcUMsUw==} - '@shikijs/langs@3.4.0': - resolution: {integrity: sha512-bQkR+8LllaM2duU9BBRQU0GqFTx7TuF5kKlw/7uiGKoK140n1xlLAwCgXwSxAjJ7Htk9tXTFwnnsJTCU5nDPXQ==} + '@shikijs/langs@3.8.0': + resolution: {integrity: sha512-mfGYuUgjQ5GgXinB5spjGlBVhG2crKRpKkfADlp8r9k/XvZhtNXxyOToSnCEnF0QNiZnJjlt5MmU9PmhRdwAbg==} - '@shikijs/rehype@3.4.0': - resolution: {integrity: sha512-wm7RTSmrcmjZg+F9JRrsH0Brwi36joUMXkUWIDmBGW+XExNEi8Xjmmp2NOBXa3DujZtnL6Dbcg7V6gtZabGoXw==} + '@shikijs/rehype@3.8.0': + resolution: {integrity: sha512-8/VBgBrVdbM7dB2bG5KZe68pD2zL1OUSi4TECztqB/5VqnLKJNXk0J8qGFhjlDwPSMg/Bg+6UsQOWpgD6pzAAg==} - '@shikijs/themes@3.4.0': - resolution: {integrity: sha512-YPP4PKNFcFGLxItpbU0ZW1Osyuk8AyZ24YEFaq04CFsuCbcqydMvMUTi40V2dkc0qs1U2uZFrnU6s5zI6IH+uA==} + '@shikijs/themes@3.8.0': + resolution: {integrity: sha512-yaZiLuyO23sXe16JFU76KyUMTZCJi4EMQKIrdQt7okoTzI4yAaJhVXT2Uy4k8yBIEFRiia5dtD7gC1t8m6y3oQ==} - '@shikijs/transformers@3.4.0': - resolution: {integrity: sha512-GrGaOj1/I6h75IU0VvjdWDpqGCynx0bqHzd1rErBTGxrcmusYIBhrV7aEySWyJ6HHb9figeXfcNxUFS1HKUfBw==} + '@shikijs/transformers@3.8.0': + resolution: {integrity: sha512-EleKVjNH5Me8yhTtnYD5QGFtY7Acu2HJAWNmDjuOC/Egwt7n31p2nbyBhBqGz5cpdwa1wZkLdVgj/LsZ3ReyAQ==} - '@shikijs/types@3.4.0': - resolution: {integrity: sha512-EUT/0lGiE//7j5N/yTMNMT3eCWNcHJLrRKxT0NDXWIfdfSmFJKfPX7nMmRBrQnWboAzIsUziCThrYMMhjbMS1A==} + '@shikijs/types@3.8.0': + resolution: {integrity: sha512-I/b/aNg0rP+kznVDo7s3UK8jMcqEGTtoPDdQ+JlQ2bcJIyu/e2iRvl42GLIDMK03/W1YOHOuhlhQ7aM+XbKUeg==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} @@ -843,65 +921,65 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@tailwindcss/node@4.1.6': - resolution: {integrity: sha512-ed6zQbgmKsjsVvodAS1q1Ld2BolEuxJOSyyNc+vhkjdmfNUDCmQnlXBfQkHrlzNmslxHsQU/bFmzcEbv4xXsLg==} + '@tailwindcss/node@4.1.11': + resolution: {integrity: sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==} - '@tailwindcss/oxide-android-arm64@4.1.6': - resolution: {integrity: sha512-VHwwPiwXtdIvOvqT/0/FLH/pizTVu78FOnI9jQo64kSAikFSZT7K4pjyzoDpSMaveJTGyAKvDjuhxJxKfmvjiQ==} + '@tailwindcss/oxide-android-arm64@4.1.11': + resolution: {integrity: sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.1.6': - resolution: {integrity: sha512-weINOCcqv1HVBIGptNrk7c6lWgSFFiQMcCpKM4tnVi5x8OY2v1FrV76jwLukfT6pL1hyajc06tyVmZFYXoxvhQ==} + '@tailwindcss/oxide-darwin-arm64@4.1.11': + resolution: {integrity: sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.1.6': - resolution: {integrity: sha512-3FzekhHG0ww1zQjQ1lPoq0wPrAIVXAbUkWdWM8u5BnYFZgb9ja5ejBqyTgjpo5mfy0hFOoMnMuVDI+7CXhXZaQ==} + '@tailwindcss/oxide-darwin-x64@4.1.11': + resolution: {integrity: sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.1.6': - resolution: {integrity: sha512-4m5F5lpkBZhVQJq53oe5XgJ+aFYWdrgkMwViHjRsES3KEu2m1udR21B1I77RUqie0ZYNscFzY1v9aDssMBZ/1w==} + '@tailwindcss/oxide-freebsd-x64@4.1.11': + resolution: {integrity: sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.6': - resolution: {integrity: sha512-qU0rHnA9P/ZoaDKouU1oGPxPWzDKtIfX7eOGi5jOWJKdxieUJdVV+CxWZOpDWlYTd4N3sFQvcnVLJWJ1cLP5TA==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11': + resolution: {integrity: sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.1.6': - resolution: {integrity: sha512-jXy3TSTrbfgyd3UxPQeXC3wm8DAgmigzar99Km9Sf6L2OFfn/k+u3VqmpgHQw5QNfCpPe43em6Q7V76Wx7ogIQ==} + '@tailwindcss/oxide-linux-arm64-gnu@4.1.11': + resolution: {integrity: sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-arm64-musl@4.1.6': - resolution: {integrity: sha512-8kjivE5xW0qAQ9HX9reVFmZj3t+VmljDLVRJpVBEoTR+3bKMnvC7iLcoSGNIUJGOZy1mLVq7x/gerVg0T+IsYw==} + '@tailwindcss/oxide-linux-arm64-musl@4.1.11': + resolution: {integrity: sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-x64-gnu@4.1.6': - resolution: {integrity: sha512-A4spQhwnWVpjWDLXnOW9PSinO2PTKJQNRmL/aIl2U/O+RARls8doDfs6R41+DAXK0ccacvRyDpR46aVQJJCoCg==} + '@tailwindcss/oxide-linux-x64-gnu@4.1.11': + resolution: {integrity: sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-linux-x64-musl@4.1.6': - resolution: {integrity: sha512-YRee+6ZqdzgiQAHVSLfl3RYmqeeaWVCk796MhXhLQu2kJu2COHBkqlqsqKYx3p8Hmk5pGCQd2jTAoMWWFeyG2A==} + '@tailwindcss/oxide-linux-x64-musl@4.1.11': + resolution: {integrity: sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-wasm32-wasi@4.1.6': - resolution: {integrity: sha512-qAp4ooTYrBQ5pk5jgg54/U1rCJ/9FLYOkkQ/nTE+bVMseMfB6O7J8zb19YTpWuu4UdfRf5zzOrNKfl6T64MNrQ==} + '@tailwindcss/oxide-wasm32-wasi@4.1.11': + resolution: {integrity: sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==} engines: {node: '>=14.0.0'} cpu: [wasm32] bundledDependencies: @@ -912,24 +990,24 @@ packages: - '@emnapi/wasi-threads' - tslib - '@tailwindcss/oxide-win32-arm64-msvc@4.1.6': - resolution: {integrity: sha512-nqpDWk0Xr8ELO/nfRUDjk1pc9wDJ3ObeDdNMHLaymc4PJBWj11gdPCWZFKSK2AVKjJQC7J2EfmSmf47GN7OuLg==} + '@tailwindcss/oxide-win32-arm64-msvc@4.1.11': + resolution: {integrity: sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.1.6': - resolution: {integrity: sha512-5k9xF33xkfKpo9wCvYcegQ21VwIBU1/qEbYlVukfEIyQbEA47uK8AAwS7NVjNE3vHzcmxMYwd0l6L4pPjjm1rQ==} + '@tailwindcss/oxide-win32-x64-msvc@4.1.11': + resolution: {integrity: sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.1.6': - resolution: {integrity: sha512-0bpEBQiGx+227fW4G0fLQ8vuvyy5rsB1YIYNapTq3aRsJ9taF3f5cCaovDjN5pUGKKzcpMrZst/mhNaKAPOHOA==} + '@tailwindcss/oxide@4.1.11': + resolution: {integrity: sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==} engines: {node: '>= 10'} - '@tailwindcss/postcss@4.1.6': - resolution: {integrity: sha512-ELq+gDMBuRXPJlpE3PEen+1MhnHAQQrh2zF0dI1NXOlEWfr2qWf2CQdr5jl9yANv8RErQaQ2l6nIFO9OSCVq/g==} + '@tailwindcss/postcss@4.1.11': + resolution: {integrity: sha512-q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA==} '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -937,8 +1015,8 @@ packages: '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -952,16 +1030,16 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@22.15.12': - resolution: {integrity: sha512-K0fpC/ZVeb8G9rm7bH7vI0KAec4XHEhBam616nVJCV51bKzJ6oA3luG4WdKoaztxe70QaNjS/xBmcDLmr4PiGw==} + '@types/node@24.0.13': + resolution: {integrity: sha512-Qm9OYVOFHFYg3wJoTSrz80hoec5Lia/dPp84do3X7dZvLikQvM1YpmvTBEdIr/e+U8HTkFjLHLnl78K/qjf+jQ==} - '@types/react-dom@19.1.3': - resolution: {integrity: sha512-rJXC08OG0h3W6wDMFxQrZF00Kq6qQvw0djHRdzl3U5DnIERz0MRce3WVc7IS6JYBwtaP/DwYtRRjVlvivNveKg==} + '@types/react-dom@19.1.6': + resolution: {integrity: sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==} peerDependencies: '@types/react': ^19.0.0 - '@types/react@19.1.3': - resolution: {integrity: sha512-dLWQ+Z0CkIvK1J8+wrDPwGxEYFA4RAyHoZPxHVGspYmFVnwGSNT24cGIhFJrtfRnWVuW8X7NO52gCXmhkVUWGQ==} + '@types/react@19.1.8': + resolution: {integrity: sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==} '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} @@ -977,19 +1055,23 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true + algoliasearch@5.32.0: + resolution: {integrity: sha512-84xBncKNPBK8Ae89F65+SyVcOihrIbm/3N7to+GpRBHEUXGjA3ydWTMpcRW6jmFzkBQ/eqYy/y+J+NBpJWYjBg==} + engines: {node: '>= 14.0.0'} + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-hidden@1.2.4: - resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} engines: {node: '>=10'} astring@1.9.0: @@ -999,16 +1081,16 @@ packages: bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} - caniuse-lite@1.0.30001717: - resolution: {integrity: sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==} + camelcase@8.0.0: + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} + engines: {node: '>=16'} + + caniuse-lite@1.0.30001727: + resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1066,10 +1148,6 @@ packages: compute-scroll-into-view@3.1.1: resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==} - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -1078,12 +1156,8 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1091,8 +1165,8 @@ packages: supports-color: optional: true - decode-named-character-reference@1.1.0: - resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} + decode-named-character-reference@1.2.0: + resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} @@ -1108,8 +1182,8 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - enhanced-resolve@5.18.1: - resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + enhanced-resolve@5.18.2: + resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} engines: {node: '>=10.13.0'} esast-util-from-estree@2.0.0: @@ -1118,8 +1192,8 @@ packages: esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild@0.25.4: - resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + esbuild@0.25.6: + resolution: {integrity: sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==} engines: {node: '>=18'} hasBin: true @@ -1163,40 +1237,28 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - - fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - - fs-extra@11.3.0: - resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} - engines: {node: '>=14.14'} + fdir@6.4.6: + resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true - fumadocs-core@15.3.0: - resolution: {integrity: sha512-6+j2qGntJknzQUyes5BQI3U5EE4GCIb1Pi31eAYZ8GLxMP1p1bh8nAyEeW6oZNZmqfstJoVLQNnw+vwuHJJHUw==} + fumadocs-core@15.6.3: + resolution: {integrity: sha512-71IPC6Y0ZLPHlavYormnF1r2uX/lNrTFTYCEh6Akll8hWxRNbKG9Hk4xpFJDTkU83c8eLtHk2iow/ccQkcV6Hw==} peerDependencies: '@oramacloud/client': 1.x.x || 2.x.x - algoliasearch: 4.24.0 + '@types/react': '*' + algoliasearch: 5.x.x next: 14.x.x || 15.x.x react: 18.x.x || 19.x.x react-dom: 18.x.x || 19.x.x peerDependenciesMeta: '@oramacloud/client': optional: true + '@types/react': + optional: true algoliasearch: optional: true next: @@ -1206,25 +1268,35 @@ packages: react-dom: optional: true - fumadocs-mdx@11.6.3: - resolution: {integrity: sha512-R7ca68TDnPwJGx3YhCzIrcZfqo8Buq9k3piZMFV8ydO6gNJijdJ9iyddHi/D3DABfmMrgEL551EFxRsaDUU27A==} + fumadocs-mdx@11.6.11: + resolution: {integrity: sha512-8KPOMU53ujQtNWvmmBpyGb9BRdFXZKS0m0O6udSlXCoLU/VZlQSJE0ntxX1e5JCDVsxPR63jleCVq1c/WXmEVw==} hasBin: true peerDependencies: '@fumadocs/mdx-remote': ^1.2.0 fumadocs-core: ^14.0.0 || ^15.0.0 next: ^15.3.0 + vite: 6.x.x peerDependenciesMeta: '@fumadocs/mdx-remote': optional: true + next: + optional: true + vite: + optional: true - fumadocs-ui@15.3.0: - resolution: {integrity: sha512-jQeaKWD+rGoZMXuH3FA73p6N7f11Lmhyn31bn9Jtl1VdIopq7EaXhseUqw586wSNgGKO3qmfPOXCBvvuu6gDTw==} + fumadocs-ui@15.6.3: + resolution: {integrity: sha512-FN2wpPacoJ6vHhwVZF+tiAezKKqOOy5hpQxBUer0Bda95I7uFyloGF/ilVMrrCSbzd5bt/bKzXRJQwcJAw9vAQ==} peerDependencies: + '@types/react': '*' next: 14.x.x || 15.x.x react: 18.x.x || 19.x.x react-dom: 18.x.x || 19.x.x tailwindcss: ^3.4.14 || ^4.0.0 peerDependenciesMeta: + '@types/react': + optional: true + next: + optional: true tailwindcss: optional: true @@ -1235,14 +1307,6 @@ packages: github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - globby@14.1.0: - resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} - engines: {node: '>=18'} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -1268,10 +1332,6 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} - image-size@2.0.2: resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==} engines: {node: '>=16.x'} @@ -1296,28 +1356,13 @@ packages: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jiti@2.4.2: resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true @@ -1330,75 +1375,72 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - lightningcss-darwin-arm64@1.29.2: - resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.29.2: - resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==} + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.29.2: - resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==} + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.29.2: - resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==} + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.29.2: - resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==} + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.29.2: - resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==} + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-x64-gnu@1.29.2: - resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==} + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.29.2: - resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==} + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-win32-arm64-msvc@1.29.2: - resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==} + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.29.2: - resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==} + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.29.2: - resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} engines: {node: '>= 12.0.0'} lodash.merge@4.6.2: @@ -1411,6 +1453,11 @@ packages: resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} engines: {node: 20 || >=22} + lucide-react@0.525.0: + resolution: {integrity: sha512-Tm1txJ2OkymCGkvwoHt33Y2JpN5xucVq1slHcgE6Lk0WjDfjgKWor5CdVER8U6DvcfMwh4M8XxmpTiyzfmfDYQ==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -1469,10 +1516,6 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -1578,10 +1621,6 @@ packages: micromark@4.0.2: resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -1613,8 +1652,8 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@15.3.2: - resolution: {integrity: sha512-CA3BatMyHkxZ48sgOCLdVHjFU36N7TF1HhqAHLFOkV6buwZnvMI84Cug8xD56B9mCuKrqXnLn94417GrZ/jjCQ==} + next@15.3.5: + resolution: {integrity: sha512-RkazLBMMDJSJ4XZQ81kolSpwiCt907l0xcgcpF4xC2Vml6QVcPNXW0NQRwQ80FFtSn7UM52XN0anaw8TEJXaiw==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -1634,14 +1673,9 @@ packages: sass: optional: true - node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - deprecated: Use your platform's native DOMException instead - - node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-to-yarn@3.0.1: + resolution: {integrity: sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} @@ -1656,20 +1690,16 @@ packages: parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-type@6.0.0: - resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} - engines: {node: '>=18'} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} postcss-selector-parser@7.1.0: resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} @@ -1679,15 +1709,15 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} react-dom@19.1.0: resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} @@ -1710,8 +1740,8 @@ packages: '@types/react': optional: true - react-remove-scroll@2.6.3: - resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==} + react-remove-scroll@2.7.1: + resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} engines: {node: '>=10'} peerDependencies: '@types/react': '*' @@ -1780,12 +1810,8 @@ packages: remark@15.0.1: resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} - reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} scheduler@0.26.0: resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} @@ -1797,33 +1823,24 @@ packages: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} hasBin: true - sharp@0.34.1: - resolution: {integrity: sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + sharp@0.34.3: + resolution: {integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - shiki@3.4.0: - resolution: {integrity: sha512-Ni80XHcqhOEXv5mmDAvf5p6PAJqbUc/RzFeaOqk+zP5DLvTPS3j0ckvA+MI87qoxTQ5RGJDVTbdl/ENLSyyAnQ==} + shiki@3.8.0: + resolution: {integrity: sha512-yPqK0y68t20aakv+3aMTpUMJZd6UHaBY2/SBUDowh9M70gVUwqT0bf7Kz5CWG0AXfHtFvXCHhBBHVAzdp0ILoQ==} simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -1849,11 +1866,11 @@ packages: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} engines: {node: '>=0.10.0'} - style-to-js@1.1.16: - resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==} + style-to-js@1.1.17: + resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==} - style-to-object@1.0.8: - resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} + style-to-object@1.0.9: + resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==} styled-jsx@5.1.6: resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} @@ -1868,23 +1885,26 @@ packages: babel-plugin-macros: optional: true - tailwind-merge@3.3.0: - resolution: {integrity: sha512-fyW/pEfcQSiigd5SNn0nApUOxx0zB/dm6UDU/rEwc2c3sX2smWUNbapHv+QRqLGVp9GWX3THIa7MUGPo+YkDzQ==} + tailwind-merge@3.3.1: + resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} - tailwindcss@4.1.6: - resolution: {integrity: sha512-j0cGLTreM6u4OWzBeLBpycK0WIh8w7kSwcUsQZoGLHZ7xDTdM69lN64AgoIEEwFi0tnhs4wSykUa5YWxAzgFYg==} + tailwindcss@4.1.11: + resolution: {integrity: sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==} - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} engines: {node: '>=6'} tar@7.4.3: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -1900,12 +1920,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - - unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} - engines: {node: '>=18'} + undici-types@7.8.0: + resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -1928,10 +1944,6 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -1961,241 +1973,351 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - yallist@5.0.0: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} + yaml@2.8.0: + resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + engines: {node: '>= 14.6'} + hasBin: true + yocto-queue@1.2.1: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} - zod@3.24.4: - resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + + zod@4.0.5: + resolution: {integrity: sha512-/5UuuRPStvHXu7RS+gmvRf4NXrNxpSllGwDnCBcJZtQsKrviYXm54yDGV2KYNLT5kq0lHGcl7lqWJLgSaG+tgA==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: + '@algolia/client-abtesting@5.32.0': + dependencies: + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 + + '@algolia/client-analytics@5.32.0': + dependencies: + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 + + '@algolia/client-common@5.32.0': {} + + '@algolia/client-insights@5.32.0': + dependencies: + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 + + '@algolia/client-personalization@5.32.0': + dependencies: + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 + + '@algolia/client-query-suggestions@5.32.0': + dependencies: + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 + + '@algolia/client-search@5.32.0': + dependencies: + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 + + '@algolia/ingestion@1.32.0': + dependencies: + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 + + '@algolia/monitoring@1.32.0': + dependencies: + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 + + '@algolia/recommend@5.32.0': + dependencies: + '@algolia/client-common': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 + + '@algolia/requester-browser-xhr@5.32.0': + dependencies: + '@algolia/client-common': 5.32.0 + + '@algolia/requester-fetch@5.32.0': + dependencies: + '@algolia/client-common': 5.32.0 + + '@algolia/requester-node-http@5.32.0': + dependencies: + '@algolia/client-common': 5.32.0 + '@alloc/quick-lru@5.2.0': {} '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 + + '@content-collections/core@0.10.0(typescript@5.8.3)': + dependencies: + '@standard-schema/spec': 1.0.0 + camelcase: 8.0.0 + chokidar: 4.0.3 + esbuild: 0.25.6 + gray-matter: 4.0.3 + p-limit: 6.2.0 + picomatch: 4.0.2 + pluralize: 8.0.0 + serialize-javascript: 6.0.2 + tinyglobby: 0.2.14 + typescript: 5.8.3 + yaml: 2.8.0 + zod: 3.25.76 + + '@content-collections/integrations@0.2.1(@content-collections/core@0.10.0(typescript@5.8.3))': + dependencies: + '@content-collections/core': 0.10.0(typescript@5.8.3) - '@emnapi/runtime@1.4.3': + '@content-collections/next@0.2.6(@content-collections/core@0.10.0(typescript@5.8.3))(next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': + dependencies: + '@content-collections/core': 0.10.0(typescript@5.8.3) + '@content-collections/integrations': 0.2.1(@content-collections/core@0.10.0(typescript@5.8.3)) + next: 15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + + '@emnapi/runtime@1.4.4': dependencies: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.25.4': + '@esbuild/aix-ppc64@0.25.6': + optional: true + + '@esbuild/android-arm64@0.25.6': optional: true - '@esbuild/android-arm64@0.25.4': + '@esbuild/android-arm@0.25.6': optional: true - '@esbuild/android-arm@0.25.4': + '@esbuild/android-x64@0.25.6': optional: true - '@esbuild/android-x64@0.25.4': + '@esbuild/darwin-arm64@0.25.6': optional: true - '@esbuild/darwin-arm64@0.25.4': + '@esbuild/darwin-x64@0.25.6': optional: true - '@esbuild/darwin-x64@0.25.4': + '@esbuild/freebsd-arm64@0.25.6': optional: true - '@esbuild/freebsd-arm64@0.25.4': + '@esbuild/freebsd-x64@0.25.6': optional: true - '@esbuild/freebsd-x64@0.25.4': + '@esbuild/linux-arm64@0.25.6': optional: true - '@esbuild/linux-arm64@0.25.4': + '@esbuild/linux-arm@0.25.6': optional: true - '@esbuild/linux-arm@0.25.4': + '@esbuild/linux-ia32@0.25.6': optional: true - '@esbuild/linux-ia32@0.25.4': + '@esbuild/linux-loong64@0.25.6': optional: true - '@esbuild/linux-loong64@0.25.4': + '@esbuild/linux-mips64el@0.25.6': optional: true - '@esbuild/linux-mips64el@0.25.4': + '@esbuild/linux-ppc64@0.25.6': optional: true - '@esbuild/linux-ppc64@0.25.4': + '@esbuild/linux-riscv64@0.25.6': optional: true - '@esbuild/linux-riscv64@0.25.4': + '@esbuild/linux-s390x@0.25.6': optional: true - '@esbuild/linux-s390x@0.25.4': + '@esbuild/linux-x64@0.25.6': optional: true - '@esbuild/linux-x64@0.25.4': + '@esbuild/netbsd-arm64@0.25.6': optional: true - '@esbuild/netbsd-arm64@0.25.4': + '@esbuild/netbsd-x64@0.25.6': optional: true - '@esbuild/netbsd-x64@0.25.4': + '@esbuild/openbsd-arm64@0.25.6': optional: true - '@esbuild/openbsd-arm64@0.25.4': + '@esbuild/openbsd-x64@0.25.6': optional: true - '@esbuild/openbsd-x64@0.25.4': + '@esbuild/openharmony-arm64@0.25.6': optional: true - '@esbuild/sunos-x64@0.25.4': + '@esbuild/sunos-x64@0.25.6': optional: true - '@esbuild/win32-arm64@0.25.4': + '@esbuild/win32-arm64@0.25.6': optional: true - '@esbuild/win32-ia32@0.25.4': + '@esbuild/win32-ia32@0.25.6': optional: true - '@esbuild/win32-x64@0.25.4': + '@esbuild/win32-x64@0.25.6': optional: true - '@floating-ui/core@1.7.0': + '@floating-ui/core@1.7.2': dependencies: - '@floating-ui/utils': 0.2.9 + '@floating-ui/utils': 0.2.10 - '@floating-ui/dom@1.7.0': + '@floating-ui/dom@1.7.2': dependencies: - '@floating-ui/core': 1.7.0 - '@floating-ui/utils': 0.2.9 + '@floating-ui/core': 1.7.2 + '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@floating-ui/react-dom@2.1.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@floating-ui/dom': 1.7.0 + '@floating-ui/dom': 1.7.2 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@floating-ui/utils@0.2.9': {} + '@floating-ui/utils@0.2.10': {} '@formatjs/intl-localematcher@0.6.1': dependencies: tslib: 2.8.1 - '@img/sharp-darwin-arm64@0.34.1': + '@img/sharp-darwin-arm64@0.34.3': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.1.0 + '@img/sharp-libvips-darwin-arm64': 1.2.0 optional: true - '@img/sharp-darwin-x64@0.34.1': + '@img/sharp-darwin-x64@0.34.3': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.1.0 + '@img/sharp-libvips-darwin-x64': 1.2.0 optional: true - '@img/sharp-libvips-darwin-arm64@1.1.0': + '@img/sharp-libvips-darwin-arm64@1.2.0': optional: true - '@img/sharp-libvips-darwin-x64@1.1.0': + '@img/sharp-libvips-darwin-x64@1.2.0': optional: true - '@img/sharp-libvips-linux-arm64@1.1.0': + '@img/sharp-libvips-linux-arm64@1.2.0': optional: true - '@img/sharp-libvips-linux-arm@1.1.0': + '@img/sharp-libvips-linux-arm@1.2.0': optional: true - '@img/sharp-libvips-linux-ppc64@1.1.0': + '@img/sharp-libvips-linux-ppc64@1.2.0': optional: true - '@img/sharp-libvips-linux-s390x@1.1.0': + '@img/sharp-libvips-linux-s390x@1.2.0': optional: true - '@img/sharp-libvips-linux-x64@1.1.0': + '@img/sharp-libvips-linux-x64@1.2.0': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.1.0': + '@img/sharp-libvips-linuxmusl-arm64@1.2.0': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.1.0': + '@img/sharp-libvips-linuxmusl-x64@1.2.0': optional: true - '@img/sharp-linux-arm64@0.34.1': + '@img/sharp-linux-arm64@0.34.3': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.1.0 + '@img/sharp-libvips-linux-arm64': 1.2.0 optional: true - '@img/sharp-linux-arm@0.34.1': + '@img/sharp-linux-arm@0.34.3': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.1.0 + '@img/sharp-libvips-linux-arm': 1.2.0 optional: true - '@img/sharp-linux-s390x@0.34.1': + '@img/sharp-linux-ppc64@0.34.3': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.1.0 + '@img/sharp-libvips-linux-ppc64': 1.2.0 optional: true - '@img/sharp-linux-x64@0.34.1': + '@img/sharp-linux-s390x@0.34.3': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.1.0 + '@img/sharp-libvips-linux-s390x': 1.2.0 optional: true - '@img/sharp-linuxmusl-arm64@0.34.1': + '@img/sharp-linux-x64@0.34.3': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 + '@img/sharp-libvips-linux-x64': 1.2.0 optional: true - '@img/sharp-linuxmusl-x64@0.34.1': + '@img/sharp-linuxmusl-arm64@0.34.3': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.1.0 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.0 optional: true - '@img/sharp-wasm32@0.34.1': + '@img/sharp-linuxmusl-x64@0.34.3': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.0 + optional: true + + '@img/sharp-wasm32@0.34.3': dependencies: - '@emnapi/runtime': 1.4.3 + '@emnapi/runtime': 1.4.4 optional: true - '@img/sharp-win32-ia32@0.34.1': + '@img/sharp-win32-arm64@0.34.3': optional: true - '@img/sharp-win32-x64@0.34.1': + '@img/sharp-win32-ia32@0.34.3': + optional: true + + '@img/sharp-win32-x64@0.34.3': optional: true '@isaacs/fs-minipass@4.0.1': dependencies: minipass: 7.1.2 - '@jridgewell/gen-mapping@0.3.8': + '@jridgewell/gen-mapping@0.3.12': dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/trace-mapping': 0.3.29 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/sourcemap-codec@1.5.4': {} - '@jridgewell/trace-mapping@0.3.25': + '@jridgewell/trace-mapping@0.3.29': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.4 - '@mdx-js/mdx@3.1.0(acorn@8.14.1)': + '@mdx-js/mdx@3.1.0(acorn@8.15.0)': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 @@ -2207,7 +2329,7 @@ snapshots: hast-util-to-jsx-runtime: 2.3.6 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 - recma-jsx: 1.0.0(acorn@8.14.1) + recma-jsx: 1.0.0(acorn@8.15.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 remark-mdx: 3.1.0 @@ -2223,444 +2345,434 @@ snapshots: - acorn - supports-color - '@next/env@15.3.2': {} + '@next/env@15.3.5': {} - '@next/swc-darwin-arm64@15.3.2': + '@next/swc-darwin-arm64@15.3.5': optional: true - '@next/swc-darwin-x64@15.3.2': + '@next/swc-darwin-x64@15.3.5': optional: true - '@next/swc-linux-arm64-gnu@15.3.2': + '@next/swc-linux-arm64-gnu@15.3.5': optional: true - '@next/swc-linux-arm64-musl@15.3.2': + '@next/swc-linux-arm64-musl@15.3.5': optional: true - '@next/swc-linux-x64-gnu@15.3.2': + '@next/swc-linux-x64-gnu@15.3.5': optional: true - '@next/swc-linux-x64-musl@15.3.2': + '@next/swc-linux-x64-musl@15.3.5': optional: true - '@next/swc-win32-arm64-msvc@15.3.2': + '@next/swc-win32-arm64-msvc@15.3.5': optional: true - '@next/swc-win32-x64-msvc@15.3.2': + '@next/swc-win32-x64-msvc@15.3.5': optional: true - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} + '@orama/orama@3.1.11': {} - '@nodelib/fs.walk@1.2.8': + '@orama/tokenizers@3.1.11': dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 - - '@orama/orama@3.1.6': {} + '@orama/orama': 3.1.11 '@radix-ui/number@1.1.1': {} '@radix-ui/primitive@1.1.2': {} - '@radix-ui/react-accordion@1.2.10(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-accordion@1.2.11(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collapsible': 1.1.10(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-collection': 1.1.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-collapsible': 1.1.11(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) - '@radix-ui/react-arrow@1.1.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) - '@radix-ui/react-collapsible@1.1.10(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-collapsible@1.1.11(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) - '@radix-ui/react-collection@1.1.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.2(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.3)(react@19.1.0)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.8)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - '@radix-ui/react-context@1.1.2(@types/react@19.1.3)(react@19.1.0)': + '@radix-ui/react-context@1.1.2(@types/react@19.1.8)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - '@radix-ui/react-dialog@1.1.13(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dialog@1.1.14(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-portal': 1.1.8(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.3)(react@19.1.0) - aria-hidden: 1.2.4 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + aria-hidden: 1.2.6 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.6.3(@types/react@19.1.3)(react@19.1.0) + react-remove-scroll: 2.7.1(@types/react@19.1.8)(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) - '@radix-ui/react-direction@1.1.1(@types/react@19.1.3)(react@19.1.0)': + '@radix-ui/react-direction@1.1.1(@types/react@19.1.8)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - '@radix-ui/react-dismissable-layer@1.1.9(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dismissable-layer@1.1.10(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) - '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.3)(react@19.1.0)': + '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.8)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - '@radix-ui/react-focus-scope@1.1.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) - '@radix-ui/react-id@1.1.1(@types/react@19.1.3)(react@19.1.0)': + '@radix-ui/react-id@1.1.1(@types/react@19.1.8)(react@19.1.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - '@radix-ui/react-navigation-menu@1.2.12(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-navigation-menu@1.2.13(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) - '@radix-ui/react-popover@1.1.13(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-popover@1.1.14(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.9(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-popper': 1.2.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.8(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.3)(react@19.1.0) - aria-hidden: 1.2.4 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + aria-hidden: 1.2.6 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.6.3(@types/react@19.1.3)(react@19.1.0) + react-remove-scroll: 2.7.1(@types/react@19.1.8)(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) - - '@radix-ui/react-popper@1.2.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-arrow': 1.1.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.3)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + + '@radix-ui/react-popper@1.2.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@floating-ui/react-dom': 2.1.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.8)(react@19.1.0) '@radix-ui/rect': 1.1.1 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) - '@radix-ui/react-portal@1.1.8(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) - '@radix-ui/react-presence@1.1.4(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-presence@1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) - '@radix-ui/react-primitive@2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-slot': 1.2.2(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) - '@radix-ui/react-roving-focus@1.1.9(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-roving-focus@1.1.10(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) - '@radix-ui/react-scroll-area@1.2.8(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-scroll-area@1.2.9(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) - '@radix-ui/react-slot@1.2.2(@types/react@19.1.3)(react@19.1.0)': + '@radix-ui/react-slot@1.2.3(@types/react@19.1.8)(react@19.1.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - '@radix-ui/react-tabs@1.1.11(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-tabs@1.1.12(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-context': 1.1.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.9(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.10(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.3)(react@19.1.0)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.8)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.3)(react@19.1.0)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.8)(react@19.1.0)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.3)(react@19.1.0)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.8)(react@19.1.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.3)(react@19.1.0)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.8)(react@19.1.0)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.3)(react@19.1.0)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.8)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.3)(react@19.1.0)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.8)(react@19.1.0)': dependencies: react: 19.1.0 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.3)(react@19.1.0)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.8)(react@19.1.0)': dependencies: '@radix-ui/rect': 1.1.1 react: 19.1.0 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - '@radix-ui/react-use-size@1.1.1(@types/react@19.1.3)(react@19.1.0)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.1.8)(react@19.1.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.3)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) react: 19.1.0 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - '@radix-ui/react-visually-hidden@1.2.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@radix-ui/react-primitive': 2.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 - '@types/react-dom': 19.1.3(@types/react@19.1.3) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) '@radix-ui/rect@1.1.1': {} - '@shikijs/core@3.4.0': + '@shikijs/core@3.8.0': dependencies: - '@shikijs/types': 3.4.0 + '@shikijs/types': 3.8.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.4.0': + '@shikijs/engine-javascript@3.8.0': dependencies: - '@shikijs/types': 3.4.0 + '@shikijs/types': 3.8.0 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.3 - '@shikijs/engine-oniguruma@3.4.0': + '@shikijs/engine-oniguruma@3.8.0': dependencies: - '@shikijs/types': 3.4.0 + '@shikijs/types': 3.8.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.4.0': + '@shikijs/langs@3.8.0': dependencies: - '@shikijs/types': 3.4.0 + '@shikijs/types': 3.8.0 - '@shikijs/rehype@3.4.0': + '@shikijs/rehype@3.8.0': dependencies: - '@shikijs/types': 3.4.0 + '@shikijs/types': 3.8.0 '@types/hast': 3.0.4 hast-util-to-string: 3.0.1 - shiki: 3.4.0 + shiki: 3.8.0 unified: 11.0.5 unist-util-visit: 5.0.0 - '@shikijs/themes@3.4.0': + '@shikijs/themes@3.8.0': dependencies: - '@shikijs/types': 3.4.0 + '@shikijs/types': 3.8.0 - '@shikijs/transformers@3.4.0': + '@shikijs/transformers@3.8.0': dependencies: - '@shikijs/core': 3.4.0 - '@shikijs/types': 3.4.0 + '@shikijs/core': 3.8.0 + '@shikijs/types': 3.8.0 - '@shikijs/types@3.4.0': + '@shikijs/types@3.8.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 '@shikijs/vscode-textmate@10.0.2': {} - '@sindresorhus/merge-streams@2.3.0': {} - '@standard-schema/spec@1.0.0': {} '@swc/counter@0.1.3': {} @@ -2669,77 +2781,77 @@ snapshots: dependencies: tslib: 2.8.1 - '@tailwindcss/node@4.1.6': + '@tailwindcss/node@4.1.11': dependencies: '@ampproject/remapping': 2.3.0 - enhanced-resolve: 5.18.1 + enhanced-resolve: 5.18.2 jiti: 2.4.2 - lightningcss: 1.29.2 + lightningcss: 1.30.1 magic-string: 0.30.17 source-map-js: 1.2.1 - tailwindcss: 4.1.6 + tailwindcss: 4.1.11 - '@tailwindcss/oxide-android-arm64@4.1.6': + '@tailwindcss/oxide-android-arm64@4.1.11': optional: true - '@tailwindcss/oxide-darwin-arm64@4.1.6': + '@tailwindcss/oxide-darwin-arm64@4.1.11': optional: true - '@tailwindcss/oxide-darwin-x64@4.1.6': + '@tailwindcss/oxide-darwin-x64@4.1.11': optional: true - '@tailwindcss/oxide-freebsd-x64@4.1.6': + '@tailwindcss/oxide-freebsd-x64@4.1.11': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.6': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.1.6': + '@tailwindcss/oxide-linux-arm64-gnu@4.1.11': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.1.6': + '@tailwindcss/oxide-linux-arm64-musl@4.1.11': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.1.6': + '@tailwindcss/oxide-linux-x64-gnu@4.1.11': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.1.6': + '@tailwindcss/oxide-linux-x64-musl@4.1.11': optional: true - '@tailwindcss/oxide-wasm32-wasi@4.1.6': + '@tailwindcss/oxide-wasm32-wasi@4.1.11': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.1.6': + '@tailwindcss/oxide-win32-arm64-msvc@4.1.11': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.1.6': + '@tailwindcss/oxide-win32-x64-msvc@4.1.11': optional: true - '@tailwindcss/oxide@4.1.6': + '@tailwindcss/oxide@4.1.11': dependencies: detect-libc: 2.0.4 tar: 7.4.3 optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.1.6 - '@tailwindcss/oxide-darwin-arm64': 4.1.6 - '@tailwindcss/oxide-darwin-x64': 4.1.6 - '@tailwindcss/oxide-freebsd-x64': 4.1.6 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.6 - '@tailwindcss/oxide-linux-arm64-gnu': 4.1.6 - '@tailwindcss/oxide-linux-arm64-musl': 4.1.6 - '@tailwindcss/oxide-linux-x64-gnu': 4.1.6 - '@tailwindcss/oxide-linux-x64-musl': 4.1.6 - '@tailwindcss/oxide-wasm32-wasi': 4.1.6 - '@tailwindcss/oxide-win32-arm64-msvc': 4.1.6 - '@tailwindcss/oxide-win32-x64-msvc': 4.1.6 - - '@tailwindcss/postcss@4.1.6': + '@tailwindcss/oxide-android-arm64': 4.1.11 + '@tailwindcss/oxide-darwin-arm64': 4.1.11 + '@tailwindcss/oxide-darwin-x64': 4.1.11 + '@tailwindcss/oxide-freebsd-x64': 4.1.11 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.11 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.11 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.11 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.11 + '@tailwindcss/oxide-linux-x64-musl': 4.1.11 + '@tailwindcss/oxide-wasm32-wasi': 4.1.11 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.11 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.11 + + '@tailwindcss/postcss@4.1.11': dependencies: '@alloc/quick-lru': 5.2.0 - '@tailwindcss/node': 4.1.6 - '@tailwindcss/oxide': 4.1.6 - postcss: 8.5.3 - tailwindcss: 4.1.6 + '@tailwindcss/node': 4.1.11 + '@tailwindcss/oxide': 4.1.11 + postcss: 8.5.6 + tailwindcss: 4.1.11 '@types/debug@4.1.12': dependencies: @@ -2747,9 +2859,9 @@ snapshots: '@types/estree-jsx@1.0.5': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 - '@types/estree@1.0.7': {} + '@types/estree@1.0.8': {} '@types/hast@3.0.4': dependencies: @@ -2763,15 +2875,15 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@22.15.12': + '@types/node@24.0.13': dependencies: - undici-types: 6.21.0 + undici-types: 7.8.0 - '@types/react-dom@19.1.3(@types/react@19.1.3)': + '@types/react-dom@19.1.6(@types/react@19.1.8)': dependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - '@types/react@19.1.3': + '@types/react@19.1.8': dependencies: csstype: 3.1.3 @@ -2781,11 +2893,27 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - acorn-jsx@5.3.2(acorn@8.14.1): + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - acorn: 8.14.1 + acorn: 8.15.0 - acorn@8.14.1: {} + acorn@8.15.0: {} + + algoliasearch@5.32.0: + dependencies: + '@algolia/client-abtesting': 5.32.0 + '@algolia/client-analytics': 5.32.0 + '@algolia/client-common': 5.32.0 + '@algolia/client-insights': 5.32.0 + '@algolia/client-personalization': 5.32.0 + '@algolia/client-query-suggestions': 5.32.0 + '@algolia/client-search': 5.32.0 + '@algolia/ingestion': 1.32.0 + '@algolia/monitoring': 1.32.0 + '@algolia/recommend': 5.32.0 + '@algolia/requester-browser-xhr': 5.32.0 + '@algolia/requester-fetch': 5.32.0 + '@algolia/requester-node-http': 5.32.0 argparse@1.0.10: dependencies: @@ -2793,7 +2921,7 @@ snapshots: argparse@2.0.1: {} - aria-hidden@1.2.4: + aria-hidden@1.2.6: dependencies: tslib: 2.8.1 @@ -2801,15 +2929,13 @@ snapshots: bail@2.0.2: {} - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - busboy@1.6.0: dependencies: streamsearch: 1.1.0 - caniuse-lite@1.0.30001717: {} + camelcase@8.0.0: {} + + caniuse-lite@1.0.30001727: {} ccount@2.0.1: {} @@ -2861,23 +2987,15 @@ snapshots: compute-scroll-into-view@3.1.1: {} - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - cssesc@3.0.0: {} csstype@3.1.3: {} - data-uri-to-buffer@4.0.1: {} - - debug@4.4.0: + debug@4.4.1: dependencies: ms: 2.1.3 - decode-named-character-reference@1.1.0: + decode-named-character-reference@1.2.0: dependencies: character-entities: 2.0.2 @@ -2891,10 +3009,10 @@ snapshots: dependencies: dequal: 2.0.3 - enhanced-resolve@5.18.1: + enhanced-resolve@5.18.2: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.1 + tapable: 2.2.2 esast-util-from-estree@2.0.0: dependencies: @@ -2906,37 +3024,38 @@ snapshots: esast-util-from-js@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 - acorn: 8.14.1 + acorn: 8.15.0 esast-util-from-estree: 2.0.0 vfile-message: 4.0.2 - esbuild@0.25.4: + esbuild@0.25.6: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.4 - '@esbuild/android-arm': 0.25.4 - '@esbuild/android-arm64': 0.25.4 - '@esbuild/android-x64': 0.25.4 - '@esbuild/darwin-arm64': 0.25.4 - '@esbuild/darwin-x64': 0.25.4 - '@esbuild/freebsd-arm64': 0.25.4 - '@esbuild/freebsd-x64': 0.25.4 - '@esbuild/linux-arm': 0.25.4 - '@esbuild/linux-arm64': 0.25.4 - '@esbuild/linux-ia32': 0.25.4 - '@esbuild/linux-loong64': 0.25.4 - '@esbuild/linux-mips64el': 0.25.4 - '@esbuild/linux-ppc64': 0.25.4 - '@esbuild/linux-riscv64': 0.25.4 - '@esbuild/linux-s390x': 0.25.4 - '@esbuild/linux-x64': 0.25.4 - '@esbuild/netbsd-arm64': 0.25.4 - '@esbuild/netbsd-x64': 0.25.4 - '@esbuild/openbsd-arm64': 0.25.4 - '@esbuild/openbsd-x64': 0.25.4 - '@esbuild/sunos-x64': 0.25.4 - '@esbuild/win32-arm64': 0.25.4 - '@esbuild/win32-ia32': 0.25.4 - '@esbuild/win32-x64': 0.25.4 + '@esbuild/aix-ppc64': 0.25.6 + '@esbuild/android-arm': 0.25.6 + '@esbuild/android-arm64': 0.25.6 + '@esbuild/android-x64': 0.25.6 + '@esbuild/darwin-arm64': 0.25.6 + '@esbuild/darwin-x64': 0.25.6 + '@esbuild/freebsd-arm64': 0.25.6 + '@esbuild/freebsd-x64': 0.25.6 + '@esbuild/linux-arm': 0.25.6 + '@esbuild/linux-arm64': 0.25.6 + '@esbuild/linux-ia32': 0.25.6 + '@esbuild/linux-loong64': 0.25.6 + '@esbuild/linux-mips64el': 0.25.6 + '@esbuild/linux-ppc64': 0.25.6 + '@esbuild/linux-riscv64': 0.25.6 + '@esbuild/linux-s390x': 0.25.6 + '@esbuild/linux-x64': 0.25.6 + '@esbuild/netbsd-arm64': 0.25.6 + '@esbuild/netbsd-x64': 0.25.6 + '@esbuild/openbsd-arm64': 0.25.6 + '@esbuild/openbsd-x64': 0.25.6 + '@esbuild/openharmony-arm64': 0.25.6 + '@esbuild/sunos-x64': 0.25.6 + '@esbuild/win32-arm64': 0.25.6 + '@esbuild/win32-ia32': 0.25.6 + '@esbuild/win32-x64': 0.25.6 escape-string-regexp@5.0.0: {} @@ -2944,7 +3063,7 @@ snapshots: estree-util-attach-comments@3.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-build-jsx@3.0.1: dependencies: @@ -2957,7 +3076,7 @@ snapshots: estree-util-scope@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 estree-util-to-js@2.0.0: @@ -2968,7 +3087,7 @@ snapshots: estree-util-value-to-estree@3.4.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-visit@2.0.0: dependencies: @@ -2977,7 +3096,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 extend-shallow@2.0.1: dependencies: @@ -2985,111 +3104,87 @@ snapshots: extend@3.0.2: {} - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fastq@1.19.1: - dependencies: - reusify: 1.1.0 - - fetch-blob@3.2.0: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.3 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - formdata-polyfill@4.0.10: - dependencies: - fetch-blob: 3.2.0 - - fs-extra@11.3.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 + fdir@6.4.6(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 - fumadocs-core@15.3.0(@types/react@19.1.3)(next@15.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + fumadocs-core@15.6.3(@types/react@19.1.8)(algoliasearch@5.32.0)(next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: '@formatjs/intl-localematcher': 0.6.1 - '@orama/orama': 3.1.6 - '@shikijs/rehype': 3.4.0 - '@shikijs/transformers': 3.4.0 + '@orama/orama': 3.1.11 + '@shikijs/rehype': 3.8.0 + '@shikijs/transformers': 3.8.0 github-slugger: 2.0.0 hast-util-to-estree: 3.1.3 hast-util-to-jsx-runtime: 2.3.6 image-size: 2.0.2 negotiator: 1.0.0 - react-remove-scroll: 2.6.3(@types/react@19.1.3)(react@19.1.0) + npm-to-yarn: 3.0.1 + react-remove-scroll: 2.7.1(@types/react@19.1.8)(react@19.1.0) remark: 15.0.1 remark-gfm: 4.0.1 + remark-rehype: 11.1.2 scroll-into-view-if-needed: 3.1.0 - shiki: 3.4.0 + shiki: 3.8.0 unist-util-visit: 5.0.0 optionalDependencies: - next: 15.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@types/react': 19.1.8 + algoliasearch: 5.32.0 + next: 15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) transitivePeerDependencies: - - '@types/react' - supports-color - fumadocs-mdx@11.6.3(acorn@8.14.1)(fumadocs-core@15.3.0(@types/react@19.1.3)(next@15.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(next@15.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)): + fumadocs-mdx@11.6.11(acorn@8.15.0)(fumadocs-core@15.6.3(@types/react@19.1.8)(algoliasearch@5.32.0)(next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0)): dependencies: - '@mdx-js/mdx': 3.1.0(acorn@8.14.1) + '@mdx-js/mdx': 3.1.0(acorn@8.15.0) '@standard-schema/spec': 1.0.0 chokidar: 4.0.3 - cross-spawn: 7.0.6 - esbuild: 0.25.4 + esbuild: 0.25.6 estree-util-value-to-estree: 3.4.0 - fast-glob: 3.3.3 - fumadocs-core: 15.3.0(@types/react@19.1.3)(next@15.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - gray-matter: 4.0.3 + fumadocs-core: 15.6.3(@types/react@19.1.8)(algoliasearch@5.32.0)(next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) js-yaml: 4.1.0 lru-cache: 11.1.0 - next: 15.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) picocolors: 1.1.1 + tinyexec: 1.0.1 + tinyglobby: 0.2.14 unist-util-visit: 5.0.0 - zod: 3.24.4 + zod: 4.0.5 + optionalDependencies: + next: 15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) transitivePeerDependencies: - acorn - supports-color - fumadocs-ui@15.3.0(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(next@15.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.1.6): - dependencies: - '@radix-ui/react-accordion': 1.2.10(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-collapsible': 1.1.10(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-dialog': 1.1.13(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-navigation-menu': 1.2.12(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-popover': 1.1.13(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-scroll-area': 1.2.8(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.2(@types/react@19.1.3)(react@19.1.0) - '@radix-ui/react-tabs': 1.1.11(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + fumadocs-ui@15.6.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(algoliasearch@5.32.0)(next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.1.11): + dependencies: + '@radix-ui/react-accordion': 1.2.11(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-collapsible': 1.1.11(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-dialog': 1.1.14(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-navigation-menu': 1.2.13(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-popover': 1.1.14(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-scroll-area': 1.2.9(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-tabs': 1.1.12(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) class-variance-authority: 0.7.1 - fumadocs-core: 15.3.0(@types/react@19.1.3)(next@15.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + fumadocs-core: 15.6.3(@types/react@19.1.8)(algoliasearch@5.32.0)(next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) lodash.merge: 4.6.2 - next: 15.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next-themes: 0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) postcss-selector-parser: 7.1.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) react-medium-image-zoom: 5.2.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react-remove-scroll: 2.6.3(@types/react@19.1.3)(react@19.1.0) - tailwind-merge: 3.3.0 + scroll-into-view-if-needed: 3.1.0 + tailwind-merge: 3.3.1 optionalDependencies: - tailwindcss: 4.1.6 + '@types/react': 19.1.8 + next: 15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + tailwindcss: 4.1.11 transitivePeerDependencies: - '@oramacloud/client' - - '@types/react' - '@types/react-dom' - algoliasearch - supports-color @@ -3098,19 +3193,6 @@ snapshots: github-slugger@2.0.0: {} - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - globby@14.1.0: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.3 - ignore: 7.0.5 - path-type: 6.0.0 - slash: 5.1.0 - unicorn-magic: 0.3.0 - graceful-fs@4.2.11: {} gray-matter@4.0.3: @@ -3122,7 +3204,7 @@ snapshots: hast-util-to-estree@3.1.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -3135,7 +3217,7 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.16 + style-to-js: 1.1.17 unist-util-position: 5.0.0 zwitch: 2.0.4 transitivePeerDependencies: @@ -3157,7 +3239,7 @@ snapshots: hast-util-to-jsx-runtime@2.3.6: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/hast': 3.0.4 '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 @@ -3169,7 +3251,7 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.16 + style-to-js: 1.1.17 unist-util-position: 5.0.0 vfile-message: 4.0.2 transitivePeerDependencies: @@ -3185,8 +3267,6 @@ snapshots: html-void-elements@3.0.0: {} - ignore@7.0.5: {} - image-size@2.0.2: {} inline-style-parser@0.2.4: {} @@ -3205,20 +3285,10 @@ snapshots: is-extendable@0.1.1: {} - is-extglob@2.1.1: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - is-hexadecimal@2.0.1: {} - is-number@7.0.0: {} - is-plain-obj@4.1.0: {} - isexe@2.0.0: {} - jiti@2.4.2: {} js-yaml@3.14.1: @@ -3230,58 +3300,52 @@ snapshots: dependencies: argparse: 2.0.1 - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - kind-of@6.0.3: {} - lightningcss-darwin-arm64@1.29.2: + lightningcss-darwin-arm64@1.30.1: optional: true - lightningcss-darwin-x64@1.29.2: + lightningcss-darwin-x64@1.30.1: optional: true - lightningcss-freebsd-x64@1.29.2: + lightningcss-freebsd-x64@1.30.1: optional: true - lightningcss-linux-arm-gnueabihf@1.29.2: + lightningcss-linux-arm-gnueabihf@1.30.1: optional: true - lightningcss-linux-arm64-gnu@1.29.2: + lightningcss-linux-arm64-gnu@1.30.1: optional: true - lightningcss-linux-arm64-musl@1.29.2: + lightningcss-linux-arm64-musl@1.30.1: optional: true - lightningcss-linux-x64-gnu@1.29.2: + lightningcss-linux-x64-gnu@1.30.1: optional: true - lightningcss-linux-x64-musl@1.29.2: + lightningcss-linux-x64-musl@1.30.1: optional: true - lightningcss-win32-arm64-msvc@1.29.2: + lightningcss-win32-arm64-msvc@1.30.1: optional: true - lightningcss-win32-x64-msvc@1.29.2: + lightningcss-win32-x64-msvc@1.30.1: optional: true - lightningcss@1.29.2: + lightningcss@1.30.1: dependencies: detect-libc: 2.0.4 optionalDependencies: - lightningcss-darwin-arm64: 1.29.2 - lightningcss-darwin-x64: 1.29.2 - lightningcss-freebsd-x64: 1.29.2 - lightningcss-linux-arm-gnueabihf: 1.29.2 - lightningcss-linux-arm64-gnu: 1.29.2 - lightningcss-linux-arm64-musl: 1.29.2 - lightningcss-linux-x64-gnu: 1.29.2 - lightningcss-linux-x64-musl: 1.29.2 - lightningcss-win32-arm64-msvc: 1.29.2 - lightningcss-win32-x64-msvc: 1.29.2 + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 lodash.merge@4.6.2: {} @@ -3289,9 +3353,13 @@ snapshots: lru-cache@11.1.0: {} + lucide-react@0.525.0(react@19.1.0): + dependencies: + react: 19.1.0 + magic-string@0.30.17: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.4 markdown-extensions@2.0.0: {} @@ -3308,7 +3376,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 - decode-named-character-reference: 1.1.0 + decode-named-character-reference: 1.2.0 devlop: 1.1.0 mdast-util-to-string: 4.0.0 micromark: 4.0.2 @@ -3460,11 +3528,9 @@ snapshots: dependencies: '@types/mdast': 4.0.4 - merge2@1.4.1: {} - micromark-core-commonmark@2.0.3: dependencies: - decode-named-character-reference: 1.1.0 + decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-factory-destination: 2.0.1 micromark-factory-label: 2.0.1 @@ -3541,7 +3607,7 @@ snapshots: micromark-extension-mdx-expression@3.0.1: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 micromark-factory-mdx-expression: 2.0.3 micromark-factory-space: 2.0.1 @@ -3552,7 +3618,7 @@ snapshots: micromark-extension-mdx-jsx@3.0.2: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 micromark-factory-mdx-expression: 2.0.3 @@ -3569,7 +3635,7 @@ snapshots: micromark-extension-mdxjs-esm@3.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-util-character: 2.1.1 @@ -3581,8 +3647,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) micromark-extension-mdx-expression: 3.0.1 micromark-extension-mdx-jsx: 3.0.2 micromark-extension-mdx-md: 2.0.0 @@ -3605,7 +3671,7 @@ snapshots: micromark-factory-mdx-expression@2.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 devlop: 1.1.0 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 @@ -3660,7 +3726,7 @@ snapshots: micromark-util-decode-string@2.0.1: dependencies: - decode-named-character-reference: 1.1.0 + decode-named-character-reference: 1.2.0 micromark-util-character: 2.1.1 micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-symbol: 2.0.1 @@ -3669,7 +3735,7 @@ snapshots: micromark-util-events-to-acorn@2.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 @@ -3707,8 +3773,8 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.0 - decode-named-character-reference: 1.1.0 + debug: 4.4.1 + decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-factory-space: 2.0.1 @@ -3726,11 +3792,6 @@ snapshots: transitivePeerDependencies: - supports-color - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - minipass@7.1.2: {} minizlib@3.0.2: @@ -3750,38 +3811,32 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - next@15.3.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@next/env': 15.3.2 + '@next/env': 15.3.5 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 - caniuse-lite: 1.0.30001717 + caniuse-lite: 1.0.30001727 postcss: 8.4.31 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) styled-jsx: 5.1.6(react@19.1.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.3.2 - '@next/swc-darwin-x64': 15.3.2 - '@next/swc-linux-arm64-gnu': 15.3.2 - '@next/swc-linux-arm64-musl': 15.3.2 - '@next/swc-linux-x64-gnu': 15.3.2 - '@next/swc-linux-x64-musl': 15.3.2 - '@next/swc-win32-arm64-msvc': 15.3.2 - '@next/swc-win32-x64-msvc': 15.3.2 - sharp: 0.34.1 + '@next/swc-darwin-arm64': 15.3.5 + '@next/swc-darwin-x64': 15.3.5 + '@next/swc-linux-arm64-gnu': 15.3.5 + '@next/swc-linux-arm64-musl': 15.3.5 + '@next/swc-linux-x64-gnu': 15.3.5 + '@next/swc-linux-x64-musl': 15.3.5 + '@next/swc-win32-arm64-msvc': 15.3.5 + '@next/swc-win32-x64-msvc': 15.3.5 + sharp: 0.34.3 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - node-domexception@1.0.0: {} - - node-fetch@3.3.2: - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 + npm-to-yarn@3.0.1: {} oniguruma-parser@0.12.1: {} @@ -3800,18 +3855,16 @@ snapshots: '@types/unist': 2.0.11 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.1.0 + decode-named-character-reference: 1.2.0 is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - path-key@3.1.1: {} - - path-type@6.0.0: {} - picocolors@1.1.1: {} - picomatch@2.3.1: {} + picomatch@4.0.2: {} + + pluralize@8.0.0: {} postcss-selector-parser@7.1.0: dependencies: @@ -3824,7 +3877,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.3: + postcss@8.5.6: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -3832,7 +3885,9 @@ snapshots: property-information@7.1.0: {} - queue-microtask@1.2.3: {} + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 react-dom@19.1.0(react@19.1.0): dependencies: @@ -3844,32 +3899,32 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - react-remove-scroll-bar@2.3.8(@types/react@19.1.3)(react@19.1.0): + react-remove-scroll-bar@2.3.8(@types/react@19.1.8)(react@19.1.0): dependencies: react: 19.1.0 - react-style-singleton: 2.2.3(@types/react@19.1.3)(react@19.1.0) + react-style-singleton: 2.2.3(@types/react@19.1.8)(react@19.1.0) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - react-remove-scroll@2.6.3(@types/react@19.1.3)(react@19.1.0): + react-remove-scroll@2.7.1(@types/react@19.1.8)(react@19.1.0): dependencies: react: 19.1.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.1.3)(react@19.1.0) - react-style-singleton: 2.2.3(@types/react@19.1.3)(react@19.1.0) + react-remove-scroll-bar: 2.3.8(@types/react@19.1.8)(react@19.1.0) + react-style-singleton: 2.2.3(@types/react@19.1.8)(react@19.1.0) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.1.3)(react@19.1.0) - use-sidecar: 1.1.3(@types/react@19.1.3)(react@19.1.0) + use-callback-ref: 1.3.3(@types/react@19.1.8)(react@19.1.0) + use-sidecar: 1.1.3(@types/react@19.1.8)(react@19.1.0) optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - react-style-singleton@2.2.3(@types/react@19.1.3)(react@19.1.0): + react-style-singleton@2.2.3(@types/react@19.1.8)(react@19.1.0): dependencies: get-nonce: 1.0.1 react: 19.1.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 react@19.1.0: {} @@ -3877,13 +3932,13 @@ snapshots: recma-build-jsx@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-build-jsx: 3.0.1 vfile: 6.0.3 - recma-jsx@1.0.0(acorn@8.14.1): + recma-jsx@1.0.0(acorn@8.15.0): dependencies: - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn-jsx: 5.3.2(acorn@8.15.0) estree-util-to-js: 2.0.0 recma-parse: 1.0.0 recma-stringify: 1.0.0 @@ -3893,14 +3948,14 @@ snapshots: recma-parse@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 esast-util-from-js: 2.0.1 unified: 11.0.5 vfile: 6.0.3 recma-stringify@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-util-to-js: 2.0.0 unified: 11.0.5 vfile: 6.0.3 @@ -3917,7 +3972,7 @@ snapshots: rehype-recma@1.0.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/hast': 3.0.4 hast-util-to-estree: 3.1.3 transitivePeerDependencies: @@ -3973,11 +4028,7 @@ snapshots: transitivePeerDependencies: - supports-color - reusify@1.1.0: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 + safe-buffer@5.2.1: {} scheduler@0.26.0: {} @@ -3990,51 +4041,51 @@ snapshots: extend-shallow: 2.0.1 kind-of: 6.0.3 - semver@7.7.1: + semver@7.7.2: optional: true - sharp@0.34.1: + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + sharp@0.34.3: dependencies: color: 4.2.3 detect-libc: 2.0.4 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.1 - '@img/sharp-darwin-x64': 0.34.1 - '@img/sharp-libvips-darwin-arm64': 1.1.0 - '@img/sharp-libvips-darwin-x64': 1.1.0 - '@img/sharp-libvips-linux-arm': 1.1.0 - '@img/sharp-libvips-linux-arm64': 1.1.0 - '@img/sharp-libvips-linux-ppc64': 1.1.0 - '@img/sharp-libvips-linux-s390x': 1.1.0 - '@img/sharp-libvips-linux-x64': 1.1.0 - '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 - '@img/sharp-libvips-linuxmusl-x64': 1.1.0 - '@img/sharp-linux-arm': 0.34.1 - '@img/sharp-linux-arm64': 0.34.1 - '@img/sharp-linux-s390x': 0.34.1 - '@img/sharp-linux-x64': 0.34.1 - '@img/sharp-linuxmusl-arm64': 0.34.1 - '@img/sharp-linuxmusl-x64': 0.34.1 - '@img/sharp-wasm32': 0.34.1 - '@img/sharp-win32-ia32': 0.34.1 - '@img/sharp-win32-x64': 0.34.1 + '@img/sharp-darwin-arm64': 0.34.3 + '@img/sharp-darwin-x64': 0.34.3 + '@img/sharp-libvips-darwin-arm64': 1.2.0 + '@img/sharp-libvips-darwin-x64': 1.2.0 + '@img/sharp-libvips-linux-arm': 1.2.0 + '@img/sharp-libvips-linux-arm64': 1.2.0 + '@img/sharp-libvips-linux-ppc64': 1.2.0 + '@img/sharp-libvips-linux-s390x': 1.2.0 + '@img/sharp-libvips-linux-x64': 1.2.0 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.0 + '@img/sharp-libvips-linuxmusl-x64': 1.2.0 + '@img/sharp-linux-arm': 0.34.3 + '@img/sharp-linux-arm64': 0.34.3 + '@img/sharp-linux-ppc64': 0.34.3 + '@img/sharp-linux-s390x': 0.34.3 + '@img/sharp-linux-x64': 0.34.3 + '@img/sharp-linuxmusl-arm64': 0.34.3 + '@img/sharp-linuxmusl-x64': 0.34.3 + '@img/sharp-wasm32': 0.34.3 + '@img/sharp-win32-arm64': 0.34.3 + '@img/sharp-win32-ia32': 0.34.3 + '@img/sharp-win32-x64': 0.34.3 optional: true - shebang-command@2.0.0: + shiki@3.8.0: dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - shiki@3.4.0: - dependencies: - '@shikijs/core': 3.4.0 - '@shikijs/engine-javascript': 3.4.0 - '@shikijs/engine-oniguruma': 3.4.0 - '@shikijs/langs': 3.4.0 - '@shikijs/themes': 3.4.0 - '@shikijs/types': 3.4.0 + '@shikijs/core': 3.8.0 + '@shikijs/engine-javascript': 3.8.0 + '@shikijs/engine-oniguruma': 3.8.0 + '@shikijs/langs': 3.8.0 + '@shikijs/themes': 3.8.0 + '@shikijs/types': 3.8.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -4043,8 +4094,6 @@ snapshots: is-arrayish: 0.3.2 optional: true - slash@5.1.0: {} - source-map-js@1.2.1: {} source-map@0.7.4: {} @@ -4062,11 +4111,11 @@ snapshots: strip-bom-string@1.0.0: {} - style-to-js@1.1.16: + style-to-js@1.1.17: dependencies: - style-to-object: 1.0.8 + style-to-object: 1.0.9 - style-to-object@1.0.8: + style-to-object@1.0.9: dependencies: inline-style-parser: 0.2.4 @@ -4075,11 +4124,11 @@ snapshots: client-only: 0.0.1 react: 19.1.0 - tailwind-merge@3.3.0: {} + tailwind-merge@3.3.1: {} - tailwindcss@4.1.6: {} + tailwindcss@4.1.11: {} - tapable@2.2.1: {} + tapable@2.2.2: {} tar@7.4.3: dependencies: @@ -4090,9 +4139,12 @@ snapshots: mkdirp: 3.0.1 yallist: 5.0.0 - to-regex-range@5.0.1: + tinyexec@1.0.1: {} + + tinyglobby@0.2.14: dependencies: - is-number: 7.0.0 + fdir: 6.4.6(picomatch@4.0.2) + picomatch: 4.0.2 trim-lines@3.0.1: {} @@ -4102,9 +4154,7 @@ snapshots: typescript@5.8.3: {} - undici-types@6.21.0: {} - - unicorn-magic@0.3.0: {} + undici-types@7.8.0: {} unified@11.0.5: dependencies: @@ -4143,22 +4193,20 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - universalify@2.0.1: {} - - use-callback-ref@1.3.3(@types/react@19.1.3)(react@19.1.0): + use-callback-ref@1.3.3(@types/react@19.1.8)(react@19.1.0): dependencies: react: 19.1.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 - use-sidecar@1.1.3(@types/react@19.1.3)(react@19.1.0): + use-sidecar@1.1.3(@types/react@19.1.8)(react@19.1.0): dependencies: detect-node-es: 1.1.0 react: 19.1.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.8 util-deprecate@1.0.2: {} @@ -4172,16 +4220,14 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - web-streams-polyfill@3.3.3: {} - - which@2.0.2: - dependencies: - isexe: 2.0.0 - yallist@5.0.0: {} + yaml@2.8.0: {} + yocto-queue@1.2.1: {} - zod@3.24.4: {} + zod@3.25.76: {} + + zod@4.0.5: {} zwitch@2.0.4: {} diff --git a/document/public/FastGPT-full.svg b/document/public/FastGPT-full.svg index 2c7580ed1d91..42e2806a44fb 100644 --- a/document/public/FastGPT-full.svg +++ b/document/public/FastGPT-full.svg @@ -1,13 +1,38 @@ - - - - + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + diff --git a/document/public/feishu.svg b/document/public/feishu.svg new file mode 100644 index 000000000000..bb504833fa37 --- /dev/null +++ b/document/public/feishu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/document/update-index.mjs b/document/update-index.mjs new file mode 100644 index 000000000000..4dad8aebe1bf --- /dev/null +++ b/document/update-index.mjs @@ -0,0 +1,17 @@ +// @ts-check +import { algoliasearch } from 'algoliasearch'; +import { sync } from 'fumadocs-core/search/algolia'; +import * as fs from 'node:fs'; + +const content = fs.readFileSync('.next/server/app/static.json.body'); + +// now you can pass it to `sync` +/** @type {import('fumadocs-core/search/algolia').DocumentRecord[]} **/ +const records = JSON.parse(content.toString()); + +const client = algoliasearch('E98V5BVTTC', '2831a0e577ac9a4632ddc674eb5507f9'); + +void sync(client, { + indexName: 'document', + documents: records, +}); \ No newline at end of file From 3348874dd87039fa9132141bc5f1c2ba1ab0cdad Mon Sep 17 00:00:00 2001 From: dreamer6680 <1468683855@qq.com> Date: Tue, 22 Jul 2025 10:55:38 +0800 Subject: [PATCH 2/7] chore: add new dependencies, update global styles/layout, optimize docs, add Feishu & GitHub icons, update API examples --- document/app/[lang]/docs/[[...slug]]/page.tsx | 2 +- document/app/[lang]/docs/layout.tsx | 81 ++++-- document/app/[lang]/llms.txt/route.ts | 56 ++++ document/app/global.css | 94 +++++-- document/app/layout.config.tsx | 7 +- document/components/docs/Alert.tsx | 10 +- document/components/docs/feishuLogoDark.tsx | 28 ++ document/components/docs/feishuLogoLIght.tsx | 28 ++ document/components/docs/githubLogoDark.tsx | 16 ++ document/components/docs/githubLogoLight.tsx | 16 ++ document/components/docs/logo.tsx | 127 +++++++++ document/components/docs/logoDark.tsx | 127 +++++++++ document/components/sideBar.tsx | 39 +++ document/content/docs/api/api2.mdx | 108 +++++++- .../content/docs/introduction/FAQ/meta.json | 5 + .../development/custom-models/meta.json | 6 +- .../introduction/development/design/meta.json | 6 +- .../docs/introduction/development/docker.mdx | 19 +- .../docs/introduction/development/faq.mdx | 14 +- .../docs/introduction/development/meta.json | 11 +- .../development/migration/docker_db.mdx | 2 +- .../development/migration/docker_mongo.mdx | 2 +- .../development/migration/meta.json | 6 +- .../development/modelConfig/intro.mdx | 1 - .../development/modelConfig/meta.json | 6 +- .../development/modelConfig/ppio.mdx | 1 - .../introduction/development/openapi/chat.mdx | 163 ++++++----- .../development/openapi/dataset.mdx | 169 ++++++------ .../development/openapi/meta.json | 6 +- .../development/openapi/share.mdx | 25 +- .../introduction/development/proxy/meta.json | 8 +- .../development/upgrading/4100.mdx | 61 +++++ .../development/upgrading/4101.mdx | 59 ++++ .../development/upgrading/meta.json | 9 +- .../introduction/guide/DialogBoxes/meta.json | 5 +- .../docs/introduction/guide/admin/meta.json | 5 +- .../docs/introduction/guide/admin/sso.mdx | 25 +- .../docs/introduction/guide/course/meta.json | 5 +- .../introduction/guide/dashboard/meta.json | 5 +- .../guide/dashboard/workflow/http.mdx | 15 +- .../guide/dashboard/workflow/meta.json | 5 +- .../guide/knowledge_base/api_dataset.mdx | 19 +- .../guide/knowledge_base/meta.json | 5 +- .../content/docs/introduction/guide/meta.json | 6 +- .../docs/introduction/guide/plugins/meta.json | 5 +- .../guide/team_permissions/meta.json | 5 +- .../content/docs/introduction/index.en.mdx | 3 +- document/content/docs/introduction/index.mdx | 3 +- document/content/docs/introduction/meta.json | 8 +- .../docs/introduction/shopping_cart/meta.json | 6 +- document/content/docs/protocol/meta.json | 13 +- .../docs/use-cases/app-cases/meta.json | 5 +- .../use-cases/external-integration/meta.json | 5 +- document/content/docs/use-cases/index.mdx | 4 +- document/content/docs/use-cases/meta.json | 10 +- document/meta-order.js | 92 +++++++ document/middleware.ts | 2 +- document/package.json | 10 +- document/pnpm-lock.yaml | 252 ++++++++++++++++++ document/public/FastGPT-full.svg | 32 +-- document/public/feishu.svg | 2 +- document/public/logo1.png | Bin 0 -> 25112 bytes 62 files changed, 1489 insertions(+), 381 deletions(-) create mode 100644 document/app/[lang]/llms.txt/route.ts create mode 100644 document/components/docs/feishuLogoDark.tsx create mode 100644 document/components/docs/feishuLogoLIght.tsx create mode 100644 document/components/docs/githubLogoDark.tsx create mode 100644 document/components/docs/githubLogoLight.tsx create mode 100644 document/components/docs/logo.tsx create mode 100644 document/components/docs/logoDark.tsx create mode 100644 document/components/sideBar.tsx create mode 100644 document/content/docs/introduction/FAQ/meta.json create mode 100644 document/content/docs/introduction/development/upgrading/4100.mdx create mode 100644 document/content/docs/introduction/development/upgrading/4101.mdx create mode 100644 document/meta-order.js create mode 100644 document/public/logo1.png diff --git a/document/app/[lang]/docs/[[...slug]]/page.tsx b/document/app/[lang]/docs/[[...slug]]/page.tsx index 86ab54724f69..e2b214511082 100644 --- a/document/app/[lang]/docs/[[...slug]]/page.tsx +++ b/document/app/[lang]/docs/[[...slug]]/page.tsx @@ -15,7 +15,7 @@ export default async function Page({ if (!page || !page.data || !page.file) notFound(); const MDXContent = page.data.body; - const lastModified = await fetchLastModified(`content/docs/${page.file.path}`); + const lastModified = await fetchLastModified(`/content/docs/${page.path}`); return ( - FastGPT +
+
+ +
+
+ +
), mode: 'top' }} - // links={[ - // { - // type: "icon", - // icon: FastGPT, - // url: "https://oss.laf.run/otnvvf-imgs/fastgpt-feishu1.png", - // text: "飞书群", - // }, - // ]} + links={[ + { + type: 'icon', + icon: ( +
+
+ +
+
+ +
+
+ ), + url: 'https://oss.laf.run/otnvvf-imgs/fastgpt-feishu1.png', + text: '飞书群' + }, + { + type: 'icon', + icon: ( +
+
+ +
+
+ +
+
+ ), + url: 'https://github.com/labring/FastGPT/tree/main/document', + text: 'github' + } + ]} tree={source.pageTree[lang]} searchToggle={{ enabled: true }} sidebar={{ tabs: tab, - collapsible: false + collapsible: false, + components: CustomSidebarComponents }} tabMode="navbar" > diff --git a/document/app/[lang]/llms.txt/route.ts b/document/app/[lang]/llms.txt/route.ts new file mode 100644 index 000000000000..cd284cb46fe7 --- /dev/null +++ b/document/app/[lang]/llms.txt/route.ts @@ -0,0 +1,56 @@ +import * as fs from 'node:fs/promises'; +import fg from 'fast-glob'; +import matter from 'gray-matter'; +import { remark } from 'remark'; +import remarkGfm from 'remark-gfm'; +import remarkStringify from 'remark-stringify'; +import remarkMdx from 'remark-mdx'; +import { remarkInclude } from 'fumadocs-mdx/config'; +import { i18n } from '@/lib/i18n'; + +export const revalidate = false; + +const processor = remark() + .use(remarkMdx) + // https://fumadocs.vercel.app/docs/mdx/include + .use(remarkInclude) + // gfm styles + .use(remarkGfm) + // .use(your remark plugins) + .use(remarkStringify); // to string + +export async function GET() { + // all scanned content + // Select files based on the default language + const defaultLanguage = i18n.defaultLanguage; + let globPattern; + + if (defaultLanguage === 'zh-CN') { + // For Chinese, select *.mdx files + globPattern = ['./content/docs/**/*.mdx']; + } else { + // For other languages (default English), select *.en.mdx files that don't have .mdx. in their path + globPattern = ['./content/docs/**/*.en.mdx']; + } + + const files = await fg(globPattern); + + const scan = files.map(async (file: string) => { + const fileContent = await fs.readFile(file); + const { content, data } = matter(fileContent.toString()); + + const processed = await processor.process({ + path: file, + value: content + }); + + return `file: ${file} +meta: ${JSON.stringify(data, null, 2)} + +${processed}`; + }); + + const scanned = await Promise.all(scan); + + return new Response(scanned.join('\n\n')); +} diff --git a/document/app/global.css b/document/app/global.css index 0eefafa87f3e..d4442a2c0e3f 100644 --- a/document/app/global.css +++ b/document/app/global.css @@ -1,5 +1,4 @@ @import 'tailwindcss'; -@import 'fumadocs-ui/css/neutral.css'; @import 'fumadocs-ui/css/preset.css'; /* 在文件开头添加这些基础变量 */ @@ -21,7 +20,7 @@ --text-default-inv: #ffffff; --text-muted: #6B7280; --content-link-color: #2563EB; - + /* 其他变量 */ --font-size-sm: 0.875rem; --gray-200: #E5E7EB; @@ -149,38 +148,103 @@ img { padding: 1rem 0; } +div[data-state="open"].fixed.inset-0.z-50 { + background-color: rgba(255, 255, 255, 0.4) !important; +} + + #nd-subnav > div:nth-of-type(1) button:nth-of-type(1) { - box-shadow: 1px 1px 1px 1px #a9a0a0 !important; + box-shadow: 0px 1px 2px 0px rgba(19, 51, 107, 0.05), 0px 0px 1px 0px rgba(19, 51, 107, 0.08)!important; background-color: none !important; &:hover { - background-color: transparent !important; cursor: pointer; } } #nd-subnav > div:nth-of-type(1) { - border-bottom: 0.5px solid var(--gray-200) !important;; + border-bottom: 0.1px solid #F4F4F7 !important; } #nd-subnav > div:nth-of-type(2) { - border-bottom: 0.5px solid var(--gray-200) !important; + border-bottom: 0.1px solid #DFE2EA !important; + height: 100%; +} +.dark #nd-subnav > div:nth-of-type(1) { + border-bottom: 0.1px solid #363b4a58 !important; +} +.dark #nd-subnav > div:nth-of-type(2) { + border-bottom: 0.1px solid #61646fc6 !important; } #nd-subnav > div:nth-of-type(2) a { text-decoration: none; - color: inherit; + color: #485264; transition: color 0.2s ease; background-color: transparent !important; + font-weight: 400; /* 先清除默认下划线 */ &:hover { text-decoration: underline; - text-decoration-color: gray; - text-decoration-thickness: 2px; /* 下划线粗细 */ - text-underline-offset: 10px; /* 下划线与文字距离 */ + text-decoration-color: #C5D7FF; + text-decoration-thickness: 3px; /* 下划线粗细 */ + text-underline-offset: 17px; /* 下划线与文字距离 */ } - &:active { + &.text-fd-primary { text-decoration: underline; - text-decoration-color: blue; - text-decoration-thickness: 2px; /* 下划线粗细 */ - text-underline-offset: 10px; /* 下划线与文字距离 */ + text-decoration-color: #3370FF; + text-decoration-thickness: 3px; /* 下划线粗细 */ + text-underline-offset: 17px; /* 下划线与文字距离 */ background-color: transparent !important; + font-weight: 600; + color: #111824; } -} \ No newline at end of file +} +.dark #nd-subnav > div:nth-of-type(2) a { + color: #FFFFFF; +} + + +@theme { + --color-fd-muted: hsl(0, 0%, 96.1%); + --color-fd-popover: hsl(0, 0%, 100%); + --color-fd-popover-foreground: hsl(0, 0%, 15.1%); + --color-fd-card-foreground: hsl(0, 0%, 3.9%); + --color-fd-border: hsl(0, 0%, 89.8%); + --color-fd-primary-foreground: hsl(0, 0%, 98%); + --color-fd-secondary-foreground: hsl(0, 0%, 9%); + --color-fd-accent: hsl(0, 0%, 94.1%); + --color-fd-ring: hsl(0, 0%, 63.9%); + + --color-fd-background: hsl(0, 0%, 100%); + --color-fd-card: hsl(0, 0%, 100%); + --color-fd-foreground: hsl(240, 6%, 25%); + --color-fd-muted-foreground: hsl(240, 6%, 50%); + --color-fd-secondary: hsl(240, 6%, 97%); + --color-fd-accent-foreground: hsl(240, 6%, 25%); + --color-fd-primary: hsl(226, 55%, 45%); +} + +.dark { + --color-fd-background: #060c1a; + --color-fd-foreground: hsl(220, 60%, 94.5%); + --color-fd-muted: hsl(220, 50%, 10%); + --color-fd-muted-foreground: hsl(220, 30%, 65%); + --color-fd-popover: hsl(220, 50%, 10%); + --color-fd-popover-foreground: hsl(220, 60%, 94.5%); + --color-fd-card: hsla(220, 56%, 15%, 0.4); + --color-fd-card-foreground: hsl(220, 60%, 94.5%); + --color-fd-border: hsla(220, 50%, 50%, 0.2); + --color-fd-primary: #3370FF; /* 文本高亮色 */ + --color-fd-primary-foreground: hsl(0, 0%, 9%); + --color-fd-secondary: hsl(220, 50%, 20%); + --color-fd-secondary-foreground: hsl(220, 80%, 90%); + --color-fd-accent: hsl(220, 40%, 20%); + --color-fd-accent-foreground: hsl(220, 80%, 90%); + --color-fd-ring: hsl(205, 100%, 85%); +} + +#nd-sidebar { + border-color: transparent; +} + +button[data-search-full] { + background-color: var(--color-fd-background); +} diff --git a/document/app/layout.config.tsx b/document/app/layout.config.tsx index b9d7109d2a31..a62b7fb77753 100644 --- a/document/app/layout.config.tsx +++ b/document/app/layout.config.tsx @@ -24,8 +24,11 @@ export const baseOptions = (locale: string): BaseLayoutProps => { ) }, - i18n, - githubUrl: 'https://github.com/labring/FastGPT/tree/main/document', + i18n: { + languages: ['zh-CN', 'en'], + defaultLanguage: 'zh-CN', + hideLocale: 'always' + }, searchToggle: { enabled: true } diff --git a/document/components/docs/Alert.tsx b/document/components/docs/Alert.tsx index 1408c0d9b869..510de786d8bb 100644 --- a/document/components/docs/Alert.tsx +++ b/document/components/docs/Alert.tsx @@ -9,12 +9,12 @@ interface AlertProps { export function Alert({ icon, context = 'info', children }: AlertProps) { const contextStyles = { success: - 'bg-green-50 border-green-200 text-green-700 dark:bg-green-950 dark:border-green-800 dark:text-gray-200', + 'bg-green-50 border-green-200 text-green-700 dark:bg-white/5 dark:border-teal-300 dark:text-gray-200', warning: - 'bg-yellow-50 border-yellow-200 text-yellow-700 dark:bg-yellow-950 dark:border-yellow-800 dark:text-gray-200', + 'bg-yellow-50 border-yellow-200 text-yellow-700 dark:dark:bg-white/5 dark:border-indigo-500 dark:text-gray-200', error: - 'bg-red-50 border-red-200 text-red-700 dark:bg-red-950 dark:border-red-800 dark:text-gray-200', - info: 'bg-blue-50 border-blue-200 text-blue-700 dark:bg-blue-950 dark:border-blue-800 dark:text-gray-200' + 'bg-red-50 border-red-200 text-red-700 dark:bg-white/5 dark:border-red-800 dark:text-gray-200', + info: 'bg-blue-50 border-blue-200 text-blue-700 dark:bg-white/5 dark:border-blue-400 dark:text-gray-200' }; return ( @@ -22,7 +22,7 @@ export function Alert({ icon, context = 'info', children }: AlertProps) { className={` ${contextStyles[context]} p-4 rounded-lg border - flex gap-3 items-start + flex gap-3 items-baseline shadow-sm transition-all duration-200 ease-in-out hover:shadow-md diff --git a/document/components/docs/feishuLogoDark.tsx b/document/components/docs/feishuLogoDark.tsx new file mode 100644 index 000000000000..9556e48dd7ad --- /dev/null +++ b/document/components/docs/feishuLogoDark.tsx @@ -0,0 +1,28 @@ +'use client'; + +import React from 'react'; + +const feishuLogoDark: React.FC> = (props) => ( + + + + + +); + +export default feishuLogoDark; diff --git a/document/components/docs/feishuLogoLIght.tsx b/document/components/docs/feishuLogoLIght.tsx new file mode 100644 index 000000000000..c75118861aca --- /dev/null +++ b/document/components/docs/feishuLogoLIght.tsx @@ -0,0 +1,28 @@ +'use client'; + +import React from 'react'; + +const feishuLogoLight: React.FC> = (props) => ( + + + + + +); + +export default feishuLogoLight; diff --git a/document/components/docs/githubLogoDark.tsx b/document/components/docs/githubLogoDark.tsx new file mode 100644 index 000000000000..2d606935f158 --- /dev/null +++ b/document/components/docs/githubLogoDark.tsx @@ -0,0 +1,16 @@ +'use client'; + +import React from 'react'; + +const githubLogoLight: React.FC> = (props) => ( + + + +); + +export default githubLogoLight; diff --git a/document/components/docs/githubLogoLight.tsx b/document/components/docs/githubLogoLight.tsx new file mode 100644 index 000000000000..3b7929236429 --- /dev/null +++ b/document/components/docs/githubLogoLight.tsx @@ -0,0 +1,16 @@ +'use client'; + +import React from 'react'; + +const githubLogoLight: React.FC> = (props) => ( + + + +); + +export default githubLogoLight; diff --git a/document/components/docs/logo.tsx b/document/components/docs/logo.tsx new file mode 100644 index 000000000000..9c4a6c015d70 --- /dev/null +++ b/document/components/docs/logo.tsx @@ -0,0 +1,127 @@ +'use client'; + +import React from 'react'; + +const LogoLight: React.FC> = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export default LogoLight; diff --git a/document/components/docs/logoDark.tsx b/document/components/docs/logoDark.tsx new file mode 100644 index 000000000000..47ebab3de882 --- /dev/null +++ b/document/components/docs/logoDark.tsx @@ -0,0 +1,127 @@ +'use client'; + +import React from 'react'; + +const LogoDark: React.FC> = (props) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export default LogoDark; diff --git a/document/components/sideBar.tsx b/document/components/sideBar.tsx new file mode 100644 index 000000000000..30439000b9f2 --- /dev/null +++ b/document/components/sideBar.tsx @@ -0,0 +1,39 @@ +'use client'; + +import { type FC, type ReactNode } from 'react'; +import { type SidebarComponents } from 'fumadocs-ui/components/layout/sidebar'; +import { type PageTree } from 'fumadocs-core/server'; +import { + SidebarItem, + SidebarFolder, + SidebarFolderTrigger, + SidebarFolderContent +} from 'fumadocs-ui/components/layout/sidebar'; + +const CustomItem: FC<{ item: PageTree.Item }> = ({ item }) => ( + + {item.icon} + {item.name} + +); + +const CustomFolder: FC<{ item: PageTree.Folder; level: number; children: ReactNode }> = ({ + item, + level, + children +}) => ( + + {item.name} + {children} + +); + +const CustomSeparator: FC<{ item: PageTree.Separator }> = ({ item }) => ( +
{item.name}
+); + +export const CustomSidebarComponents: SidebarComponents = { + Item: CustomItem, + Folder: CustomFolder, + Separator: CustomSeparator +}; diff --git a/document/content/docs/api/api2.mdx b/document/content/docs/api/api2.mdx index 2c9d1b34558c..38090c956a0d 100644 --- a/document/content/docs/api/api2.mdx +++ b/document/content/docs/api/api2.mdx @@ -1,9 +1,105 @@ --- -weight: 0 -title: 'API2' -description: 'FastGPT API手册' -icon: menu_book -lead: '' +title: '对话接口' +description: 'FastGPT OpenAPI 对话接口' +icon: 'chat' draft: false -images: [] +toc: true +weight: 852 --- + +import { Alert } from '@/components/docs/Alert'; + +# 如何获取 AppId + +可在应用详情的路径里获取 AppId。 + +![](/imgs/appid.png) + +# 发起对话 + + +* 该接口的 API Key 需使用`应用特定的 key`,否则会报错。 + +{/* * 对话现在有`v1`和`v2`两个接口,可以按需使用,v2 自 4.9.4 版本新增,v1 接口同时不再维护 */} + +* 有些包调用时,`BaseUrl`需要添加`v1`路径,有些不需要,如果出现404情况,可补充`v1`重试。 + + +## 请求简易应用和工作流 + +`v1`对话接口兼容`GPT`的接口!如果你的项目使用的是标准的`GPT`官方接口,可以直接通过修改`BaseUrl`和 `Authorization`来访问 FastGpt 应用,不过需要注意下面几个规则: + + +* 传入的`model`,`temperature`等参数字段均无效,这些字段由编排决定,不会根据 API 参数改变。 +* 不会返回实际消耗`Token`值,如果需要,可以设置`detail=true`,并手动计算 `responseData` 里的`tokens`值。 + + +### 请求 + + + + +```bash +curl --location --request POST 'http://localhost:3000/api/v1/chat/completions' \ +--header 'Authorization: Bearer fastgpt-xxxxxx' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "chatId": "my_chatId", + "stream": false, + "detail": false, + "responseChatItemId": "my_responseChatItemId", + "variables": { + "uid": "asdfadsfasfd2323", + "name": "张三" + }, + "messages": [ + { + "role": "user", + "content": "导演是谁" + } + ] +}' +``` + + + + +* 仅`messages`有部分区别,其他参数一致。 +* 目前不支持上传文件,需上传到自己的对象存储中,获取对应的文件链接。 + +```bash +curl --location --request POST 'http://localhost:3000/api/v1/chat/completions' \ +--header 'Authorization: Bearer fastgpt-xxxxxx' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "chatId": "abcd", + "stream": false, + "messages": [ + { + "role": "user", + "content": [ + { + "type": "text", + "text": "导演是谁" + }, + { + "type": "image_url", + "image_url": { + "url": "图片链接" + } + }, + { + "type": "file_url", + "name": "文件名", + "url": "文档链接,支持 txt md html word pdf ppt csv excel" + } + ] + } + ] +}' +``` + + + + + \ No newline at end of file diff --git a/document/content/docs/introduction/FAQ/meta.json b/document/content/docs/introduction/FAQ/meta.json new file mode 100644 index 000000000000..0c8f74a47572 --- /dev/null +++ b/document/content/docs/introduction/FAQ/meta.json @@ -0,0 +1,5 @@ +{ + "title": "FAQ", + "description": "FastGPT 常见问题", + "pages": ["docker","privateDeploy","chat","app","dataset","external_channel_integration","error","points_consumption","other"] +} \ No newline at end of file diff --git a/document/content/docs/introduction/development/custom-models/meta.json b/document/content/docs/introduction/development/custom-models/meta.json index 8a729716af4a..5bf26cd7d33e 100644 --- a/document/content/docs/introduction/development/custom-models/meta.json +++ b/document/content/docs/introduction/development/custom-models/meta.json @@ -1,4 +1,4 @@ { - "title": "本地模型使用" -} - \ No newline at end of file + "title": "本地模型使用", + "pages": ["marker","xinference","bge-rerank","chatglm2","m3e","chatglm2-m3e","ollama"] +} \ No newline at end of file diff --git a/document/content/docs/introduction/development/design/meta.json b/document/content/docs/introduction/development/design/meta.json index 5e7e9e4818b6..508b9c97dfd2 100644 --- a/document/content/docs/introduction/development/design/meta.json +++ b/document/content/docs/introduction/development/design/meta.json @@ -1,4 +1,4 @@ { - "title": "设计方案" -} - \ No newline at end of file + "title": "设计方案", + "pages": ["dataset","design_plugin"] +} \ No newline at end of file diff --git a/document/content/docs/introduction/development/docker.mdx b/document/content/docs/introduction/development/docker.mdx index 0f184bca410e..0f291fc6b1cf 100644 --- a/document/content/docs/introduction/development/docker.mdx +++ b/document/content/docs/introduction/development/docker.mdx @@ -8,7 +8,6 @@ weight: 707 --- import { Alert } from '@/components/docs/Alert'; -import { Tabs, Tab } from '@/components/docs/Tabs'; ## 前置知识 @@ -71,8 +70,8 @@ Zilliz Cloud 由 Milvus 原厂打造,是全托管的 SaaS 向量数据库服 ### 2. 准备 Docker 环境 - - + + ```bash # 安装 Docker curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun @@ -86,7 +85,7 @@ docker-compose -v # 如失效,自行百度~ ``` - + 推荐直接使用 [Orbstack](https://orbstack.dev/)。可直接通过 Homebrew 来安装: ```bash @@ -95,7 +94,7 @@ brew install orbstack 或者直接[下载安装包](https://orbstack.dev/download)进行安装。 - + 我们建议将源代码和其他数据绑定到 Linux 容器中时,将其存储在 Linux 文件系统中,而不是 Windows 文件系统中。 可以选择直接[使用 WSL 2 后端在 Windows 中安装 Docker Desktop](https://docs.docker.com/desktop/wsl/)。 @@ -141,17 +140,17 @@ curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/mai 找到 yml 文件中,fastgpt 容器的环境变量进行下面操作: - - + + 无需操作 - + 无需操作 - + 无需操作 - + 打开 [Zilliz Cloud](https://zilliz.com.cn/), 创建实例并获取相关秘钥。 ![zilliz_key](/imgs/zilliz_key.png) diff --git a/document/content/docs/introduction/development/faq.mdx b/document/content/docs/introduction/development/faq.mdx index cd4dd4cf4aff..41db414d1e03 100644 --- a/document/content/docs/introduction/development/faq.mdx +++ b/document/content/docs/introduction/development/faq.mdx @@ -7,8 +7,6 @@ draft: false images: [] --- -import { Tabs, Tab } from '@/components/docs/Tabs'; - ## 一、错误排查方式 可以先找找[Issue](https://github.com/labring/FastGPT/issues),或新提 Issue,私有部署错误,务必提供详细的操作步骤、日志、截图,否则很难排查。 @@ -159,8 +157,8 @@ OneAPI 的 API Key 配置错误,需要修改`OPENAI_API_KEY`环境变量,并 下面是几个测试 CURL 示例: - - + + ```bash curl https://api.openai.com/v1/chat/completions \ -H "Content-Type: application/json" \ @@ -180,7 +178,7 @@ curl https://api.openai.com/v1/chat/completions \ }' ``` - + ```bash curl https://api.openai.com/v1/embeddings \ -H "Authorization: Bearer $OPENAI_API_KEY" \ @@ -192,7 +190,7 @@ curl https://api.openai.com/v1/embeddings \ }' ``` - + ```bash curl --location --request POST 'https://xxxx.com/api/v1/rerank' \ --header 'Authorization: Bearer {{ACCESS_TOKEN}}' \ @@ -206,7 +204,7 @@ curl --location --request POST 'https://xxxx.com/api/v1/rerank' \ }' ``` - + ```bash curl https://api.openai.com/v1/audio/speech \ -H "Authorization: Bearer $OPENAI_API_KEY" \ @@ -219,7 +217,7 @@ curl https://api.openai.com/v1/audio/speech \ --output speech.mp3 ``` - + ```bash curl https://api.openai.com/v1/audio/transcriptions \ -H "Authorization: Bearer $OPENAI_API_KEY" \ diff --git a/document/content/docs/introduction/development/meta.json b/document/content/docs/introduction/development/meta.json index f5534aa0ee30..3ea9eac30f36 100644 --- a/document/content/docs/introduction/development/meta.json +++ b/document/content/docs/introduction/development/meta.json @@ -1,7 +1,6 @@ { - "title": "开发与部署指南", - "description": "FastGPT 开发与部署指南", - "icon": "🔧", - "pages": ["intro","sealos","docker","configuration","faq","modelConfig","upgrading","openapi","custom-models","proxy","migration","design"] -} - \ No newline at end of file + "title": "开发与部署指南", + "description": "FastGPT 开发与部署指南", + "icon": "🔧", + "pages": ["intro","sealos","configuration","docker","faq","modelConfig","upgrading","openapi","custom-models","proxy","migration","design"] +} \ No newline at end of file diff --git a/document/content/docs/introduction/development/migration/docker_db.mdx b/document/content/docs/introduction/development/migration/docker_db.mdx index 4b34e4f5c36c..c6c40aba5037 100644 --- a/document/content/docs/introduction/development/migration/docker_db.mdx +++ b/document/content/docs/introduction/development/migration/docker_db.mdx @@ -1,5 +1,5 @@ --- -weight: 762 +weight: 960 title: "Docker 数据库迁移(无脑操作)" description: "FastGPT Docker 数据库备份和迁移" icon: database diff --git a/document/content/docs/introduction/development/migration/docker_mongo.mdx b/document/content/docs/introduction/development/migration/docker_mongo.mdx index 0ba29b345f2d..c3d8e754f930 100644 --- a/document/content/docs/introduction/development/migration/docker_mongo.mdx +++ b/document/content/docs/introduction/development/migration/docker_mongo.mdx @@ -3,7 +3,7 @@ title: "Docker Mongo迁移(dump模式)" description: "FastGPT Docker Mongo迁移" icon: database draft: false -weight: 762 +weight: 960 --- ## 作者 diff --git a/document/content/docs/introduction/development/migration/meta.json b/document/content/docs/introduction/development/migration/meta.json index 8f952c8b2412..a85ad94a4e60 100644 --- a/document/content/docs/introduction/development/migration/meta.json +++ b/document/content/docs/introduction/development/migration/meta.json @@ -1,4 +1,4 @@ { - "title": "迁移&备份" -} - \ No newline at end of file + "title": "迁移&备份", + "pages": ["docker_db","docker_mongo"] +} \ No newline at end of file diff --git a/document/content/docs/introduction/development/modelConfig/intro.mdx b/document/content/docs/introduction/development/modelConfig/intro.mdx index 62f8635f0503..2dd291833d2b 100644 --- a/document/content/docs/introduction/development/modelConfig/intro.mdx +++ b/document/content/docs/introduction/development/modelConfig/intro.mdx @@ -8,7 +8,6 @@ weight: 744 --- import { Alert } from '@/components/docs/Alert'; -import { Tabs, Tab } from '@/components/docs/Tabs'; 在 4.8.20 版本以前,FastGPT 模型配置在 `config.json` 文件中声明,你可以在 https://github.com/labring/FastGPT/blob/main/projects/app/data/model.json 中找到旧版的配置文件示例。 diff --git a/document/content/docs/introduction/development/modelConfig/meta.json b/document/content/docs/introduction/development/modelConfig/meta.json index 616c371e1271..586c28c74780 100644 --- a/document/content/docs/introduction/development/modelConfig/meta.json +++ b/document/content/docs/introduction/development/modelConfig/meta.json @@ -1,4 +1,4 @@ { - "title": "模型配置方案" -} - \ No newline at end of file + "title": "模型配置方案", + "pages": ["ai-proxy","intro","one-api","siliconCloud","ppio"] +} \ No newline at end of file diff --git a/document/content/docs/introduction/development/modelConfig/ppio.mdx b/document/content/docs/introduction/development/modelConfig/ppio.mdx index caccbc394667..ba3cd70036dc 100644 --- a/document/content/docs/introduction/development/modelConfig/ppio.mdx +++ b/document/content/docs/introduction/development/modelConfig/ppio.mdx @@ -8,7 +8,6 @@ weight: 747 --- import { Alert } from '@/components/docs/Alert'; -import { Tabs, Tab } from '@/components/docs/Tabs'; FastGPT 还可以通过 PPIO LLM API 接入模型。 diff --git a/document/content/docs/introduction/development/openapi/chat.mdx b/document/content/docs/introduction/development/openapi/chat.mdx index 113b3e84e100..aa7ff91f2245 100644 --- a/document/content/docs/introduction/development/openapi/chat.mdx +++ b/document/content/docs/introduction/development/openapi/chat.mdx @@ -8,7 +8,6 @@ weight: 852 --- import { Alert } from '@/components/docs/Alert'; -import { Tabs, Tab } from '@/components/docs/Tabs'; # 如何获取 AppId @@ -37,8 +36,8 @@ import { Tabs, Tab } from '@/components/docs/Tabs'; ### 请求 - - + + ```bash curl --location --request POST 'http://localhost:3000/api/v1/chat/completions' \ @@ -63,7 +62,7 @@ curl --location --request POST 'http://localhost:3000/api/v1/chat/completions' \ ``` - + * 仅`messages`有部分区别,其他参数一致。 @@ -102,7 +101,7 @@ curl --location --request POST 'http://localhost:3000/api/v1/chat/completions' \ ``` - + @@ -123,8 +122,8 @@ curl --location --request POST 'http://localhost:3000/api/v1/chat/completions' \ v1,v2 接口请求参数一致,仅请求地址不一样。 - - + + ```bash curl --location --request POST 'http://localhost:3000/api/v2/chat/completions' \ @@ -149,7 +148,7 @@ curl --location --request POST 'http://localhost:3000/api/v2/chat/completions' \ ``` - + * 仅`messages`有部分区别,其他参数一致。 @@ -188,7 +187,7 @@ curl --location --request POST 'http://localhost:3000/api/v2/chat/completions' \ ``` - + - headers.Authorization: Bearer [apikey] @@ -214,8 +213,8 @@ curl --location --request POST 'http://localhost:3000/api/v2/chat/completions' \ v2 接口比起 v1,主要变变化在于:会在每个节点运行结束后及时返回 response,而不是等工作流结束后再统一返回。 - - + + ```json { @@ -240,7 +239,7 @@ v2 接口比起 v1,主要变变化在于:会在每个节点运行结束后 ``` - + ```bash @@ -258,7 +257,7 @@ data: [DONE] ``` - + ```json { @@ -320,7 +319,7 @@ data: [DONE] ``` - + ```bash @@ -353,7 +352,7 @@ data: [DONE] ``` - + event取值: @@ -372,8 +371,8 @@ event取值: #### v1 */} - - + + ```json { @@ -398,7 +397,7 @@ event取值: ``` - + ```bash @@ -411,7 +410,7 @@ data: {"id":"","object":"","created":0,"choices":[{"delta":{"content":"影"},"in data: {"id":"","object":"","created":0,"choices":[{"delta":{"content":"《"},"index":0,"finish_reason":null}]} ``` - + ```json { @@ -500,7 +499,7 @@ data: {"id":"","object":"","created":0,"choices":[{"delta":{"content":"《"},"in ``` - + ```bash event: flowNodeStatus @@ -535,7 +534,7 @@ data: [{"moduleName":"知识库搜索","moduleType":"datasetSearchNode","running ``` - + event取值: @@ -559,8 +558,8 @@ event取值: 当你调用一个带交互节点的工作流时,如果工作流遇到了交互节点,那么会直接返回,你可以得到下面的信息: - - + + ```json { @@ -583,7 +582,7 @@ event取值: } ``` - + ```json { @@ -637,8 +636,8 @@ event取值: 紧接着上一节,当你接收到交互节点信息后,可以根据这些数据进行 UI 渲染,引导用户输入或选择相关信息。然后需要再次发起对话,来继续工作流。调用的接口与仍是该接口,你需要按以下格式来发起请求: - - + + 对于用户选择,你只需要直接传递一个选择的结果给 messages 即可。 @@ -660,7 +659,7 @@ curl --location --request POST 'https://api.fastgpt.in/api/v1/chat/completions' ``` - + 表单输入稍微麻烦一点,需要将输入的内容,以对象形式并序列化成字符串,作为`messages`的值。对象的 key 对应表单的 key,value 为用户输入的值。务必确保`chatId`是一致的。 @@ -713,8 +712,8 @@ curl --location --request POST 'http://localhost:3000/api/v1/chat/completions' \ ### 响应示例 - - + + * 插件的输出可以通过查找`responseData`中, `moduleType=pluginOutput`的元素,其`pluginOutput`是插件的输出。 * 流输出,仍可以通过`choices`进行获取。 @@ -779,7 +778,7 @@ curl --location --request POST 'http://localhost:3000/api/v1/chat/completions' \ ``` - + * 插件的输出可以通过获取`event=flowResponses`中的字符串,并将其反序列化后得到一个数组。同样的,查找 `moduleType=pluginOutput`的元素,其`pluginOutput`是插件的输出。 * 流输出,仍和对话接口一样获取。 @@ -844,7 +843,7 @@ data: [{"nodeId":"fdDgXQ6SYn8v","moduleName":"AI 对话","moduleType":"chatNode" ``` - + event取值: @@ -877,8 +876,8 @@ event取值: ### 获取某个应用历史记录 - - + + ```bash curl --location --request POST 'http://localhost:3000/api/core/chat/getHistories' \ @@ -893,7 +892,7 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/getHistories ``` - + - appId - 应用 Id @@ -904,7 +903,7 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/getHistories - + ```json @@ -941,8 +940,8 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/getHistories ### 修改某个对话的标题 - - + + ```bash @@ -958,7 +957,7 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/updateHistor - + @@ -969,7 +968,7 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/updateHistor - + ```json @@ -985,8 +984,8 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/updateHistor ### 置顶 / 取消置顶 - - + + ```bash @@ -1002,7 +1001,7 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/updateHistor - + @@ -1013,7 +1012,7 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/updateHistor - + ```json @@ -1030,8 +1029,8 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/updateHistor ### 删除某个历史记录 - - + + ```bash @@ -1041,7 +1040,7 @@ curl --location --request DELETE 'http://localhost:3000/api/core/chat/delHistory - + @@ -1051,7 +1050,7 @@ curl --location --request DELETE 'http://localhost:3000/api/core/chat/delHistory - + ```json @@ -1070,8 +1069,8 @@ curl --location --request DELETE 'http://localhost:3000/api/core/chat/delHistory 仅会情况通过 API Key 创建的对话历史记录,不会清空在线使用、分享链接等其他来源的对话历史记录。 - - + + ```bash @@ -1081,7 +1080,7 @@ curl --location --request DELETE 'http://localhost:3000/api/core/chat/clearHisto - + @@ -1090,7 +1089,7 @@ curl --location --request DELETE 'http://localhost:3000/api/core/chat/clearHisto - + ```json @@ -1111,8 +1110,8 @@ curl --location --request DELETE 'http://localhost:3000/api/core/chat/clearHisto ### 获取单个对话初始化信息 - - + + ```bash @@ -1120,7 +1119,7 @@ curl --location --request GET 'http://localhost:3000/api/core/chat/init?appId=[a --header 'Authorization: Bearer [apikey]' ``` - + @@ -1130,7 +1129,7 @@ curl --location --request GET 'http://localhost:3000/api/core/chat/init?appId=[a - + ```json { @@ -1193,8 +1192,8 @@ curl --location --request GET 'http://localhost:3000/api/core/chat/init?appId=[a ### 获取对话记录列表 - - + + ```bash @@ -1212,7 +1211,7 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/getPaginatio - + @@ -1225,7 +1224,7 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/getPaginatio - + ```json @@ -1284,8 +1283,8 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/getPaginatio ### 获取单个对话记录运行详情 - - + + ```bash @@ -1295,7 +1294,7 @@ curl --location --request GET 'http://localhost:3000/api/core/chat/getResData?ap - + @@ -1306,7 +1305,7 @@ curl --location --request GET 'http://localhost:3000/api/core/chat/getResData?ap - + ```json @@ -1364,7 +1363,7 @@ curl --location --request GET 'http://localhost:3000/api/core/chat/getResData?ap ### 删除对话记录 - + ```bash @@ -1374,7 +1373,7 @@ curl --location --request DELETE 'http://localhost:3000/api/core/chat/item/delet - + @@ -1385,7 +1384,7 @@ curl --location --request DELETE 'http://localhost:3000/api/core/chat/item/delet - + ```json @@ -1402,8 +1401,8 @@ curl --location --request DELETE 'http://localhost:3000/api/core/chat/item/delet ### 点赞 / 取消点赞 - - + + ```bash @@ -1420,7 +1419,7 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/feedback/upd - + @@ -1432,7 +1431,7 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/feedback/upd - + ```json @@ -1449,8 +1448,8 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/feedback/upd ### 点踩 / 取消点踩 - - + + ```bash @@ -1467,7 +1466,7 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/feedback/upd - + @@ -1479,7 +1478,7 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/feedback/upd - + ```json { @@ -1498,8 +1497,8 @@ curl --location --request POST 'http://localhost:3000/api/core/chat/feedback/upd 新版猜你想问,必须包含 appId 和 chatId 的参数才可以进行使用。会自动根据 chatId 去拉取最近 6 轮对话记录作为上下文来引导回答。 - - + + ```bash @@ -1519,7 +1518,7 @@ curl --location --request POST 'http://localhost:3000/api/core/ai/agent/v2/creat - + @@ -1546,7 +1545,7 @@ type CreateQuestionGuideParams = OutLinkChatAuthProps & { - + ```json @@ -1568,8 +1567,8 @@ type CreateQuestionGuideParams = OutLinkChatAuthProps & { **4.8.16 前旧版接口:** - - + + ```bash @@ -1592,7 +1591,7 @@ curl --location --request POST 'http://localhost:3000/api/core/ai/agent/createQu - + @@ -1601,7 +1600,7 @@ curl --location --request POST 'http://localhost:3000/api/core/ai/agent/createQu - + ```json diff --git a/document/content/docs/introduction/development/openapi/dataset.mdx b/document/content/docs/introduction/development/openapi/dataset.mdx index a43d45f0d86e..f62e1cbca156 100644 --- a/document/content/docs/introduction/development/openapi/dataset.mdx +++ b/document/content/docs/introduction/development/openapi/dataset.mdx @@ -8,7 +8,6 @@ weight: 853 --- import { Alert } from '@/components/docs/Alert'; -import { Tabs, Tab } from '@/components/docs/Tabs'; | 如何获取知识库ID(datasetId) | 如何获取文件集合ID(collection_id) | | --------------------- | --------------------- | @@ -16,8 +15,8 @@ import { Tabs, Tab } from '@/components/docs/Tabs'; ## 创建训练订单 - - + + **新例子** @@ -34,7 +33,7 @@ curl --location --request POST 'http://localhost:3000/api/support/wallet/usage/c - + data 为 billId,可用于添加知识库数据时进行账单聚合。 @@ -56,8 +55,8 @@ data 为 billId,可用于添加知识库数据时进行账单聚合。 ### 创建一个知识库 - - + + ```bash @@ -77,7 +76,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/create' \ - + @@ -92,7 +91,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/create' \ - + ```json @@ -110,8 +109,8 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/create' \ ### 获取知识库列表 - - + + ```bash @@ -125,7 +124,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/list?pare - + @@ -134,7 +133,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/list?pare - + @@ -173,8 +172,8 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/list?pare ### 获取知识库详情 - - + + ```bash @@ -184,7 +183,7 @@ curl --location --request GET 'http://localhost:3000/api/core/dataset/detail?id= - + @@ -193,7 +192,7 @@ curl --location --request GET 'http://localhost:3000/api/core/dataset/detail?id= - + @@ -241,8 +240,8 @@ curl --location --request GET 'http://localhost:3000/api/core/dataset/detail?id= ### 删除一个知识库 - - + + ```bash @@ -252,7 +251,7 @@ curl --location --request DELETE 'http://localhost:3000/api/core/dataset/delete? - + @@ -261,7 +260,7 @@ curl --location --request DELETE 'http://localhost:3000/api/core/dataset/delete? - + @@ -308,8 +307,8 @@ curl --location --request DELETE 'http://localhost:3000/api/core/dataset/delete? ### 创建一个空的集合 - - + + ```bash @@ -329,7 +328,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/collectio - + @@ -344,7 +343,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/collectio - + data 为集合的 ID。 @@ -367,8 +366,8 @@ data 为集合的 ID。 传入一段文字,创建一个集合,会根据传入的文字进行分割。 - - + + ```bash @@ -391,7 +390,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/collectio - + @@ -404,7 +403,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/collectio - + data 为集合的 ID。 @@ -434,8 +433,8 @@ data 为集合的 ID。 传入一个网络链接,创建一个集合,会先去对应网页抓取内容,再抓取的文字进行分割。 - - + + ```bash @@ -459,7 +458,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/collectio - + @@ -471,7 +470,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/collectio - + data 为集合的 ID。 @@ -501,8 +500,8 @@ data 为集合的 ID。 传入一个文件,创建一个集合,会读取文件内容进行分割。目前支持:pdf, docx, md, txt, html, csv。 - - + + 使用代码上传时,请注意中文 filename 需要进行 encode 处理,否则容易乱码。 @@ -516,7 +515,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/collectio - + 需要使用 POST form-data 的格式上传。包含 file 和 data 两个字段。 @@ -528,7 +527,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/collectio - + data 为集合的 ID。 @@ -558,8 +557,8 @@ data 为集合的 ID。 传入一个文件的 id,创建一个集合,会读取文件内容进行分割。目前支持:pdf, docx, md, txt, html, csv。 - - + + 使用代码上传时,请注意中文 filename 需要进行 encode 处理,否则容易乱码。 @@ -584,7 +583,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/collectio - + 需要使用 POST form-data 的格式上传。包含 file 和 data 两个字段。 @@ -603,7 +602,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/collectio - + data 为集合的 ID。 @@ -631,8 +630,8 @@ data 为集合的 ID。 ### 创建一个外部文件库集合(商业版) - - + + ```bash @@ -659,7 +658,7 @@ curl --location --request POST 'http://localhost:3000/api/proApi/core/dataset/co - + | 参数 | 说明 | 必填 | @@ -673,7 +672,7 @@ curl --location --request POST 'http://localhost:3000/api/proApi/core/dataset/co - + data 为集合的 ID。 @@ -701,8 +700,8 @@ data 为集合的 ID。 ### 获取集合列表 - - + + **4.8.19+** @@ -736,7 +735,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/collectio - + @@ -750,7 +749,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/collectio - + @@ -822,8 +821,8 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/collectio ### 获取集合详情 - - + + ```bash @@ -834,7 +833,7 @@ curl --location --request GET 'http://localhost:3000/api/core/dataset/collection - + @@ -844,7 +843,7 @@ curl --location --request GET 'http://localhost:3000/api/core/dataset/collection - + @@ -895,8 +894,8 @@ curl --location --request GET 'http://localhost:3000/api/core/dataset/collection ### 修改集合信息 - - + + **通过集合 ID 修改集合信息** @@ -935,7 +934,7 @@ curl --location --request PUT 'http://localhost:3000/api/core/dataset/collection - + @@ -950,7 +949,7 @@ curl --location --request PUT 'http://localhost:3000/api/core/dataset/collection - + @@ -969,8 +968,8 @@ curl --location --request PUT 'http://localhost:3000/api/core/dataset/collection ### 删除一个集合 - - + + ```bash @@ -981,7 +980,7 @@ curl --location --request DELETE 'http://localhost:3000/api/core/dataset/collect - + @@ -991,7 +990,7 @@ curl --location --request DELETE 'http://localhost:3000/api/core/dataset/collect - + @@ -1043,8 +1042,8 @@ curl --location --request DELETE 'http://localhost:3000/api/core/dataset/collect 注意,每次最多推送 200 组数据。 - - + + ```bash @@ -1080,7 +1079,7 @@ curl --location --request POST 'https://api.fastgpt.in/api/core/dataset/data/pus - + @@ -1096,7 +1095,7 @@ curl --location --request POST 'https://api.fastgpt.in/api/core/dataset/data/pus - + ```json @@ -1115,7 +1114,7 @@ curl --location --request POST 'https://api.fastgpt.in/api/core/dataset/data/pus - + [theme] 里的内容可以换成数据的主题。默认为:它们可能包含多个主题内容 @@ -1144,8 +1143,8 @@ A2: ### 获取集合的数据列表 - - + + **4.8.11+** @@ -1179,7 +1178,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/data/list - + @@ -1194,7 +1193,7 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/data/list - + @@ -1232,8 +1231,8 @@ curl --location --request POST 'http://localhost:3000/api/core/dataset/data/list ### 获取单条数据详情 - - + + ```bash @@ -1244,7 +1243,7 @@ curl --location --request GET 'http://localhost:3000/api/core/dataset/data/detai - + @@ -1254,7 +1253,7 @@ curl --location --request GET 'http://localhost:3000/api/core/dataset/data/detai - + @@ -1292,8 +1291,8 @@ curl --location --request GET 'http://localhost:3000/api/core/dataset/data/detai ### 修改单条数据 - - + + ```bash @@ -1326,7 +1325,7 @@ curl --location --request PUT 'http://localhost:3000/api/core/dataset/data/updat - + @@ -1339,7 +1338,7 @@ curl --location --request PUT 'http://localhost:3000/api/core/dataset/data/updat - + @@ -1358,8 +1357,8 @@ curl --location --request PUT 'http://localhost:3000/api/core/dataset/data/updat ### 删除单条数据 - - + + ```bash @@ -1370,7 +1369,7 @@ curl --location --request DELETE 'http://localhost:3000/api/core/dataset/data/de - + @@ -1380,7 +1379,7 @@ curl --location --request DELETE 'http://localhost:3000/api/core/dataset/data/de - + @@ -1399,8 +1398,8 @@ curl --location --request DELETE 'http://localhost:3000/api/core/dataset/data/de ## 搜索测试 - - + + ```bash @@ -1424,7 +1423,7 @@ curl --location --request POST 'https://api.fastgpt.in/api/core/dataset/searchTe - + @@ -1442,7 +1441,7 @@ curl --location --request POST 'https://api.fastgpt.in/api/core/dataset/searchTe - + 返回 top k 结果, limit 为最大 Tokens 数量,最多 20000 tokens。 diff --git a/document/content/docs/introduction/development/openapi/meta.json b/document/content/docs/introduction/development/openapi/meta.json index 5da9e5a0cb95..795f43d681f1 100644 --- a/document/content/docs/introduction/development/openapi/meta.json +++ b/document/content/docs/introduction/development/openapi/meta.json @@ -1,4 +1,4 @@ { - "title": "OpenAPI接口文档" -} - \ No newline at end of file + "title": "OpenAPI接口文档", + "pages": ["intro","chat","dataset","share"] +} \ No newline at end of file diff --git a/document/content/docs/introduction/development/openapi/share.mdx b/document/content/docs/introduction/development/openapi/share.mdx index fbebe5d10db6..21f9c7a2f8f7 100644 --- a/document/content/docs/introduction/development/openapi/share.mdx +++ b/document/content/docs/introduction/development/openapi/share.mdx @@ -8,7 +8,6 @@ weight: 860 --- import { Alert } from '@/components/docs/Alert'; -import { Tabs, Tab } from '@/components/docs/Tabs'; ## 介绍 @@ -64,8 +63,8 @@ import { Tabs, Tab } from '@/components/docs/Tabs'; ### 3. 编写聊天初始化校验接口 - - + + ```bash @@ -79,7 +78,7 @@ curl --location --request POST '{{host}}/shareAuth/init' \ - + ```json @@ -96,7 +95,7 @@ curl --location --request POST '{{host}}/shareAuth/init' \ - + ```json @@ -114,8 +113,8 @@ curl --location --request POST '{{host}}/shareAuth/init' \ ### 4. 编写对话前校验接口 - - + + ```bash @@ -130,7 +129,7 @@ curl --location --request POST '{{host}}/shareAuth/start' \ - + ```json @@ -145,7 +144,7 @@ curl --location --request POST '{{host}}/shareAuth/start' \ - + ```json @@ -303,8 +302,8 @@ type ResponseType = { - - + + 这个接口中,我们设置了`token`必须等于`fastgpt`才能通过校验。(实际生产中不建议固定写死) @@ -328,7 +327,7 @@ export default async function (ctx: FunctionContext) { - + 这个接口中,我们设置了`token`必须等于`fastgpt`才能通过校验。并且如果问题中包含了`你`字,则会报错,用于模拟敏感校验。 @@ -357,7 +356,7 @@ export default async function (ctx: FunctionContext) { - + 结果上报接口可自行进行逻辑处理。 diff --git a/document/content/docs/introduction/development/proxy/meta.json b/document/content/docs/introduction/development/proxy/meta.json index b9bc4e9c422b..f9add6443710 100644 --- a/document/content/docs/introduction/development/proxy/meta.json +++ b/document/content/docs/introduction/development/proxy/meta.json @@ -1,5 +1,5 @@ { - "title": "代理方案", - "description": "FastGPT 私有化部署代理方案" -} - \ No newline at end of file + "title": "代理方案", + "description": "FastGPT 私有化部署代理方案", + "pages": ["nginx","http_proxy","cloudflare"] +} \ No newline at end of file diff --git a/document/content/docs/introduction/development/upgrading/4100.mdx b/document/content/docs/introduction/development/upgrading/4100.mdx new file mode 100644 index 000000000000..745e59782dd6 --- /dev/null +++ b/document/content/docs/introduction/development/upgrading/4100.mdx @@ -0,0 +1,61 @@ +--- +title: 'V4.10.0' +description: 'FastGPT V4.10.0 更新说明' +icon: 'upgrade' +draft: false +toc: true +weight: 785 +--- + +## 更新指南 + +### Docker 版本 + +- 参考最新的[docker-compose.yml](https://github.com/labring/FastGPT/blob/main/deploy/docker/docker-compose-pgvector.yml)文件,加入`fastgpt-plugin`和`minio`服务。 +- 修改`fastgpt-plugin`环境变量`AUTH_TOKEN`为较复杂的值。 +- 修改`fastgpt-plugin`环境变量`MINIO_CUSTOM_ENDPOINT`为`http://ip:port` 或相关域名,要求fastgpt 用户可访问。 +- 更新`fastgpt`和`fastgpt-pro`(商业版)容器的环境变量: + +``` +PLUGIN_BASE_URL=http://fastgpt-plugin:3000 +PLUGIN_TOKEN=刚修改的 AUTH_TOKEN 值 +``` +- 更新`fastgpt`和`fastgpt-pro`镜像 tag: v4.10.0-fix +- `docker-compose up -d`启动/更新所有服务。 + +### Sealos 版本 + +- 在 Sealos 桌面的`对象存储`中,新建一个存储桶,设置`publicRead`权限。并获取相关密钥: + +![](/imgs/sealos-s3.png) + +- 部署`fastgpt-plugin`服务,镜像`registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-plugin:v0.1.0`,无需公网访问,设置环境变量: + +``` +AUTH_TOKEN=鉴权 token + +# 日志等级: debug,info,warn,error +LOG_LEVEL=info + +# S3 配置 +MINIO_CUSTOM_ENDPOINT=External +MINIO_ENDPOINT=Internal地址 +MINIO_PORT=443 +MINIO_USE_SSL=true +MINIO_ACCESS_KEY=Access Key +MINIO_SECRET_KEY=Secret Key +MINIO_BUCKET=存储桶名 +``` + +- 更新`fastgpt`和`fastgpt-pro`(商业版)容器的环境变量以及镜像 tag: v4.10.0-fix + +``` +PLUGIN_BASE_URL=fastgpt-plugin 服务的内网地址 +PLUGIN_TOKEN=刚修改的 AUTH_TOKEN 值 +``` + +## 🚀 新增内容 + +1. 独立系统工具服务,支持系统工具独立开发和调试。 +2. 更新系统工具开发指南[系统工具开发指南](/docs/guide/plugins/dev_system_tool/)。 +3. 更新[系统工具设计文档](/docs/guide/plugins/design_plugin/)。 diff --git a/document/content/docs/introduction/development/upgrading/4101.mdx b/document/content/docs/introduction/development/upgrading/4101.mdx new file mode 100644 index 000000000000..4a361adde364 --- /dev/null +++ b/document/content/docs/introduction/development/upgrading/4101.mdx @@ -0,0 +1,59 @@ +--- +title: 'V4.10.1' +description: 'FastGPT V4.10.1 更新说明' +icon: 'upgrade' +draft: false +toc: true +weight: 784 +--- + +## 更新指南 + +### 1. 更新镜像: + +- 更新 FastGPT 镜像tag: v4.10.1-fix +- 更新 FastGPT 商业版镜像tag: v4.10.1 +- 更新 fastgpt-plugin 镜像 tag: v0.1.3 +- mcp_server 无需更新 +- Sandbox 无需更新 +- AIProxy 无需更新 + +### 2. 执行升级脚本 + +该脚本仅需商业版用户执行。 + +从任意终端,发起 1 个 HTTP 请求。其中 `{{rootkey}}` 替换成环境变量里的 `rootkey`;`{{host}}` 替换成**FastGPT 域名**。 + +```bash +curl --location --request POST 'https://{{host}}/api/admin/initv4101' \ +--header 'rootkey: {{rootkey}}' \ +--header 'Content-Type: application/json' +``` + +- 给自动同步的知识库加入新的定时任务。 + +## 🚀 新增内容 + +1. 系统工具支持流输出。 +2. 商业版第三方知识库定时同步,支持全量同步,可以同步整个目录。 + +## ⚙️ 优化 + +1. 定时任务报错日志记录到对话日志。 +2. 封装应用动态form渲染组件。 +3. 目录面包屑导航溢出省略。 + +## 🐛 修复 + +1. 搜索类型系统工具无法正常显示。 +2. 部分系统工具向下兼容问题。 +3. AI 节点,手动选择历史记录时,会导致 system 记录重复。 +4. 知识库 tag 无法滚动到底。 +5. API 知识库通过 API 导入文件时,自定义 API 解析参数未生效。 + +## 🔨 工具更新 + +1. 新增 Flux 官方绘图工具。 +2. 新增 JinaAI 工具集。 +3. 新增阿里百炼 Flux 和通义万相绘图。 +4. 纠正硅基流动画图工具输出值类型。 diff --git a/document/content/docs/introduction/development/upgrading/meta.json b/document/content/docs/introduction/development/upgrading/meta.json index a8f5d563491d..11feee515d8a 100644 --- a/document/content/docs/introduction/development/upgrading/meta.json +++ b/document/content/docs/introduction/development/upgrading/meta.json @@ -1,6 +1,5 @@ { - "title": "版本更新/升级操作", - "description": "FastGPT 版本更新介绍及升级操作", - "pages": ["4914","z...a"] -} - \ No newline at end of file + "title": "版本更新/升级操作", + "description": "FastGPT 版本更新介绍及升级操作", + "pages": ["intro","4101","4100","4914","4913","4912","4911","4910","499","498","497","496","495","494","493","492","491","490","4823","4822","4821","4820","4819","4818","4817","4816","4815","4814","4813","4812","4811","4810","489","488","487","486","485","484","483","482","481","48","471","47","469","468","467","466","465","464","463","462","461","46","452","451","45","447","446","445","442","441","44","43","421","42","41","40"] +} \ No newline at end of file diff --git a/document/content/docs/introduction/guide/DialogBoxes/meta.json b/document/content/docs/introduction/guide/DialogBoxes/meta.json index 7a037d337f9a..1c72cf27391d 100644 --- a/document/content/docs/introduction/guide/DialogBoxes/meta.json +++ b/document/content/docs/introduction/guide/DialogBoxes/meta.json @@ -1,4 +1,5 @@ { - "title": "对话框", - "description": "对话框组件,支持多种交互方式,提升用户在应用中的交互体验。" + "title": "对话框", + "description": "对话框组件,支持多种交互方式,提升用户在应用中的交互体验。", + "pages": ["htmlRendering","quoteList"] } \ No newline at end of file diff --git a/document/content/docs/introduction/guide/admin/meta.json b/document/content/docs/introduction/guide/admin/meta.json index 830823a3a57f..7c9f499497f8 100644 --- a/document/content/docs/introduction/guide/admin/meta.json +++ b/document/content/docs/introduction/guide/admin/meta.json @@ -1,4 +1,5 @@ { - "title": "商业版后台", - "description": "商业版后台使用教程" + "title": "商业版后台", + "description": "商业版后台使用教程", + "pages": ["sso","teamMode"] } \ No newline at end of file diff --git a/document/content/docs/introduction/guide/admin/sso.mdx b/document/content/docs/introduction/guide/admin/sso.mdx index 5babb1cba425..00e52d8a7454 100644 --- a/document/content/docs/introduction/guide/admin/sso.mdx +++ b/document/content/docs/introduction/guide/admin/sso.mdx @@ -8,7 +8,6 @@ weight: 707 --- import { Alert } from '@/components/docs/Alert'; -import { Tabs, Tab } from '@/components/docs/Tabs'; 如果你不需要用到 SSO/成员同步功能,或者是只需要用 Github、google、microsoft、公众号的快速登录,可以跳过本章节。本章适合需要接入自己的成员系统或主流 办公IM 的用户。 @@ -431,8 +430,8 @@ FastGPT 提供如下标准接口支持: 返回一个重定向登录地址,fastgpt 会自动重定向到该地址。redirect_uri 会自动拼接到该地址的 query中。 - - + + ```bash curl -X GET "https://redict.example/login/oauth/getAuthURL?redirect_uri=xxx&state=xxxx" \ @@ -441,7 +440,7 @@ curl -X GET "https://redict.example/login/oauth/getAuthURL?redirect_uri=xxx&stat ``` - + 成功: @@ -471,8 +470,8 @@ curl -X GET "https://redict.example/login/oauth/getAuthURL?redirect_uri=xxx&stat 该接口接受一个 code 参数作为鉴权,消费 code 返回用户信息。 - - + + ```bash curl -X GET "https://oauth.example/login/oauth/getUserInfo?code=xxxxxx" \ @@ -482,7 +481,7 @@ curl -X GET "https://oauth.example/login/oauth/getUserInfo?code=xxxxxx" \ - + 成功: ```json @@ -512,8 +511,8 @@ curl -X GET "https://oauth.example/login/oauth/getUserInfo?code=xxxxxx" \ ### 获取组织 - - + + ```bash curl -X GET "https://example.com/org/list" \ @@ -523,7 +522,7 @@ curl -X GET "https://example.com/org/list" \ - + ⚠️注意:只能存在一个根部门。如果你的系统中存在多个根部门,需要先进行处理,加一个虚拟的根部门。返回值类型: @@ -565,8 +564,8 @@ type OrgListResponseType = { ### 获取成员 - - + + ```bash curl -X GET "https://example.com/user/list" \ @@ -576,7 +575,7 @@ curl -X GET "https://example.com/user/list" \ - + 返回值类型: diff --git a/document/content/docs/introduction/guide/course/meta.json b/document/content/docs/introduction/guide/course/meta.json index ba827524df53..8f158abc1025 100644 --- a/document/content/docs/introduction/guide/course/meta.json +++ b/document/content/docs/introduction/guide/course/meta.json @@ -1,4 +1,5 @@ { - "title": "基础教程", - "description": "FastGPT 基础教程" + "title": "基础教程", + "description": "FastGPT 基础教程", + "pages": ["quick-start","ai_settings","chat_input_guide","collection_tags","fileInput"] } \ No newline at end of file diff --git a/document/content/docs/introduction/guide/dashboard/meta.json b/document/content/docs/introduction/guide/dashboard/meta.json index d8084767aa84..26e51f74dce8 100644 --- a/document/content/docs/introduction/guide/dashboard/meta.json +++ b/document/content/docs/introduction/guide/dashboard/meta.json @@ -1,4 +1,5 @@ { - "title": "工作台", - "description": "FastGPT 工作台及工作流节点的使用说明" + "title": "工作台", + "description": "FastGPT 工作台及工作流节点的使用说明", + "pages": ["basic-mode","intro","workflow","mcp_server","mcp_tools","gapier"] } \ No newline at end of file diff --git a/document/content/docs/introduction/guide/dashboard/workflow/http.mdx b/document/content/docs/introduction/guide/dashboard/workflow/http.mdx index bc85b89f1633..ad1d92f97359 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/http.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/http.mdx @@ -8,7 +8,6 @@ weight: 252 --- import { Alert } from '@/components/docs/Alert'; -import { Tabs, Tab } from '@/components/docs/Tabs'; ## 特点 @@ -61,8 +60,8 @@ HTTP 模块会向对应的地址发送一个 `HTTP` 请求,实际操作与 Pos 可以写一个`自定义的 Json`,并通过 `{{key}}` 来引入变量。例如: - - + + ```json @@ -80,7 +79,7 @@ HTTP 模块会向对应的地址发送一个 `HTTP` 请求,实际操作与 Pos - + 注意,在 Body 中,你如果引用`字符串`,则需要加上`""`,例如:`"{{string}}"`。 @@ -99,7 +98,7 @@ HTTP 模块会向对应的地址发送一个 `HTTP` 请求,实际操作与 Pos - + ```json @@ -127,8 +126,8 @@ HTTP 模块会向对应的地址发送一个 `HTTP` 请求,实际操作与 Pos 语法可以参考: https://github.com/JSONPath-Plus/JSONPath?tab=readme-ov-file - - + + ```json @@ -153,7 +152,7 @@ HTTP 模块会向对应的地址发送一个 `HTTP` 请求,实际操作与 Pos - + ```json diff --git a/document/content/docs/introduction/guide/dashboard/workflow/meta.json b/document/content/docs/introduction/guide/dashboard/workflow/meta.json index debf33cc6b02..87dafff30092 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/meta.json +++ b/document/content/docs/introduction/guide/dashboard/workflow/meta.json @@ -1,4 +1,5 @@ { - "title": "工作流节点", - "description": "FastGPT 工作流节点设置和使用指南" + "title": "工作流节点", + "description": "FastGPT 工作流节点设置和使用指南", + "pages": ["ai_chat","dataset_search","tool","question_classify","content_extract","user-selection","form_input","text_editor","reply","document_parsing","http","tfswitch","variable_update","sandbox","loop","knowledge_base_search_merge","coreferenceResolution","laf","custom_feedback"] } \ No newline at end of file diff --git a/document/content/docs/introduction/guide/knowledge_base/api_dataset.mdx b/document/content/docs/introduction/guide/knowledge_base/api_dataset.mdx index 673878fba882..b9e85219cae6 100644 --- a/document/content/docs/introduction/guide/knowledge_base/api_dataset.mdx +++ b/document/content/docs/introduction/guide/knowledge_base/api_dataset.mdx @@ -8,7 +8,6 @@ weight: 405 --- import { Alert } from '@/components/docs/Alert'; -import { Tabs, Tab } from '@/components/docs/Tabs'; | | | | --- | --- | @@ -57,8 +56,8 @@ type FileListItem = { ### 1. 获取文件树 - - + + @@ -79,7 +78,7 @@ curl --location --request POST '{{baseURL}}/v1/file/list' \ - + ```json @@ -106,8 +105,8 @@ curl --location --request POST '{{baseURL}}/v1/file/list' \ ### 2. 获取单个文件内容(文本内容或访问链接) - - + + ```bash @@ -118,7 +117,7 @@ curl --location --request GET '{{baseURL}}/v1/file/content?id=xx' \ - + ```json @@ -151,8 +150,8 @@ curl --location --request GET '{{baseURL}}/v1/file/content?id=xx' \ ### 3. 获取文件阅读链接(用于查看原文) - - + + id 为文件的 id。 @@ -165,7 +164,7 @@ curl --location --request GET '{{baseURL}}/v1/file/read?id=xx' \ - + ```json diff --git a/document/content/docs/introduction/guide/knowledge_base/meta.json b/document/content/docs/introduction/guide/knowledge_base/meta.json index 2841ff82eb0a..be2f549adf39 100644 --- a/document/content/docs/introduction/guide/knowledge_base/meta.json +++ b/document/content/docs/introduction/guide/knowledge_base/meta.json @@ -1,4 +1,5 @@ { - "title": "知识库", - "description": "知识库的基础原理、搜索方案、Web站点同步和外部文件知识库的使用方法。" + "title": "知识库", + "description": "知识库的基础原理、搜索方案、Web站点同步和外部文件知识库的使用方法。", + "pages": ["RAG","dataset_engine","api_dataset","lark_dataset","yuque_dataset","websync","externalFile","third_dataset","template"] } \ No newline at end of file diff --git a/document/content/docs/introduction/guide/meta.json b/document/content/docs/introduction/guide/meta.json index 5079cffb25b8..2d9ba5187a0d 100644 --- a/document/content/docs/introduction/guide/meta.json +++ b/document/content/docs/introduction/guide/meta.json @@ -1,5 +1,5 @@ { - "title": "功能介绍", - "description": "FastGPT 功能介绍", - "pages": ["course","dashboard","plugins","knowledge_base","team_permissions","DialogBoxes","admin"] + "title": "功能介绍", + "description": "FastGPT 功能介绍", + "pages": ["course","dashboard","plugins","knowledge_base","team_permissions","DialogBoxes","admin"] } \ No newline at end of file diff --git a/document/content/docs/introduction/guide/plugins/meta.json b/document/content/docs/introduction/guide/plugins/meta.json index e7aff4a73e75..9cda406e9656 100644 --- a/document/content/docs/introduction/guide/plugins/meta.json +++ b/document/content/docs/introduction/guide/plugins/meta.json @@ -1,4 +1,5 @@ { - "title": "系统插件", - "description": "介绍如何使用和提交系统插件,以及各插件的填写说明" + "title": "系统插件", + "description": "介绍如何使用和提交系统插件,以及各插件的填写说明", + "pages": ["dev_system_tool","how_to_submit_system_plugin","searxng_plugin_guide","google_search_plugin_guide","bing_search_plugin","doc2x_plugin_guide"] } \ No newline at end of file diff --git a/document/content/docs/introduction/guide/team_permissions/meta.json b/document/content/docs/introduction/guide/team_permissions/meta.json index 109a58853766..e1ec7bdf4e14 100644 --- a/document/content/docs/introduction/guide/team_permissions/meta.json +++ b/document/content/docs/introduction/guide/team_permissions/meta.json @@ -1,4 +1,5 @@ { - "title": "团队与权限", - "description": "团队管理、成员组与权限设置,确保团队协作中的数据安全和权限分配合理。" + "title": "团队与权限", + "description": "团队管理、成员组与权限设置,确保团队协作中的数据安全和权限分配合理。", + "pages": ["team_roles_permissions","invitation_link"] } \ No newline at end of file diff --git a/document/content/docs/introduction/index.en.mdx b/document/content/docs/introduction/index.en.mdx index 35319c4dccd1..8877012932e0 100644 --- a/document/content/docs/introduction/index.en.mdx +++ b/document/content/docs/introduction/index.en.mdx @@ -4,11 +4,10 @@ description: 'FastGPT 的能力与优势' icon: 'rocket_launch' draft: false toc: true -weight: -10 +weight: 0 --- import { Alert } from '@/components/docs/Alert'; -import { Tabs, Tab } from '@/components/docs/Tabs'; FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,将智能对话与可视化编排完美结合,让 AI 应用开发变得简单自然。无论您是开发者还是业务人员,都能轻松打造专属的 AI 应用。 diff --git a/document/content/docs/introduction/index.mdx b/document/content/docs/introduction/index.mdx index 35319c4dccd1..28579cced166 100644 --- a/document/content/docs/introduction/index.mdx +++ b/document/content/docs/introduction/index.mdx @@ -1,14 +1,13 @@ --- title: '快速了解 FastGPT' description: 'FastGPT 的能力与优势' -icon: 'rocket_launch' +icon: Album draft: false toc: true weight: -10 --- import { Alert } from '@/components/docs/Alert'; -import { Tabs, Tab } from '@/components/docs/Tabs'; FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,将智能对话与可视化编排完美结合,让 AI 应用开发变得简单自然。无论您是开发者还是业务人员,都能轻松打造专属的 AI 应用。 diff --git a/document/content/docs/introduction/meta.json b/document/content/docs/introduction/meta.json index 6e769cfc4dac..e16c8317ec1f 100644 --- a/document/content/docs/introduction/meta.json +++ b/document/content/docs/introduction/meta.json @@ -1,6 +1,6 @@ { - "title": "FastGPT Docs", - "root": true, - "pages": ["[Handshake][联系我们](https://fael3z0zfze.feishu.cn/share/base/form/shrcnRxj3utrzjywsom96Px4sud)","guide","development", "FAQ", "shopping_cart","community"], - "order": 1 + "title": "FastGPT Docs", + "root": true, + "pages": ["[Handshake][联系我们](https://fael3z0zfze.feishu.cn/share/base/form/shrcnRxj3utrzjywsom96Px4sud)","index","guide","development","FAQ","shopping_cart","community"], + "order": 1 } \ No newline at end of file diff --git a/document/content/docs/introduction/shopping_cart/meta.json b/document/content/docs/introduction/shopping_cart/meta.json index f44703f1cb50..bed97d1075d6 100644 --- a/document/content/docs/introduction/shopping_cart/meta.json +++ b/document/content/docs/introduction/shopping_cart/meta.json @@ -1,4 +1,4 @@ { - "title": "收费说明" -} - \ No newline at end of file + "title": "收费说明", + "pages": ["saas","intro"] +} \ No newline at end of file diff --git a/document/content/docs/protocol/meta.json b/document/content/docs/protocol/meta.json index fe80f6dab1b4..a0974d155e54 100644 --- a/document/content/docs/protocol/meta.json +++ b/document/content/docs/protocol/meta.json @@ -1,8 +1,7 @@ { - "title": "协议", - "root": true, - "description": "协议", - "pages": ["open-source","privacy-policy","terms"], - "order": 3 -} - \ No newline at end of file + "title": "协议", + "root": true, + "description": "协议", + "pages": ["index","open-source","terms","privacy"], + "order": 3 +} \ No newline at end of file diff --git a/document/content/docs/use-cases/app-cases/meta.json b/document/content/docs/use-cases/app-cases/meta.json index efc46fb7faa8..5b0c89e74755 100644 --- a/document/content/docs/use-cases/app-cases/meta.json +++ b/document/content/docs/use-cases/app-cases/meta.json @@ -1,4 +1,5 @@ { - "title": "应用搭建案例", - "description": "FastGPT 应用场景及功能实现的搭建案例" + "title": "应用搭建案例", + "description": "FastGPT 应用场景及功能实现的搭建案例", + "pages": ["submit_application_template","translate-subtitle-using-gpt","multi_turn_translation_bot","english_essay_correction_bot","fixingEvidence","lab_appointment","dalle3","google_search","feishu_webhook"] } \ No newline at end of file diff --git a/document/content/docs/use-cases/external-integration/meta.json b/document/content/docs/use-cases/external-integration/meta.json index cd5ca84463c1..1077699cd21e 100644 --- a/document/content/docs/use-cases/external-integration/meta.json +++ b/document/content/docs/use-cases/external-integration/meta.json @@ -1,4 +1,5 @@ { - "title": "外部调用 FastGPT", - "description": "外部应用通过多种方式调用 FastGPT 功能的教程" + "title": "外部调用 FastGPT", + "description": "外部应用通过多种方式调用 FastGPT 功能的教程", + "pages": ["openapi","feishu","dingtalk","official_account","onwechat","wechat","iframe_integration"] } \ No newline at end of file diff --git a/document/content/docs/use-cases/index.mdx b/document/content/docs/use-cases/index.mdx index 7d37516202bb..c0d67aa82119 100644 --- a/document/content/docs/use-cases/index.mdx +++ b/document/content/docs/use-cases/index.mdx @@ -1,7 +1,7 @@ --- weight: 0 -title: '文档' -description: 'FastGPT 官方文档' +title: '使用案例' +description: 'FastGPT 使用案例' icon: menu_book lead: '' draft: false diff --git a/document/content/docs/use-cases/meta.json b/document/content/docs/use-cases/meta.json index 2fddf885e540..300d3242e7a3 100644 --- a/document/content/docs/use-cases/meta.json +++ b/document/content/docs/use-cases/meta.json @@ -1,7 +1,7 @@ { - "title": "使用案例", - "description": "有关 FastGPT 其他实践案例的更多信息", - "root": true, - "pages": ["app-cases","external-integration"], - "order": 2 + "title": "使用案例", + "description": "有关 FastGPT 其他实践案例的更多信息", + "root": true, + "pages": ["index","external-integration","app-cases"], + "order": 2 } \ No newline at end of file diff --git a/document/meta-order.js b/document/meta-order.js new file mode 100644 index 000000000000..b6abf0bbdf4a --- /dev/null +++ b/document/meta-order.js @@ -0,0 +1,92 @@ +import fs from 'fs-extra'; +import path from 'path'; + +// 从 mdx 文件中读取 weight +async function getWeightFromFile(filePath) { + const content = await fs.readFile(filePath, 'utf-8'); + const weightMatch = content.match(/weight:\s*(\d+)/); + return weightMatch ? parseInt(weightMatch[1], 10) : 0; +} + +// 从 meta.json 中读取最小 weight(用于子目录) +async function getWeightFromMeta(dir) { + const metaPath = path.join(dir, 'meta.json'); + if (!(await fs.pathExists(metaPath))) return Infinity; + + try { + const meta = await fs.readJson(metaPath); + const pages = meta.pages || []; + let minWeight = Infinity; + + for (const pageName of pages) { + const mdxPath = path.join(dir, `${pageName}.mdx`); + if (await fs.pathExists(mdxPath)) { + const w = await getWeightFromFile(mdxPath); + if (w < minWeight) minWeight = w; + } + } + return minWeight === Infinity ? 0 : minWeight; + } catch { + return 0; + } +} + +// 主函数,返回当前目录的最小 weight +async function generateMetaRecursive(dir) { + const entries = await fs.readdir(dir, { withFileTypes: true }); + const items = []; + + for (const entry of entries) { + const fullPath = path.join(dir, entry.name); + + if (entry.isDirectory()) { + const subWeight = await generateMetaRecursive(fullPath); + items.push({ name: entry.name, weight: subWeight }); + } else if ( + entry.isFile() && + entry.name.endsWith('.mdx') && + !entry.name.endsWith('.en.mdx') + ) { + const nameWithoutExt = entry.name.replace(/\.mdx$/, ''); + const weight = await getWeightFromFile(fullPath); + items.push({ name: nameWithoutExt, weight }); + } + } + + // 排序 pages + items.sort((a, b) => a.weight - b.weight); + const pages = items.map((item) => item.name); + + // 读取或创建 meta.json + const metaPath = path.join(dir, 'meta.json'); + let meta = { + title: 'FastGPT', + description: 'FastGPT Docs', + }; + + if (await fs.pathExists(metaPath)) { + try { + meta = await fs.readJson(metaPath); + } catch { + console.warn(`⚠️ Failed to parse existing meta.json at ${metaPath}, using defaults.`); + } + } + + meta.pages = pages; + + // 写入 meta.json,格式化为一行的 pages + const jsonString = JSON.stringify(meta, null, 2); + const oneLinePages = `"pages": ${JSON.stringify(pages)}`; + const finalJson = jsonString.replace(/"pages": \[[\s\S]*?\]/, oneLinePages); + await fs.writeFile(metaPath, finalJson, 'utf-8'); + console.log(`✅ Updated meta.json in ${dir}`); + + return items.length > 0 ? items[0].weight : 0; +} + +// 启动 +const targetDir = './content/docs/introduction/development/upgrading'; + +generateMetaRecursive(targetDir) + .then(() => console.log('🎉 All meta.json files generated/updated!')) + .catch((err) => console.error(err)); diff --git a/document/middleware.ts b/document/middleware.ts index d2bf10e8084f..7084d0d8b840 100644 --- a/document/middleware.ts +++ b/document/middleware.ts @@ -4,5 +4,5 @@ import { i18n } from '@/lib/i18n'; export default createI18nMiddleware(i18n); export const config = { - matcher: ['/((?!api|_next/static|_next/image|favicon.ico|.*\\.svg).*)'] + matcher: ['/((?!api|_next/static|_next/image|favicon.ico|.*\\.svg|.*\\.png).*)'] }; diff --git a/document/package.json b/document/package.json index 3c82fab60f89..011c95e697de 100644 --- a/document/package.json +++ b/document/package.json @@ -12,13 +12,21 @@ "@orama/orama": "^3.1.11", "@orama/tokenizers": "^3.1.11", "algoliasearch": "^5.32.0", + "fast-glob": "^3.3.3", + "fs-extra": "^11.3.0", "fumadocs-core": "15.6.3", "fumadocs-mdx": "11.6.11", "fumadocs-ui": "15.6.3", + "gray-matter": "^4.0.3", "lucide-react": "^0.525.0", "next": "15.3.5", "react": "^19.1.0", - "react-dom": "^19.1.0" + "react-dom": "^19.1.0", + "react-responsive": "^10.0.1", + "remark": "^15.0.1", + "remark-gfm": "^4.0.1", + "remark-mdx": "^3.1.0", + "remark-stringify": "^11.0.0" }, "devDependencies": { "@content-collections/core": "^0.10.0", diff --git a/document/pnpm-lock.yaml b/document/pnpm-lock.yaml index d2f605aa0c99..791fa5366b75 100644 --- a/document/pnpm-lock.yaml +++ b/document/pnpm-lock.yaml @@ -17,6 +17,12 @@ importers: algoliasearch: specifier: ^5.32.0 version: 5.32.0 + fast-glob: + specifier: ^3.3.3 + version: 3.3.3 + fs-extra: + specifier: ^11.3.0 + version: 11.3.0 fumadocs-core: specifier: 15.6.3 version: 15.6.3(@types/react@19.1.8)(algoliasearch@5.32.0)(next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -26,6 +32,9 @@ importers: fumadocs-ui: specifier: 15.6.3 version: 15.6.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(algoliasearch@5.32.0)(next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(tailwindcss@4.1.11) + gray-matter: + specifier: ^4.0.3 + version: 4.0.3 lucide-react: specifier: ^0.525.0 version: 0.525.0(react@19.1.0) @@ -38,6 +47,21 @@ importers: react-dom: specifier: ^19.1.0 version: 19.1.0(react@19.1.0) + react-responsive: + specifier: ^10.0.1 + version: 10.0.1(react@19.1.0) + remark: + specifier: ^15.0.1 + version: 15.0.1 + remark-gfm: + specifier: ^4.0.1 + version: 4.0.1 + remark-mdx: + specifier: ^3.1.0 + version: 3.1.0 + remark-stringify: + specifier: ^11.0.0 + version: 11.0.0 devDependencies: '@content-collections/core': specifier: ^0.10.0 @@ -521,6 +545,18 @@ packages: cpu: [x64] os: [win32] + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + '@orama/orama@3.1.11': resolution: {integrity: sha512-Szki0cgFiXE5F9RLx2lUyEtJllnuCSQ4B8RLDwIjXkVit6qZjoDAxH+xhJs29MjKLDz0tbPLdKFa6QrQ/qoGGA==} engines: {node: '>= 20.0.0'} @@ -1081,6 +1117,10 @@ packages: bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -1148,6 +1188,9 @@ packages: compute-scroll-into-view@3.1.1: resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==} + css-mediaquery@0.1.2: + resolution: {integrity: sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -1237,6 +1280,13 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fdir@6.4.6: resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} peerDependencies: @@ -1245,6 +1295,14 @@ packages: picomatch: optional: true + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + engines: {node: '>=14.14'} + fumadocs-core@15.6.3: resolution: {integrity: sha512-71IPC6Y0ZLPHlavYormnF1r2uX/lNrTFTYCEh6Akll8hWxRNbKG9Hk4xpFJDTkU83c8eLtHk2iow/ccQkcV6Hw==} peerDependencies: @@ -1307,6 +1365,10 @@ packages: github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -1332,6 +1394,9 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + hyphenate-style-name@1.1.0: + resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} + image-size@2.0.2: resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==} engines: {node: '>=16.x'} @@ -1356,9 +1421,21 @@ packages: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -1367,6 +1444,9 @@ packages: resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -1375,6 +1455,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -1449,6 +1532,10 @@ packages: longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + lru-cache@11.1.0: resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} engines: {node: 20 || >=22} @@ -1468,6 +1555,9 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + matchmediaquery@0.4.2: + resolution: {integrity: sha512-wrZpoT50ehYOudhDjt/YvUJc6eUzcdFPdmbizfgvswCKNHD1/OBOHYJpHie+HXpu6bSkEGieFMYk6VuutaiRfA==} + mdast-util-find-and-replace@3.0.2: resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} @@ -1516,6 +1606,10 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -1621,6 +1715,10 @@ packages: micromark@4.0.2: resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -1677,6 +1775,10 @@ packages: resolution: {integrity: sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} @@ -1693,6 +1795,10 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + picomatch@4.0.2: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} @@ -1713,9 +1819,15 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -1724,6 +1836,9 @@ packages: peerDependencies: react: ^19.1.0 + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-medium-image-zoom@5.2.14: resolution: {integrity: sha512-nfTVYcAUnBzXQpPDcZL+cG/e6UceYUIG+zDcnemL7jtAqbJjVVkA85RgneGtJeni12dTyiRPZVM6Szkmwd/o8w==} peerDependencies: @@ -1750,6 +1865,12 @@ packages: '@types/react': optional: true + react-responsive@10.0.1: + resolution: {integrity: sha512-OM5/cRvbtUWEX8le8RCT8scA8y2OPtb0Q/IViEyCEM5FBN8lRrkUOZnu87I88A6njxDldvxG+rLBxWiA7/UM9g==} + engines: {node: '>=14'} + peerDependencies: + react: '>=16.8.0' + react-style-singleton@2.2.3: resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} engines: {node: '>=10'} @@ -1810,6 +1931,13 @@ packages: remark@15.0.1: resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -1831,6 +1959,9 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + shallow-equal@3.1.0: + resolution: {integrity: sha512-pfVOw8QZIXpMbhBWvzBISicvToTiM5WBF1EeAUZDDSb5Dt29yl4AYbyywbJFSEsRUMr7gJaxqCdr4L3tQf9wVg==} + sharp@0.34.3: resolution: {integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -1906,6 +2037,10 @@ packages: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -1944,6 +2079,10 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -2371,6 +2510,18 @@ snapshots: '@next/swc-win32-x64-msvc@15.3.5': optional: true + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + '@orama/orama@3.1.11': {} '@orama/tokenizers@3.1.11': @@ -2929,6 +3080,10 @@ snapshots: bail@2.0.2: {} + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + busboy@1.6.0: dependencies: streamsearch: 1.1.0 @@ -2987,6 +3142,8 @@ snapshots: compute-scroll-into-view@3.1.1: {} + css-mediaquery@0.1.2: {} + cssesc@3.0.0: {} csstype@3.1.3: {} @@ -3104,10 +3261,32 @@ snapshots: extend@3.0.2: {} + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + fdir@6.4.6(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + fs-extra@11.3.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + fumadocs-core@15.6.3(@types/react@19.1.8)(algoliasearch@5.32.0)(next@15.3.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: '@formatjs/intl-localematcher': 0.6.1 @@ -3193,6 +3372,10 @@ snapshots: github-slugger@2.0.0: {} + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + graceful-fs@4.2.11: {} gray-matter@4.0.3: @@ -3267,6 +3450,8 @@ snapshots: html-void-elements@3.0.0: {} + hyphenate-style-name@1.1.0: {} + image-size@2.0.2: {} inline-style-parser@0.2.4: {} @@ -3285,12 +3470,22 @@ snapshots: is-extendable@0.1.1: {} + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + is-hexadecimal@2.0.1: {} + is-number@7.0.0: {} + is-plain-obj@4.1.0: {} jiti@2.4.2: {} + js-tokens@4.0.0: {} + js-yaml@3.14.1: dependencies: argparse: 1.0.10 @@ -3300,6 +3495,12 @@ snapshots: dependencies: argparse: 2.0.1 + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + kind-of@6.0.3: {} lightningcss-darwin-arm64@1.30.1: @@ -3351,6 +3552,10 @@ snapshots: longest-streak@3.1.0: {} + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + lru-cache@11.1.0: {} lucide-react@0.525.0(react@19.1.0): @@ -3365,6 +3570,10 @@ snapshots: markdown-table@3.0.4: {} + matchmediaquery@0.4.2: + dependencies: + css-mediaquery: 0.1.2 + mdast-util-find-and-replace@3.0.2: dependencies: '@types/mdast': 4.0.4 @@ -3528,6 +3737,8 @@ snapshots: dependencies: '@types/mdast': 4.0.4 + merge2@1.4.1: {} + micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.2.0 @@ -3792,6 +4003,11 @@ snapshots: transitivePeerDependencies: - supports-color + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + minipass@7.1.2: {} minizlib@3.0.2: @@ -3838,6 +4054,8 @@ snapshots: npm-to-yarn@3.0.1: {} + object-assign@4.1.1: {} + oniguruma-parser@0.12.1: {} oniguruma-to-es@4.3.3: @@ -3862,6 +4080,8 @@ snapshots: picocolors@1.1.1: {} + picomatch@2.3.1: {} + picomatch@4.0.2: {} pluralize@8.0.0: {} @@ -3883,8 +4103,16 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + property-information@7.1.0: {} + queue-microtask@1.2.3: {} + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -3894,6 +4122,8 @@ snapshots: react: 19.1.0 scheduler: 0.26.0 + react-is@16.13.1: {} + react-medium-image-zoom@5.2.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: react: 19.1.0 @@ -3918,6 +4148,14 @@ snapshots: optionalDependencies: '@types/react': 19.1.8 + react-responsive@10.0.1(react@19.1.0): + dependencies: + hyphenate-style-name: 1.1.0 + matchmediaquery: 0.4.2 + prop-types: 15.8.1 + react: 19.1.0 + shallow-equal: 3.1.0 + react-style-singleton@2.2.3(@types/react@19.1.8)(react@19.1.0): dependencies: get-nonce: 1.0.1 @@ -4028,6 +4266,12 @@ snapshots: transitivePeerDependencies: - supports-color + reusify@1.1.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + safe-buffer@5.2.1: {} scheduler@0.26.0: {} @@ -4048,6 +4292,8 @@ snapshots: dependencies: randombytes: 2.1.0 + shallow-equal@3.1.0: {} + sharp@0.34.3: dependencies: color: 4.2.3 @@ -4146,6 +4392,10 @@ snapshots: fdir: 6.4.6(picomatch@4.0.2) picomatch: 4.0.2 + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + trim-lines@3.0.1: {} trough@2.2.0: {} @@ -4193,6 +4443,8 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 + universalify@2.0.1: {} + use-callback-ref@1.3.3(@types/react@19.1.8)(react@19.1.0): dependencies: react: 19.1.0 diff --git a/document/public/FastGPT-full.svg b/document/public/FastGPT-full.svg index 42e2806a44fb..1bae3f0900c7 100644 --- a/document/public/FastGPT-full.svg +++ b/document/public/FastGPT-full.svg @@ -1,38 +1,38 @@ - - - - - - - - - + + + + + + + + + - + - + - + - + - + - + - + diff --git a/document/public/feishu.svg b/document/public/feishu.svg index bb504833fa37..9d745159b78f 100644 --- a/document/public/feishu.svg +++ b/document/public/feishu.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/document/public/logo1.png b/document/public/logo1.png new file mode 100644 index 0000000000000000000000000000000000000000..cf167769cbd5b3cf61a8323df044a64f699dc969 GIT binary patch literal 25112 zcmeFZV_+ojwmsajZEGf&I33%zF|lp4!hH)B0NR$$J`62gFr zal*ro9Z^$FDKj}az?YA0SO8d?j8As-9=$MW&@954XH#~SSKdpY3$_bCKi4#fX$ z13Ld6s4dd$4gd%Oq(p^OJ-|-eWg@?7q*1!ro7DVHl`BvM0@T_S2gUI9w6qWiqS*1_ z8QQQ%fX1VBB(h+79_l|^ir|R_x@7IWzRp1?2Y`7S2IL#!hVqFk@tmiC^Y(W!eWj~} zj~$k#Z~2tdnorjS6u|;+KRv$hEVTvYfrXdyh9amLvuT zprV2c3&O&Jk�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%0D>ZT&<75F0p;BMd|an|LFf}42FR)Fy~nKR3{ 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≦I8=PJV=Sa{$~P$9Lpy@zt~uJoMb5z!mQj8QmaRH$k0} z<$fw_isKz28t$=O&S4{zrK-$-^k@FCT(WVUBH4_7nRZ^BFRm8DKVOx<9YN z`kn3^gtlGp$hv0R5#F0mO{~M?9clIN-9D2xwQJnAB=z3(8sP)t zo$hZHPhOlim)?E4P>X^Qs?e;7IoVjT~-({X;ksg)pZF?uf0yz|5Y%}Pm z-T=dCiMh`1>iT3a;GWg=fkQ#CqoQAYm(X->1i?UA;y+~qv59B&b#)g?LU3Vj;l51E zmC^y75rF|)@p;nsnEAwP*%eqqaye!Vw(m%!+#8;7rI%4may$vdhxW+fCI3T97Q0?- z_Jk!6r_DY)q6MW4ne6jqid$@nVveitS%X4NYq_dJKo<9)`&#^qB5X2}iCx|a2@xG! zb8QL)qj0Jo^M3B<|{buj=}q#JcXzV zN$}%ump!lgsK7BkX=8(1Hf+&7Wq-|1{@Vc$;ZVxfl>wH%a%+$?`Ot=F;7$MOv`2ze zR+4l@5;@D2_mNg~yB|ONZP=~m?Y(kR4DfelzMFm5GU;P1u&tk;Kz@5wR$ zrExuRTp;?81Lxx2-An-RgV$gUv`IiG3W2a9;0l(fwbDdR5n3dM#&taumSM1ov*cEF zfG8{d%i7enHI}LEelMOpcx;>{2~ph!^oeH~FR_5AcLr^C0|)>3!`C@b3Y;F5)Q8Yb zC1=13vx(OKkX8TO=u<2>6$VOI{q(s*e%6X|&=w`$NHzQ2AyAUEDg(^pH(V%kQACrB z$31xo?B|)|a)7r9-A^GmtSUxyd5%ho^1Vs?fZ@dMxV+`e4_ zkPT$aV4UmFTK*K=P7Bnsb280z*|LSldwMVpJ$KS5V9ZO5P#;vjE<^q@axHb+6Dtjc zfq++87t^O~kTd2S8$q!9vbkb*akZK_u}epmLN_Nr3@1Lu>YOY2P=)tEytOlcT<6)p z%y5TDe}jPnaU+6?Cln9gEj=klkp;~p-F^sp(2+%u?~ek!USiYKe#LKX|BF&u1=j9$ z>x7cyEu`4Aru=_=Cq^0r3)^HKJ%bgTvWnKCMfVztIy3wXp0{GSsHiPXrHOiKsGAxT zhh@r>iwD+){V4eI8BU5--rZ)U@fH1BV8fDj&0~pkxefJT`=D|sagE3ee2dDS zSUsUoiu#xI#7`D=aBx9M`W7|E@mcQ6#t-lJaH{{&HvI2<(!&E$-FY%c-6U=1sBuBw zR&S^#U+c4<@Iy)6?krL}$;5e=mgQaHR0;``+$$1N|K~ZB&-MT1cOpRITkP9@$2*M% zQpN2fs^51^5O1p-_zfO%0rNt@}Tb z|91yO46>DI$N(E}Ah{laDd&bUX3QZz`^zg45zxS({>@3Y5InJCCcJKIjo_C^s*3dY zrKL5~=e_krId;qL|Ik{!J^+YjJi>EX8m{x1_iF^s=a`|8YBJL0UO}=B$xwiKd`EWk zAvS9byYUWwV_B^_^%aWH-(sX`$HtRfb8JFax-;@shd07--X$E+6 z^R?oMB_~W|s7S5L8qu_*EOjZCVWRP`^V1WDXclXbx|}>vB0zm%Mx+LHew1m`723Jj zD+Xu36U3){kP{C=B{S3*njabpvlFe~|931>FfGi$F5p`qRc_{wvGNBM7usE^Q!x_$KQ*NO`pQ_BDtQ-+QNOeX5!;U#^>Wv>6#^$C z$Y(hWFN9dOLj`$2h~_)}1rN-^U8PPZiLg7c{D&(&jYYhZt8*}4>TRa8ruuAWlNl&7 z5lNm>X)zn5VSXe78wc}A?ADWz9}@&Um1!=!2(S_VhXEzF{?iVn@?_ZQ(A7uUrk%!^ zrkUnQA%O>xkQ_#f(1iV$qdBKTjUQurcs2emGWq)ru}aNTu!{y_1PAan*Yd`Sf4i46L`5h=PkMe)?go`?j}BCR))FSXz`< zJk<2{fS8_zyx~Ttr4k9{<>KssO7q$|&m*nB#n~buAU7jB!_mkUZD_=oXOG1p&V(Rx uxn6d0aW!N2zy0waPWk`;fe%0AiaGENBUMM;y;vOVPgy}t{;RBM=>GwVzj>1Y literal 0 HcmV?d00001 From 075934f3c6911550f1988be22cbd26d96daf754c Mon Sep 17 00:00:00 2001 From: dreamer6680 <1468683855@qq.com> Date: Tue, 22 Jul 2025 10:56:27 +0800 Subject: [PATCH 3/7] fix: docs/index 404 not found --- document/.env.template | 5 +++++ document/content/docs/index.mdx | 9 +++++++++ document/content/docs/use-cases/meta.json | 5 ++--- 3 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 document/.env.template create mode 100644 document/content/docs/index.mdx diff --git a/document/.env.template b/document/.env.template new file mode 100644 index 000000000000..24c0e6cbecf7 --- /dev/null +++ b/document/.env.template @@ -0,0 +1,5 @@ +GIT_TOKEN= +NEXT_PUBLIC_SEARCH_APPKEY= +NEXT_PUBLIC_SEARCH_APPID= +GITHUB_REPO= +GITHUB_OWNER= \ No newline at end of file diff --git a/document/content/docs/index.mdx b/document/content/docs/index.mdx new file mode 100644 index 000000000000..8f7aea168d9e --- /dev/null +++ b/document/content/docs/index.mdx @@ -0,0 +1,9 @@ +--- +weight: 0 +title: 'FastGPT 文档' +description: 'FastGPT 官方文档' +icon: menu_book +lead: '' +draft: false +images: [] +--- diff --git a/document/content/docs/use-cases/meta.json b/document/content/docs/use-cases/meta.json index 300d3242e7a3..b0665365a730 100644 --- a/document/content/docs/use-cases/meta.json +++ b/document/content/docs/use-cases/meta.json @@ -2,6 +2,5 @@ "title": "使用案例", "description": "有关 FastGPT 其他实践案例的更多信息", "root": true, - "pages": ["index","external-integration","app-cases"], - "order": 2 -} \ No newline at end of file + "pages": ["index", "external-integration", "app-cases"] +} From 88d19624bc4e88b734012c7c3da55e3179ae8ec5 Mon Sep 17 00:00:00 2001 From: dreamer6680 <1468683855@qq.com> Date: Tue, 22 Jul 2025 10:56:41 +0800 Subject: [PATCH 4/7] Update environment variable names, optimize styles, add new API routes, fix component styles, adjust documentation, and update GitHub and Feishu icons --- document/.env.template | 2 +- document/Dockerfile | 5 ++ document/app/[lang]/(home)/layout.tsx | 14 +---- document/app/[lang]/docs/layout.tsx | 2 +- document/app/api/robots/route.ts | 24 +++++++++ document/app/global.css | 25 ++------- document/components/sideBar.tsx | 73 +++++++++++++++++++++------ document/content/docs/api/api2.mdx | 2 +- document/lib/github.ts | 2 +- 9 files changed, 97 insertions(+), 52 deletions(-) create mode 100644 document/app/api/robots/route.ts diff --git a/document/.env.template b/document/.env.template index 24c0e6cbecf7..7cd3bd5e51c1 100644 --- a/document/.env.template +++ b/document/.env.template @@ -1,4 +1,4 @@ -GIT_TOKEN= +GITHUB_TOKEN= NEXT_PUBLIC_SEARCH_APPKEY= NEXT_PUBLIC_SEARCH_APPID= GITHUB_REPO= diff --git a/document/Dockerfile b/document/Dockerfile index c614dbe78247..c04c795437b1 100644 --- a/document/Dockerfile +++ b/document/Dockerfile @@ -27,6 +27,11 @@ ENV NEXT_PUBLIC_APP_URL=$NEXT_PUBLIC_APP_URL ENV NEXT_PUBLIC_OPEN_SOURCE_URL=$NEXT_PUBLIC_OPEN_SOURCE_URL ENV NEXT_PUBLIC_DEFAULT_LOCALE=$NEXT_PUBLIC_DEFAULT_LOCALE ENV NEXT_TELEMETRY_DISABLED=1 +ENV GITHUB_TOKEN= +ENV NEXT_PUBLIC_SEARCH_APPKEY= +ENV NEXT_PUBLIC_SEARCH_APPID= +ENV GITHUB_REPO= +ENV GITHUB_OWNER= COPY . . RUN npm install && npm run build diff --git a/document/app/[lang]/(home)/layout.tsx b/document/app/[lang]/(home)/layout.tsx index 4503a7a0041a..f9dd2e3520f2 100644 --- a/document/app/[lang]/(home)/layout.tsx +++ b/document/app/[lang]/(home)/layout.tsx @@ -1,15 +1,6 @@ import type { ReactNode } from 'react'; import { HomeLayout } from 'fumadocs-ui/layouts/home'; -import { baseOptions } from '@/app/layout.config'; -import { t } from '@/lib/i18n'; -import Link from 'next/link'; -import { - NavbarMenu, - NavbarMenuContent, - NavbarMenuLink, - NavbarMenuTrigger -} from 'fumadocs-ui/layouts/home/navbar'; -import { Navbar } from 'fumadocs-ui/layouts/docs-client'; +import LogoLight from '@/components/docs/logo'; export default async function Layout({ params, @@ -24,8 +15,7 @@ export default async function Layout({ nav={{ title: (
- FastGPT - FastGPT +
) }} diff --git a/document/app/[lang]/docs/layout.tsx b/document/app/[lang]/docs/layout.tsx index e142f4d31130..833957def8b0 100644 --- a/document/app/[lang]/docs/layout.tsx +++ b/document/app/[lang]/docs/layout.tsx @@ -88,7 +88,7 @@ export default async function Layout({ ), - url: 'https://github.com/labring/FastGPT/tree/main/document', + url: 'https://github.com/labring/FastGPT', text: 'github' } ]} diff --git a/document/app/api/robots/route.ts b/document/app/api/robots/route.ts new file mode 100644 index 000000000000..810971b4e75d --- /dev/null +++ b/document/app/api/robots/route.ts @@ -0,0 +1,24 @@ +// app/api/robots/route.ts +import { i18n } from '@/lib/i18n'; +import { NextResponse } from 'next/server'; + +export async function GET() { + const host = + i18n.defaultLanguage === 'zh-cn' ? 'https://localhost:3000' : 'https://localhost:3000/en'; + + const robotsTxt = `User-agent: * +Allow: / +Allow: /en/ +Disallow: /zh-cn/ + + +Host: ${host} + +Sitemap: ${host}/sitemap.xml`; + + return new NextResponse(robotsTxt, { + headers: { + 'Content-Type': 'text/plain' + } + }); +} diff --git a/document/app/global.css b/document/app/global.css index d4442a2c0e3f..c588dac3fad5 100644 --- a/document/app/global.css +++ b/document/app/global.css @@ -75,26 +75,6 @@ code { /* 代码块中的滚动条样式优化 */ - - - -/* 图片居中显示 */ -.fumadocs-content img, -.mdx-content img, -.prose img, -img { - display: block !important; - margin-left: auto !important; - margin-right: auto !important; - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - max-width: 100% !important; - height: auto !important; - border-radius: 8px !important; - box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important; -} - - /* MDX 表格样式 */ .fumadocs-content table, .mdx-content table, @@ -174,6 +154,11 @@ div[data-state="open"].fixed.inset-0.z-50 { border-bottom: 0.1px solid #61646fc6 !important; } +div[data-rmiz-modal-content] { + background-color: #999 !important; +} + + #nd-subnav > div:nth-of-type(2) a { text-decoration: none; color: #485264; diff --git a/document/components/sideBar.tsx b/document/components/sideBar.tsx index 30439000b9f2..af0ac54f3160 100644 --- a/document/components/sideBar.tsx +++ b/document/components/sideBar.tsx @@ -1,35 +1,76 @@ 'use client'; -import { type FC, type ReactNode } from 'react'; -import { type SidebarComponents } from 'fumadocs-ui/components/layout/sidebar'; -import { type PageTree } from 'fumadocs-core/server'; +import { usePathname } from 'next/navigation'; +import { useEffect, type FC, type ReactNode } from 'react'; import { SidebarItem, SidebarFolder, SidebarFolderTrigger, SidebarFolderContent } from 'fumadocs-ui/components/layout/sidebar'; +import { type SidebarComponents } from 'fumadocs-ui/components/layout/sidebar'; +import { type PageTree } from 'fumadocs-core/server'; -const CustomItem: FC<{ item: PageTree.Item }> = ({ item }) => ( - - {item.icon} - {item.name} - -); +const isInFolder = (folder: PageTree.Folder, pathname: string): boolean => { + const check = (item: PageTree.Item | PageTree.Folder): boolean => { + if ('children' in item) { + return item.children + .filter( + (child): child is PageTree.Item | PageTree.Folder => 'url' in child || 'children' in child + ) + .some(check); + } + return 'url' in item && item.url === pathname; + }; + return check(folder); +}; + +const CustomItem: FC<{ item: PageTree.Item }> = ({ item }) => { + const pathname = usePathname(); + const isActive = pathname === item.url; + + useEffect(() => { + if (isActive) { + const anchor = document.querySelector(`a[href='${item.url}']`); + if (anchor) { + setTimeout(() => { + anchor.scrollIntoView({ behavior: 'smooth', block: 'center' }); + }, 100); + } + } + }, [isActive, item.url]); + + return ( + + {item.icon} + {item.name} + + ); +}; const CustomFolder: FC<{ item: PageTree.Folder; level: number; children: ReactNode }> = ({ item, level, children -}) => ( - - {item.name} - {children} - -); +}) => { + const pathname = usePathname(); + const shouldExpand = isInFolder(item, pathname); + + return ( + + {item.name} + + {children} + + + ); +}; const CustomSeparator: FC<{ item: PageTree.Separator }> = ({ item }) => ( -
{item.name}
+
{item.name}
); export const CustomSidebarComponents: SidebarComponents = { diff --git a/document/content/docs/api/api2.mdx b/document/content/docs/api/api2.mdx index 38090c956a0d..46d883a709b7 100644 --- a/document/content/docs/api/api2.mdx +++ b/document/content/docs/api/api2.mdx @@ -100,6 +100,6 @@ curl --location --request POST 'http://localhost:3000/api/v1/chat/completions' \ ```
- +
\ No newline at end of file diff --git a/document/lib/github.ts b/document/lib/github.ts index b82971cfd923..8af64091db9b 100644 --- a/document/lib/github.ts +++ b/document/lib/github.ts @@ -7,7 +7,7 @@ export async function fetchLastModified(path: string): Promise { owner: process.env.GITHUB_OWNER || 'labring', repo: process.env.GITHUB_REPO || 'FastGPT', path, - token: `Bearer ${process.env.GIT_TOKEN}` // 可选,提高速率限制 + token: `Bearer ${process.env.GIT_TOKEN}` }); return lastEdit ? lastEdit.toISOString() : null; } catch (err) { From 9737586d36b142c2b46487c87dc421a65020f934 Mon Sep 17 00:00:00 2001 From: dreamer6680 <1468683855@qq.com> Date: Tue, 22 Jul 2025 10:57:01 +0800 Subject: [PATCH 5/7] update readme --- document/README.md | 99 +- document/clean-frontmatter.js | 43 + document/content/docs/api/api1.mdx | 1 - document/content/docs/api/api2.mdx | 10 +- document/content/docs/api/index.mdx | 10 +- document/content/docs/index.mdx | 10 +- .../content/docs/introduction/FAQ/app.mdx | 8 +- .../content/docs/introduction/FAQ/chat.mdx | 10 +- .../content/docs/introduction/FAQ/dataset.mdx | 10 +- .../content/docs/introduction/FAQ/docker.mdx | 12 +- .../content/docs/introduction/FAQ/error.mdx | 8 +- .../FAQ/external_channel_integration.mdx | 10 +- .../content/docs/introduction/FAQ/other.mdx | 8 +- .../introduction/FAQ/points_consumption.mdx | 10 +- .../docs/introduction/FAQ/privateDeploy.mdx | 12 +- .../content/docs/introduction/community.mdx | 8 +- .../development/configuration.mdx | 10 +- .../development/custom-models/bge-rerank.mdx | 8 +- .../custom-models/chatglm2-m3e.mdx | 6 +- .../development/custom-models/chatglm2.mdx | 6 +- .../development/custom-models/m3e.mdx | 6 +- .../development/custom-models/marker.mdx | 10 +- .../development/custom-models/ollama.mdx | 4 - .../development/custom-models/xinference.mdx | 8 +- .../development/design/dataset.mdx | 10 +- .../development/design/design_plugin.mdx | 8 +- .../docs/introduction/development/docker.mdx | 8 +- .../docs/introduction/development/faq.mdx | 10 +- .../docs/introduction/development/intro.mdx | 8 +- .../development/migration/docker_db.mdx | 10 +- .../development/migration/docker_mongo.mdx | 7 +- .../development/modelConfig/ai-proxy.mdx | 10 +- .../development/modelConfig/intro.mdx | 8 +- .../development/modelConfig/one-api.mdx | 8 +- .../development/modelConfig/ppio.mdx | 8 +- .../development/modelConfig/siliconCloud.mdx | 10 +- .../introduction/development/openapi/chat.mdx | 8 +- .../development/openapi/dataset.mdx | 8 +- .../development/openapi/intro.mdx | 8 +- .../development/openapi/share.mdx | 10 +- .../development/proxy/cloudflare.mdx | 10 +- .../development/proxy/http_proxy.mdx | 8 +- .../introduction/development/proxy/nginx.mdx | 10 +- .../docs/introduction/development/sealos.mdx | 10 +- .../introduction/development/upgrading/40.mdx | 8 +- .../introduction/development/upgrading/41.mdx | 8 +- .../development/upgrading/4100.mdx | 8 +- .../development/upgrading/4101.mdx | 8 +- .../introduction/development/upgrading/42.mdx | 8 +- .../development/upgrading/421.mdx | 8 +- .../introduction/development/upgrading/43.mdx | 8 +- .../introduction/development/upgrading/44.mdx | 8 +- .../development/upgrading/441.mdx | 8 +- .../development/upgrading/442.mdx | 8 +- .../development/upgrading/445.mdx | 10 +- .../development/upgrading/446.mdx | 10 +- .../development/upgrading/447.mdx | 8 +- .../introduction/development/upgrading/45.mdx | 10 +- .../development/upgrading/451.mdx | 10 +- .../development/upgrading/452.mdx | 10 +- .../introduction/development/upgrading/46.mdx | 10 +- .../development/upgrading/461.mdx | 8 +- .../development/upgrading/462.mdx | 8 +- .../development/upgrading/463.mdx | 8 +- .../development/upgrading/464.mdx | 8 +- .../development/upgrading/465.mdx | 8 +- .../development/upgrading/466.mdx | 10 +- .../development/upgrading/467.mdx | 10 +- .../development/upgrading/468.mdx | 10 +- .../development/upgrading/469.mdx | 8 +- .../introduction/development/upgrading/47.mdx | 8 +- .../development/upgrading/471.mdx | 10 +- .../introduction/development/upgrading/48.mdx | 10 +- .../development/upgrading/481.mdx | 8 +- .../development/upgrading/4810.mdx | 8 +- .../development/upgrading/4811.mdx | 8 +- .../development/upgrading/4812.mdx | 8 +- .../development/upgrading/4813.mdx | 8 +- .../development/upgrading/4814.mdx | 8 +- .../development/upgrading/4815.mdx | 8 +- .../development/upgrading/4816.mdx | 10 +- .../development/upgrading/4817.mdx | 8 +- .../development/upgrading/4818.mdx | 8 +- .../development/upgrading/4819.mdx | 10 +- .../development/upgrading/482.mdx | 8 +- .../development/upgrading/4820.mdx | 8 +- .../development/upgrading/4821.mdx | 10 +- .../development/upgrading/4822.mdx | 10 +- .../development/upgrading/4823.mdx | 10 +- .../development/upgrading/483.mdx | 10 +- .../development/upgrading/484.mdx | 8 +- .../development/upgrading/485.mdx | 8 +- .../development/upgrading/486.mdx | 8 +- .../development/upgrading/487.mdx | 8 +- .../development/upgrading/488.mdx | 8 +- .../development/upgrading/489.mdx | 8 +- .../development/upgrading/490.mdx | 8 +- .../development/upgrading/491.mdx | 8 +- .../development/upgrading/4910.mdx | 10 +- .../development/upgrading/4911.mdx | 10 +- .../development/upgrading/4912.mdx | 10 +- .../development/upgrading/4913.mdx | 8 +- .../development/upgrading/4914.mdx | 10 +- .../development/upgrading/492.mdx | 10 +- .../development/upgrading/493.mdx | 8 +- .../development/upgrading/494.mdx | 10 +- .../development/upgrading/495.mdx | 10 +- .../development/upgrading/496.mdx | 8 +- .../development/upgrading/497.mdx | 8 +- .../development/upgrading/498.mdx | 8 +- .../development/upgrading/499.mdx | 8 +- .../development/upgrading/intro.mdx | 8 +- .../guide/DialogBoxes/htmlRendering.mdx | 10 +- .../guide/DialogBoxes/quoteList.mdx | 8 +- .../docs/introduction/guide/admin/sso.mdx | 8 +- .../introduction/guide/admin/teamMode.mdx | 8 +- .../introduction/guide/course/ai_settings.mdx | 8 +- .../guide/course/chat_input_guide.mdx | 10 +- .../guide/course/collection_tags.mdx | 8 +- .../introduction/guide/course/fileInput.mdx | 10 +- .../introduction/guide/course/quick-start.mdx | 8 +- .../guide/dashboard/basic-mode.mdx | 8 +- .../introduction/guide/dashboard/gapier.mdx | 8 +- .../introduction/guide/dashboard/intro.mdx | 8 +- .../guide/dashboard/mcp_server.mdx | 8 +- .../guide/dashboard/mcp_tools.mdx | 8 +- .../guide/dashboard/workflow/ai_chat.mdx | 10 +- .../dashboard/workflow/content_extract.mdx | 10 +- .../workflow/coreferenceResolution.mdx | 10 +- .../dashboard/workflow/custom_feedback.mdx | 10 +- .../dashboard/workflow/dataset_search.mdx | 8 +- .../dashboard/workflow/document_parsing.mdx | 10 +- .../guide/dashboard/workflow/form_input.mdx | 10 +- .../guide/dashboard/workflow/http.mdx | 8 +- .../workflow/knowledge_base_search_merge.mdx | 10 +- .../guide/dashboard/workflow/laf.mdx | 10 +- .../guide/dashboard/workflow/loop.mdx | 8 +- .../dashboard/workflow/question_classify.mdx | 10 +- .../guide/dashboard/workflow/reply.mdx | 8 +- .../guide/dashboard/workflow/sandbox.mdx | 10 +- .../guide/dashboard/workflow/text_editor.mdx | 10 +- .../guide/dashboard/workflow/tfswitch.mdx | 8 +- .../guide/dashboard/workflow/tool.mdx | 10 +- .../dashboard/workflow/user-selection.mdx | 10 +- .../dashboard/workflow/variable_update.mdx | 10 +- .../introduction/guide/knowledge_base/RAG.mdx | 10 +- .../guide/knowledge_base/api_dataset.mdx | 8 +- .../guide/knowledge_base/dataset_engine.mdx | 10 +- .../guide/knowledge_base/externalFile.mdx | 8 +- .../guide/knowledge_base/lark_dataset.mdx | 10 +- .../guide/knowledge_base/template.mdx | 10 +- .../guide/knowledge_base/third_dataset.mdx | 10 +- .../guide/knowledge_base/websync.mdx | 8 +- .../guide/knowledge_base/yuque_dataset.mdx | 10 +- .../guide/plugins/bing_search_plugin.mdx | 10 +- .../guide/plugins/dev_system_tool.mdx | 8 +- .../guide/plugins/doc2x_plugin_guide.mdx | 10 +- .../plugins/google_search_plugin_guide.mdx | 10 +- .../plugins/how_to_submit_system_plugin.mdx | 10 +- .../guide/plugins/searxng_plugin_guide.mdx | 10 +- .../team_permissions/invitation_link.mdx | 8 +- .../team_roles_permissions.mdx | 8 +- .../content/docs/introduction/index.en.mdx | 8 +- document/content/docs/introduction/index.mdx | 8 +- .../docs/introduction/shopping_cart/intro.mdx | 10 +- .../docs/introduction/shopping_cart/saas.mdx | 10 +- document/content/docs/protocol/index.mdx | 10 +- .../content/docs/protocol/open-source.en.mdx | 10 +- .../content/docs/protocol/open-source.mdx | 8 +- document/content/docs/protocol/privacy.en.mdx | 10 +- document/content/docs/protocol/privacy.mdx | 8 +- document/content/docs/protocol/terms.en.mdx | 10 +- document/content/docs/protocol/terms.mdx | 8 +- .../docs/use-cases/app-cases/dalle3.mdx | 8 +- .../english_essay_correction_bot.mdx | 10 +- .../use-cases/app-cases/feishu_webhook.mdx | 10 +- .../use-cases/app-cases/fixingEvidence.mdx | 8 +- .../use-cases/app-cases/google_search.mdx | 8 +- .../use-cases/app-cases/lab_appointment.mdx | 8 +- .../app-cases/multi_turn_translation_bot.mdx | 10 +- .../app-cases/submit_application_template.mdx | 8 +- .../translate-subtitle-using-gpt.mdx | 10 +- .../external-integration/dingtalk.mdx | 10 +- .../use-cases/external-integration/feishu.mdx | 10 +- .../iframe_integration.mdx | 9 +- .../external-integration/official_account.mdx | 10 +- .../external-integration/onwechat.mdx | 10 +- .../external-integration/openapi.mdx | 10 +- .../use-cases/external-integration/wechat.mdx | 8 +- document/content/docs/use-cases/index.mdx | 10 +- document/lib/github.ts | 2 +- document/package-lock.json | 6622 +++++++++++++++++ document/public/readme/algolia.png | Bin 0 -> 123379 bytes document/public/readme/algolia2.png | Bin 0 -> 159172 bytes document/public/readme/algolia3.png | Bin 0 -> 36501 bytes document/public/readme/link.png | Bin 0 -> 279291 bytes document/update-index.mjs | 2 +- 197 files changed, 7198 insertions(+), 1237 deletions(-) create mode 100644 document/clean-frontmatter.js create mode 100644 document/package-lock.json create mode 100644 document/public/readme/algolia.png create mode 100644 document/public/readme/algolia2.png create mode 100644 document/public/readme/algolia3.png create mode 100644 document/public/readme/link.png diff --git a/document/README.md b/document/README.md index 38ca81a98aa0..4e66b8a10a4c 100644 --- a/document/README.md +++ b/document/README.md @@ -1,45 +1,90 @@ # fast -This is a Next.js application generated with -[Create Fumadocs](https://github.com/fuma-nama/fumadocs). +这是FastGPT的官方文档,采用fumadoc框架。 -Run development server: +# 获取搜索应用 + +点击[Algolia](https://dashboard.algolia.com/account/overview),进行注册账号,注册成功后需要点击页面的搜索,然后查看应用,默认会有一个应用。 + +![](./public/readme/algolia.png) + +拥有应用后点击个人头像,点击设置,点击`API Keys`查看自己的应用id和key。 + +![](./public/readme/algolia2.png) + +页面中的`Application ID`和`Search API Key`就是环境变量对应的`NEXT_PUBLIC_SEARCH_APPID`和`NEXT_PUBLIC_SEARCH_APPKEY` + +![](./public/readme/algolia3.png) + +# 运行项目 + +要运行文档,首先需要进行环境变量配置,在文档的根目录下创建`.env.local`文件,填写以下环境变量: + +```bash +GITHUB_TOKEN = #这是github申请的token,`https://github.com/settings/personal-access-tokens`建议创建token时,采用只有选择的库可以使用token,这样更安全 +NEXT_PUBLIC_SEARCH_APPKEY = #这是上面获取的搜索key +NEXT_PUBLIC_SEARCH_APPID = #这是上面的搜索id +GITHUB_REPO = #fork的仓库名 +GITHUB_OWNER = #你的github名 +``` + +你可以在FastGPT项目根目录下执行以下命令来运行文档。 ```bash +npm install #只能npm install,不能pnpm npm run dev -# or -pnpm dev -# or -yarn dev ``` +项目会默认跑在`http:localhost:3000`端口 + +# 书写文档 + +文档采用`mdx`格式,大体和`md`一致,但是现在文档的元数据只支持`title` `description`和`icon`三个字段,参考以下示例代码: + +```bash +--- +title: FastGPT 文档 +description: FastGPT 官方文档 +icon: menu #icon采用`lucide-react`第三方库。 +--- + +import { Alert } from '@/components/docs/Alert'; #高亮块组件 -Open http://localhost:3000 with your browser to see the result. + +快速开始体验 +- 海外版:[https://tryfastgpt.ai](https://tryfastgpt.ai) +- 国内版:[https://fastgpt.cn](https://fastgpt.cn) + -## Explore +import {Redirect} from '@/components/docs/Redirect' #重定向组件,如果你希望用户点击这个文件跳转到别的文件的话,详情参考 `FAQ`的`Docker 部署问题`文档。 -In the project, you can see: + -- `lib/source.ts`: Code for content source adapter, [`loader()`](https://fumadocs.dev/docs/headless/source-api) provides the interface to access your content. -- `app/layout.config.tsx`: Shared options for layouts, optional but preferred to keep. + #tabs组件用法,渲染效果参考`introduction`下`development`的`faq`文档 + Javascript is weird + Rust is fast + -| Route | Description | -| ------------------------- | ------------------------------------------------------ | -| `app/(home)` | The route group for your landing page and other pages. | -| `app/docs` | The documentation layout and pages. | -| `app/api/search/route.ts` | The Route Handler for search. | +``` + +在书写完文档后,需要在对应的目录下的`meta.json`文件的`pages`字段合适位置添加自己的文件名。例如在`content/docs`(默认这是所有文档的根目录)的`introduction`目录下书写了一个`hello.mdx`文件。则需要去`introduction`目录下的`meta.json`添加以下内容: + +```bash +{ + "title": "FastGPT Docs", + "root": true, + "pages": ["[Handshake][联系我们](https://fael3z0zfze.feishu.cn/share/base/form/shrcnRxj3utrzjywsom96Px4sud)","index","guide","development","FAQ","shopping_cart","community","hello"], #"hello"原本没有,此外,这里的顺序就是最后文档的展示顺序,现在"hello"文档将会在`introduction`的最后展示 + "order": 1 +} +``` -### Fumadocs MDX +# i18n -A `source.config.ts` config file has been included, you can customise different options like frontmatter schema. +在`content/docs`下的所有`.mdx`文件为默认语言文件(当前默认语言中文),`.en.mdx`文件为`i18n`支持的英文文件,例如,你可以将`hello.mdx`文档翻译后,写一个`hello.en.mdx`,同时,在对应目录的`meta.en.json`的`"pages"`字段写下对应的文件名来支持英文文档。 -Read the [Introduction](https://fumadocs.dev/docs/mdx) for further details. +# ps -## Learn More +`meta.json`的`"pages"`中的`"[Handshake][联系我们](https://fael3z0zfze.feishu.cn/share/base/form/shrcnRxj3utrzjywsom96Px4sud)"`这个字段是目录的链接形式,表现效果为,点击后跳转到对应的url。 -To learn more about Next.js and Fumadocs, take a look at the following -resources: +![](./public/readme/link.png) -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js - features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. -- [Fumadocs](https://fumadocs.vercel.app) - learn about Fumadocs +最后,如果依然有问题,可以进入`https://fumadocs.dev/docs/ui`官网,询问官网提供的ai来了解文档框架的使用。 \ No newline at end of file diff --git a/document/clean-frontmatter.js b/document/clean-frontmatter.js new file mode 100644 index 000000000000..f0bcd3956dcf --- /dev/null +++ b/document/clean-frontmatter.js @@ -0,0 +1,43 @@ +const fs = require('fs'); +const path = require('path'); +const matter = require('gray-matter'); + +// ✅ 设置要处理的根目录(可修改为你的文档目录) +const rootDir = path.resolve(__dirname, 'content/docs'); + +// ✅ 仅保留的 frontmatter 字段 +const KEEP_FIELDS = ['title', 'description']; + +function cleanFrontmatter(filePath) { + const raw = fs.readFileSync(filePath, 'utf-8'); + const parsed = matter(raw); + + // 仅保留需要的字段 + const newData = {}; + for (const key of KEEP_FIELDS) { + if (parsed.data[key] !== undefined) { + newData[key] = parsed.data[key]; + } + } + + const cleaned = matter.stringify(parsed.content, newData); + fs.writeFileSync(filePath, cleaned, 'utf-8'); + console.log(`✔ Cleaned: ${path.relative(rootDir, filePath)}`); +} + +function walk(dir) { + const entries = fs.readdirSync(dir); + for (const entry of entries) { + const fullPath = path.join(dir, entry); + const stat = fs.statSync(fullPath); + + if (stat.isDirectory()) { + walk(fullPath); // 🔁 递归子目录 + } else if (entry.endsWith('.mdx')) { + cleanFrontmatter(fullPath); + } + } +} + +// 🚀 开始执行 +walk(rootDir); diff --git a/document/content/docs/api/api1.mdx b/document/content/docs/api/api1.mdx index 63a75425582e..71afdd06a05c 100644 --- a/document/content/docs/api/api1.mdx +++ b/document/content/docs/api/api1.mdx @@ -3,7 +3,6 @@ title: Tabs description: A Tabs component built with Radix UI, with additional features such as persistent and shared value. -preview: tabs --- diff --git a/document/content/docs/api/api2.mdx b/document/content/docs/api/api2.mdx index 46d883a709b7..04a964ef8d66 100644 --- a/document/content/docs/api/api2.mdx +++ b/document/content/docs/api/api2.mdx @@ -1,10 +1,6 @@ --- -title: '对话接口' -description: 'FastGPT OpenAPI 对话接口' -icon: 'chat' -draft: false -toc: true -weight: 852 +title: 对话接口 +description: FastGPT OpenAPI 对话接口 --- import { Alert } from '@/components/docs/Alert'; @@ -102,4 +98,4 @@ curl --location --request POST 'http://localhost:3000/api/v1/chat/completions' \
-
\ No newline at end of file +
diff --git a/document/content/docs/api/index.mdx b/document/content/docs/api/index.mdx index 8f68d025a55d..3476ab9ed2c3 100644 --- a/document/content/docs/api/index.mdx +++ b/document/content/docs/api/index.mdx @@ -1,9 +1,5 @@ --- -weight: 0 -title: 'API手册' -description: 'FastGPT API手册' -icon: menu_book -lead: '' -draft: false -images: [] +title: API手册 +description: FastGPT API手册 --- + diff --git a/document/content/docs/index.mdx b/document/content/docs/index.mdx index 8f7aea168d9e..7a5b90aabf16 100644 --- a/document/content/docs/index.mdx +++ b/document/content/docs/index.mdx @@ -1,9 +1,5 @@ --- -weight: 0 -title: 'FastGPT 文档' -description: 'FastGPT 官方文档' -icon: menu_book -lead: '' -draft: false -images: [] +title: FastGPT 文档 +description: FastGPT 官方文档 --- + diff --git a/document/content/docs/introduction/FAQ/app.mdx b/document/content/docs/introduction/FAQ/app.mdx index 69d434edc109..8e9c7a5fa7eb 100644 --- a/document/content/docs/introduction/FAQ/app.mdx +++ b/document/content/docs/introduction/FAQ/app.mdx @@ -1,10 +1,6 @@ --- -title: '应用使用问题' -description: 'FastGPT 常见应用使用问题,包括简易应用、工作流和插件' -icon: 'quiz' -draft: false -toc: true -weight: 908 +title: 应用使用问题 +description: FastGPT 常见应用使用问题,包括简易应用、工作流和插件 --- ## 多轮对话中如何使连续问题被问题分类节点正确的归类 diff --git a/document/content/docs/introduction/FAQ/chat.mdx b/document/content/docs/introduction/FAQ/chat.mdx index 93aeb1afc5e5..36a10a0bf6a6 100644 --- a/document/content/docs/introduction/FAQ/chat.mdx +++ b/document/content/docs/introduction/FAQ/chat.mdx @@ -1,10 +1,6 @@ --- -title: '聊天框问题' -description: 'FastGPT 常见聊天框问题' -icon: 'quiz' -draft: false -toc: true -weight: 906 +title: 聊天框问题 +description: FastGPT 常见聊天框问题 --- ## 我修改了工作台的应用,为什么在“聊天”时没有更新配置? @@ -15,4 +11,4 @@ weight: 906 1. 首先需要确保浏览器、电脑本身麦克风权限的开启。 2. 确认浏览器允许该站点使用麦克风,并且选择正确的麦克风来源。 -3. 需有 SSL 证书的站点才可以使用麦克风。 \ No newline at end of file +3. 需有 SSL 证书的站点才可以使用麦克风。 diff --git a/document/content/docs/introduction/FAQ/dataset.mdx b/document/content/docs/introduction/FAQ/dataset.mdx index a5b90340ad4a..752385e48a9a 100644 --- a/document/content/docs/introduction/FAQ/dataset.mdx +++ b/document/content/docs/introduction/FAQ/dataset.mdx @@ -1,10 +1,6 @@ --- -title: '知识库使用问题' -description: '常见知识库使用问题' -icon: 'quiz' -draft: false -toc: true -weight: 910 +title: 知识库使用问题 +description: 常见知识库使用问题 --- ## 上传的文件内容出现中文乱码 @@ -80,4 +76,4 @@ FastGPT回复长度计算公式: ![](/imgs/dataset2.png) -另外,私有化部署的时候,后台配模型参数,可以在配置最大上文时,预留一些空间,比如 128000 的模型,可以只配置 120000, 剩余的空间后续会被安排给输出。 \ No newline at end of file +另外,私有化部署的时候,后台配模型参数,可以在配置最大上文时,预留一些空间,比如 128000 的模型,可以只配置 120000, 剩余的空间后续会被安排给输出。 diff --git a/document/content/docs/introduction/FAQ/docker.mdx b/document/content/docs/introduction/FAQ/docker.mdx index 62b6979eec96..965acabf4ae8 100644 --- a/document/content/docs/introduction/FAQ/docker.mdx +++ b/document/content/docs/introduction/FAQ/docker.mdx @@ -1,14 +1,8 @@ --- -title: 'Docker 部署问题' -description: 'FastGPT Docker 部署问题' -icon: '' -draft: false -toc: true -weight: 902 -type: redirect -target: /docs/development/docker/#faq +title: Docker 部署问题 +description: FastGPT Docker 部署问题 --- import {Redirect} from '@/components/docs/Redirect' - \ No newline at end of file + diff --git a/document/content/docs/introduction/FAQ/error.mdx b/document/content/docs/introduction/FAQ/error.mdx index f0a0ee3f8fa1..bbad312bef9f 100644 --- a/document/content/docs/introduction/FAQ/error.mdx +++ b/document/content/docs/introduction/FAQ/error.mdx @@ -1,9 +1,5 @@ --- -title: '报错' -icon: 'quiz' -draft: false -toc: true -weight: 914 +title: 报错 --- 1. ### 当前分组上游负载已饱和,请稍后再试(request id:202407100753411462086782835521) @@ -12,4 +8,4 @@ weight: 914 1. ### 使用API时在日志中报错Connection Error -大概率是api-key填写了openapi,然后部署的服务器在国内,不能访问海外的api,可以使用中转或者反代的手段解决访问不到的问题 \ No newline at end of file +大概率是api-key填写了openapi,然后部署的服务器在国内,不能访问海外的api,可以使用中转或者反代的手段解决访问不到的问题 diff --git a/document/content/docs/introduction/FAQ/external_channel_integration.mdx b/document/content/docs/introduction/FAQ/external_channel_integration.mdx index 2134bdc937e1..d440b32d7149 100644 --- a/document/content/docs/introduction/FAQ/external_channel_integration.mdx +++ b/document/content/docs/introduction/FAQ/external_channel_integration.mdx @@ -1,10 +1,6 @@ --- -title: "接入外部渠道" -description: "如何通过外部渠道与 FastGPT 集成,实现对多种平台的支持" -icon: "integration" -draft: false -toc: true -weight: 912 +title: 接入外部渠道 +description: 如何通过外部渠道与 FastGPT 集成,实现对多种平台的支持 --- 1. ### 接入cow,图文对话无法直接显示图片 @@ -15,4 +11,4 @@ weight: 912 在应用的对话日志里可以查看。 -![](/imgs/integration1.png) \ No newline at end of file +![](/imgs/integration1.png) diff --git a/document/content/docs/introduction/FAQ/other.mdx b/document/content/docs/introduction/FAQ/other.mdx index 07c30f8b448c..7ebe6a974950 100644 --- a/document/content/docs/introduction/FAQ/other.mdx +++ b/document/content/docs/introduction/FAQ/other.mdx @@ -1,9 +1,5 @@ --- -title: '其他问题' -icon: 'quiz' -draft: false -toc: true -weight: 918 +title: 其他问题 --- ## oneapi 官网是哪个 @@ -12,4 +8,4 @@ weight: 918 ## 想做多用户 -开源版未支持多用户,仅商业版支持。 \ No newline at end of file +开源版未支持多用户,仅商业版支持。 diff --git a/document/content/docs/introduction/FAQ/points_consumption.mdx b/document/content/docs/introduction/FAQ/points_consumption.mdx index 2eb0f6d5cb93..9124d60fc718 100644 --- a/document/content/docs/introduction/FAQ/points_consumption.mdx +++ b/document/content/docs/introduction/FAQ/points_consumption.mdx @@ -1,14 +1,10 @@ --- -title: "积分消耗" -description: "了解 FastGPT 中的积分消耗机制和使用场景" -icon: "points" -draft: false -toc: true -weight: 916 +title: 积分消耗 +description: 了解 FastGPT 中的积分消耗机制和使用场景 --- 1. ### 接入oneapi后,为什么还会消耗fastgpt的积分 矢量数据库检索会默认消耗。可以查看看绑定提示和使用记录。 -![](/imgs/points1.png) \ No newline at end of file +![](/imgs/points1.png) diff --git a/document/content/docs/introduction/FAQ/privateDeploy.mdx b/document/content/docs/introduction/FAQ/privateDeploy.mdx index 2f8d0d2ce249..490c096b8cfa 100644 --- a/document/content/docs/introduction/FAQ/privateDeploy.mdx +++ b/document/content/docs/introduction/FAQ/privateDeploy.mdx @@ -1,14 +1,8 @@ --- -title: "私有部署常见问题" -description: "FastGPT 私有部署常见问题" -icon: upgrade -draft: false -images: [] -weight: 904 -type: redirect -target: /docs/development/faq/ +title: 私有部署常见问题 +description: FastGPT 私有部署常见问题 --- import {Redirect} from '@/components/docs/Redirect' - \ No newline at end of file + diff --git a/document/content/docs/introduction/community.mdx b/document/content/docs/introduction/community.mdx index f2dd9e7cab39..3f855ee4389f 100644 --- a/document/content/docs/introduction/community.mdx +++ b/document/content/docs/introduction/community.mdx @@ -1,10 +1,6 @@ --- -title: '加入社区' +title: 加入社区 description: ' 加入 FastGPT 开发者社区和我们一起成长' -icon: 'forum' -draft: false -toc: true -weight: 1300 --- FastGPT 是一个由用户和贡献者参与推动的开源项目,如果您对产品使用存在疑问和建议,可尝试以下方式寻求支持。我们的团队与社区会竭尽所能为您提供帮助。 @@ -13,4 +9,4 @@ FastGPT 是一个由用户和贡献者参与推动的开源项目,如果您对 -+ 🐞 请将任何 FastGPT 的 Bug、问题和需求提交到 [GitHub Issue](https://github.com/labring/fastgpt/issues/new/choose)。 \ No newline at end of file ++ 🐞 请将任何 FastGPT 的 Bug、问题和需求提交到 [GitHub Issue](https://github.com/labring/fastgpt/issues/new/choose)。 diff --git a/document/content/docs/introduction/development/configuration.mdx b/document/content/docs/introduction/development/configuration.mdx index 6fa50370da65..6023b099924a 100644 --- a/document/content/docs/introduction/development/configuration.mdx +++ b/document/content/docs/introduction/development/configuration.mdx @@ -1,10 +1,6 @@ --- -title: '配置文件介绍' -description: 'FastGPT 配置参数介绍' -icon: 'settings' -draft: false -toc: true -weight: 707 +title: 配置文件介绍 +description: FastGPT 配置参数介绍 --- 由于环境变量不利于配置复杂的内容,新版 FastGPT 采用了 ConfigMap 的形式挂载配置文件,你可以在 `projects/app/data/config.json` 看到默认的配置文件。可以参考 [docker-compose 快速部署](/docs/development/docker/) 来挂载配置文件。 @@ -71,4 +67,4 @@ weight: 707 ### 使用 Marker 解析 PDF 文件 -[点击查看 Marker 接入教程](/docs/development/custom-models/marker) \ No newline at end of file +[点击查看 Marker 接入教程](/docs/development/custom-models/marker) diff --git a/document/content/docs/introduction/development/custom-models/bge-rerank.mdx b/document/content/docs/introduction/development/custom-models/bge-rerank.mdx index 22b98a56ebad..22af6ed30ebb 100644 --- a/document/content/docs/introduction/development/custom-models/bge-rerank.mdx +++ b/document/content/docs/introduction/development/custom-models/bge-rerank.mdx @@ -1,10 +1,6 @@ --- -title: '接入 bge-rerank 重排模型' -description: '接入 bge-rerank 重排模型' -icon: 'sort' -draft: false -toc: true -weight: 920 +title: 接入 bge-rerank 重排模型 +description: 接入 bge-rerank 重排模型 --- ## 不同模型推荐配置 diff --git a/document/content/docs/introduction/development/custom-models/chatglm2-m3e.mdx b/document/content/docs/introduction/development/custom-models/chatglm2-m3e.mdx index 88e2b7583e1c..a44eec19090c 100644 --- a/document/content/docs/introduction/development/custom-models/chatglm2-m3e.mdx +++ b/document/content/docs/introduction/development/custom-models/chatglm2-m3e.mdx @@ -1,10 +1,6 @@ --- -title: '接入 ChatGLM2-m3e 模型' +title: 接入 ChatGLM2-m3e 模型 description: ' 将 FastGPT 接入私有化模型 ChatGLM2和m3e-large' -icon: 'model_training' -draft: false -toc: true -weight: 950 --- ## 前言 diff --git a/document/content/docs/introduction/development/custom-models/chatglm2.mdx b/document/content/docs/introduction/development/custom-models/chatglm2.mdx index 7b51bfbf98d6..426b0516333e 100644 --- a/document/content/docs/introduction/development/custom-models/chatglm2.mdx +++ b/document/content/docs/introduction/development/custom-models/chatglm2.mdx @@ -1,10 +1,6 @@ --- -title: '接入 ChatGLM2-6B' +title: 接入 ChatGLM2-6B description: ' 将 FastGPT 接入私有化模型 ChatGLM2-6B' -icon: 'model_training' -draft: false -toc: true -weight: 930 --- import { Alert } from '@/components/docs/Alert'; diff --git a/document/content/docs/introduction/development/custom-models/m3e.mdx b/document/content/docs/introduction/development/custom-models/m3e.mdx index 63497e734f8a..9ea8fdca11b1 100644 --- a/document/content/docs/introduction/development/custom-models/m3e.mdx +++ b/document/content/docs/introduction/development/custom-models/m3e.mdx @@ -1,10 +1,6 @@ --- -title: '接入 M3E 向量模型' +title: 接入 M3E 向量模型 description: ' 将 FastGPT 接入私有化模型 M3E' -icon: 'model_training' -draft: false -toc: true -weight: 940 --- ## 前言 diff --git a/document/content/docs/introduction/development/custom-models/marker.mdx b/document/content/docs/introduction/development/custom-models/marker.mdx index 36bbdfe684fc..0c39ddcb4b25 100644 --- a/document/content/docs/introduction/development/custom-models/marker.mdx +++ b/document/content/docs/introduction/development/custom-models/marker.mdx @@ -1,10 +1,6 @@ --- -title: '接入 Marker PDF 文档解析' -description: '使用 Marker 解析 PDF 文档,可实现图片提取和布局识别' -icon: 'api' -draft: false -toc: true -weight: 909 +title: 接入 Marker PDF 文档解析 +description: 使用 Marker 解析 PDF 文档,可实现图片提取和布局识别 --- ## 背景 @@ -100,4 +96,4 @@ CUSTOM_READ_FILE_EXTENSION=pdf ``` * CUSTOM_READ_FILE_URL - 自定义解析服务的地址, host改成解析服务的访问地址,path 不能变动。 -* CUSTOM_READ_FILE_EXTENSION - 支持的文件后缀,多个文件类型,可用逗号隔开。 \ No newline at end of file +* CUSTOM_READ_FILE_EXTENSION - 支持的文件后缀,多个文件类型,可用逗号隔开。 diff --git a/document/content/docs/introduction/development/custom-models/ollama.mdx b/document/content/docs/introduction/development/custom-models/ollama.mdx index 4c40d6226882..13830b5cbae9 100644 --- a/document/content/docs/introduction/development/custom-models/ollama.mdx +++ b/document/content/docs/introduction/development/custom-models/ollama.mdx @@ -1,10 +1,6 @@ --- title: '使用 Ollama 接入本地模型 ' description: ' 采用 Ollama 部署自己的模型' -icon: 'api' -draft: false -toc: true -weight: 950 --- [Ollama](https://ollama.com/) 是一个开源的AI大模型部署工具,专注于简化大语言模型的部署和使用,支持一键下载和运行各种大模型。 diff --git a/document/content/docs/introduction/development/custom-models/xinference.mdx b/document/content/docs/introduction/development/custom-models/xinference.mdx index fb4f7119880b..86d4ff047fd4 100644 --- a/document/content/docs/introduction/development/custom-models/xinference.mdx +++ b/document/content/docs/introduction/development/custom-models/xinference.mdx @@ -1,10 +1,6 @@ --- -title: '使用 Xinference 接入本地模型' -description: '一站式本地 LLM 私有化部署' -icon: 'api' -draft: false -toc: true -weight: 910 +title: 使用 Xinference 接入本地模型 +description: 一站式本地 LLM 私有化部署 --- [Xinference](https://github.com/xorbitsai/inference) 是一款开源模型推理平台,除了支持 LLM,它还可以部署 Embedding 和 ReRank 模型,这在企业级 RAG 构建中非常关键。同时,Xinference 还提供 Function Calling 等高级功能。还支持分布式部署,也就是说,随着未来应用调用量的增长,它可以进行水平扩展。 diff --git a/document/content/docs/introduction/development/design/dataset.mdx b/document/content/docs/introduction/development/design/dataset.mdx index 7682b42c2b97..60dd1a23880e 100644 --- a/document/content/docs/introduction/development/design/dataset.mdx +++ b/document/content/docs/introduction/development/design/dataset.mdx @@ -1,10 +1,6 @@ --- -weight: 961 -title: "数据集" -description: "FastGPT 数据集中文件与数据的设计方案" -icon: dataset -draft: false -images: [] +title: 数据集 +description: FastGPT 数据集中文件与数据的设计方案 --- ## 文件与数据的关系 @@ -22,4 +18,4 @@ images: [] 2. 浏览器解析文件,获取对应的文本和 chunk 3. 给每个 chunk 打上 file_id 4. 点击上传数据:将文件的状态改为 `used`,并将数据推送到 mongo `training` 表中等待训练 -5. 由训练线程从 mongo 中取数据,并在获取向量后插入到 pg。 \ No newline at end of file +5. 由训练线程从 mongo 中取数据,并在获取向量后插入到 pg。 diff --git a/document/content/docs/introduction/development/design/design_plugin.mdx b/document/content/docs/introduction/development/design/design_plugin.mdx index 450dbdc6ed4a..3237c814489b 100644 --- a/document/content/docs/introduction/development/design/design_plugin.mdx +++ b/document/content/docs/introduction/development/design/design_plugin.mdx @@ -1,10 +1,6 @@ --- -title: "系统插件设计" -description: "FastGPT 系统插件设计方案" -icon: "extension" -draft: false -toc: true -weight: 962 +title: 系统插件设计 +description: FastGPT 系统插件设计方案 --- ## 背景 diff --git a/document/content/docs/introduction/development/docker.mdx b/document/content/docs/introduction/development/docker.mdx index 0f291fc6b1cf..73bf91ebfeba 100644 --- a/document/content/docs/introduction/development/docker.mdx +++ b/document/content/docs/introduction/development/docker.mdx @@ -1,10 +1,6 @@ --- -title: 'Docker Compose 快速部署' -description: '使用 Docker Compose 快速部署 FastGPT' -icon: '' -draft: false -toc: true -weight: 707 +title: Docker Compose 快速部署 +description: 使用 Docker Compose 快速部署 FastGPT --- import { Alert } from '@/components/docs/Alert'; diff --git a/document/content/docs/introduction/development/faq.mdx b/document/content/docs/introduction/development/faq.mdx index 41db414d1e03..308d4eef889d 100644 --- a/document/content/docs/introduction/development/faq.mdx +++ b/document/content/docs/introduction/development/faq.mdx @@ -1,10 +1,6 @@ --- -weight: 740 -title: "私有部署常见问题" -description: "FastGPT 私有部署常见问题" -icon: upgrade -draft: false -images: [] +title: 私有部署常见问题 +description: FastGPT 私有部署常见问题 --- ## 一、错误排查方式 @@ -398,4 +394,4 @@ curl --location --request POST 'https://oneapi.xxxx/v1/chat/completions' \ ### 向量检索得分大于 1 -由于模型没有归一化导致的。目前仅支持归一化的模型。 \ No newline at end of file +由于模型没有归一化导致的。目前仅支持归一化的模型。 diff --git a/document/content/docs/introduction/development/intro.mdx b/document/content/docs/introduction/development/intro.mdx index 922f2f77d751..b30a5606b3ed 100644 --- a/document/content/docs/introduction/development/intro.mdx +++ b/document/content/docs/introduction/development/intro.mdx @@ -1,10 +1,6 @@ --- -title: '快速开始本地开发' -description: '对 FastGPT 进行开发调试' -icon: 'developer_guide' -draft: false -toc: true -weight: 705 +title: 快速开始本地开发 +description: 对 FastGPT 进行开发调试 --- import { Alert } from '@/components/docs/Alert'; diff --git a/document/content/docs/introduction/development/migration/docker_db.mdx b/document/content/docs/introduction/development/migration/docker_db.mdx index c6c40aba5037..e385092f5510 100644 --- a/document/content/docs/introduction/development/migration/docker_db.mdx +++ b/document/content/docs/introduction/development/migration/docker_db.mdx @@ -1,10 +1,6 @@ --- -weight: 960 -title: "Docker 数据库迁移(无脑操作)" -description: "FastGPT Docker 数据库备份和迁移" -icon: database -draft: false -images: [] +title: Docker 数据库迁移(无脑操作) +description: FastGPT Docker 数据库备份和迁移 --- ## 1. 停止服务 @@ -21,4 +17,4 @@ Docker 部署数据库都会通过 volume 挂载本地的目录进入容器, `PG 数据`: pg/data `Mongo 数据`: mongo/data -直接把pg 和 mongo目录全部复制走即可。 \ No newline at end of file +直接把pg 和 mongo目录全部复制走即可。 diff --git a/document/content/docs/introduction/development/migration/docker_mongo.mdx b/document/content/docs/introduction/development/migration/docker_mongo.mdx index c3d8e754f930..9475255c6ec0 100644 --- a/document/content/docs/introduction/development/migration/docker_mongo.mdx +++ b/document/content/docs/introduction/development/migration/docker_mongo.mdx @@ -1,9 +1,6 @@ --- -title: "Docker Mongo迁移(dump模式)" -description: "FastGPT Docker Mongo迁移" -icon: database -draft: false -weight: 960 +title: Docker Mongo迁移(dump模式) +description: FastGPT Docker Mongo迁移 --- ## 作者 diff --git a/document/content/docs/introduction/development/modelConfig/ai-proxy.mdx b/document/content/docs/introduction/development/modelConfig/ai-proxy.mdx index 5d86c095788e..a28b574d23ae 100644 --- a/document/content/docs/introduction/development/modelConfig/ai-proxy.mdx +++ b/document/content/docs/introduction/development/modelConfig/ai-proxy.mdx @@ -1,10 +1,6 @@ --- -title: '通过 AI Proxy 接入模型' -description: '通过 AI Proxy 接入模型' -icon: 'api' -draft: false -toc: true -weight: 744 +title: 通过 AI Proxy 接入模型 +description: 通过 AI Proxy 接入模型 --- 从 `FastGPT 4.8.23` 版本开始,引入 AI Proxy 来进一步方便模型的配置。 @@ -126,4 +122,4 @@ curl --location --request POST '{{host}}/api/channels/import/oneapi' \ 执行成功的情况下会返回 "success": true -脚本目前不是完全准,仅是简单的做数据映射,主要是迁移`代理地址`、`模型`和`API 密钥`,建议迁移后再进行手动检查。 \ No newline at end of file +脚本目前不是完全准,仅是简单的做数据映射,主要是迁移`代理地址`、`模型`和`API 密钥`,建议迁移后再进行手动检查。 diff --git a/document/content/docs/introduction/development/modelConfig/intro.mdx b/document/content/docs/introduction/development/modelConfig/intro.mdx index 2dd291833d2b..8f86a537cf1a 100644 --- a/document/content/docs/introduction/development/modelConfig/intro.mdx +++ b/document/content/docs/introduction/development/modelConfig/intro.mdx @@ -1,10 +1,6 @@ --- -title: 'FastGPT 模型配置说明' -description: 'FastGPT 模型配置说明' -icon: 'api' -draft: false -toc: true -weight: 744 +title: FastGPT 模型配置说明 +description: FastGPT 模型配置说明 --- import { Alert } from '@/components/docs/Alert'; diff --git a/document/content/docs/introduction/development/modelConfig/one-api.mdx b/document/content/docs/introduction/development/modelConfig/one-api.mdx index 80f44ae46201..ec1a17bbcac1 100644 --- a/document/content/docs/introduction/development/modelConfig/one-api.mdx +++ b/document/content/docs/introduction/development/modelConfig/one-api.mdx @@ -1,10 +1,6 @@ --- -title: '通过 OneAPI 接入模型' -description: '通过 OneAPI 接入模型' -icon: 'api' -draft: false -toc: true -weight: 745 +title: 通过 OneAPI 接入模型 +description: 通过 OneAPI 接入模型 --- FastGPT 目前采用模型分离的部署方案,FastGPT 中只兼容 OpenAI 的模型规范(OpenAI 不存在的模型采用一个较为通用的规范),并通过 [One API](https://github.com/songquanpeng/one-api) 来实现对不同模型接口的统一。 diff --git a/document/content/docs/introduction/development/modelConfig/ppio.mdx b/document/content/docs/introduction/development/modelConfig/ppio.mdx index ba3cd70036dc..278482e99cfc 100644 --- a/document/content/docs/introduction/development/modelConfig/ppio.mdx +++ b/document/content/docs/introduction/development/modelConfig/ppio.mdx @@ -1,10 +1,6 @@ --- -title: '通过 PPIO LLM API 接入模型' -description: '通过 PPIO LLM API 接入模型' -icon: 'api' -draft: false -toc: true -weight: 747 +title: 通过 PPIO LLM API 接入模型 +description: 通过 PPIO LLM API 接入模型 --- import { Alert } from '@/components/docs/Alert'; diff --git a/document/content/docs/introduction/development/modelConfig/siliconCloud.mdx b/document/content/docs/introduction/development/modelConfig/siliconCloud.mdx index 2f958b510b51..f37fdca83ce4 100644 --- a/document/content/docs/introduction/development/modelConfig/siliconCloud.mdx +++ b/document/content/docs/introduction/development/modelConfig/siliconCloud.mdx @@ -1,10 +1,6 @@ --- -title: '通过 SiliconCloud 体验开源模型' -description: '通过 SiliconCloud 体验开源模型' -icon: 'api' -draft: false -toc: true -weight: 746 +title: 通过 SiliconCloud 体验开源模型 +description: 通过 SiliconCloud 体验开源模型 --- [SiliconCloud(硅基流动)](https://cloud.siliconflow.cn/i/TR9Ym0c4) 是一个以提供开源模型调用为主的平台,并拥有自己的加速引擎。帮助用户低成本、快速的进行开源模型的测试和使用。实际体验下来,他们家模型的速度和稳定性都非常不错,并且种类丰富,覆盖语言、向量、重排、TTS、STT、绘图、视频生成模型,可以满足 FastGPT 中所有模型需求。 @@ -91,4 +87,4 @@ CHAT_API_KEY=sk-xxxxxx 如果你想快速的体验开源模型或者快速的使用 FastGPT,不想在不同服务商申请各类 Api Key,那么可以选择 SiliconCloud 的模型先进行快速体验。 -如果你决定未来私有化部署模型和 FastGPT,前期可通过 SiliconCloud 进行测试验证,后期再进行硬件采购,减少 POC 时间和成本。 \ No newline at end of file +如果你决定未来私有化部署模型和 FastGPT,前期可通过 SiliconCloud 进行测试验证,后期再进行硬件采购,减少 POC 时间和成本。 diff --git a/document/content/docs/introduction/development/openapi/chat.mdx b/document/content/docs/introduction/development/openapi/chat.mdx index aa7ff91f2245..6d150643829a 100644 --- a/document/content/docs/introduction/development/openapi/chat.mdx +++ b/document/content/docs/introduction/development/openapi/chat.mdx @@ -1,10 +1,6 @@ --- -title: '对话接口' -description: 'FastGPT OpenAPI 对话接口' -icon: 'chat' -draft: false -toc: true -weight: 852 +title: 对话接口 +description: FastGPT OpenAPI 对话接口 --- import { Alert } from '@/components/docs/Alert'; diff --git a/document/content/docs/introduction/development/openapi/dataset.mdx b/document/content/docs/introduction/development/openapi/dataset.mdx index f62e1cbca156..113bfd843a40 100644 --- a/document/content/docs/introduction/development/openapi/dataset.mdx +++ b/document/content/docs/introduction/development/openapi/dataset.mdx @@ -1,10 +1,6 @@ --- -title: '知识库接口' -description: 'FastGPT OpenAPI 知识库接口' -icon: 'dataset' -draft: false -toc: true -weight: 853 +title: 知识库接口 +description: FastGPT OpenAPI 知识库接口 --- import { Alert } from '@/components/docs/Alert'; diff --git a/document/content/docs/introduction/development/openapi/intro.mdx b/document/content/docs/introduction/development/openapi/intro.mdx index abc5cf3add19..7f9ec84cdb85 100644 --- a/document/content/docs/introduction/development/openapi/intro.mdx +++ b/document/content/docs/introduction/development/openapi/intro.mdx @@ -1,10 +1,6 @@ --- -title: 'OpenAPI 介绍' -description: 'FastGPT OpenAPI 介绍' -icon: 'key' -draft: false -toc: true -weight: 851 +title: OpenAPI 介绍 +description: FastGPT OpenAPI 介绍 --- ## 使用说明 diff --git a/document/content/docs/introduction/development/openapi/share.mdx b/document/content/docs/introduction/development/openapi/share.mdx index 21f9c7a2f8f7..1ce11604c692 100644 --- a/document/content/docs/introduction/development/openapi/share.mdx +++ b/document/content/docs/introduction/development/openapi/share.mdx @@ -1,10 +1,6 @@ --- -title: '分享链接身份鉴权' -description: 'FastGPT 分享链接身份鉴权' -icon: 'share' -draft: false -toc: true -weight: 860 +title: 分享链接身份鉴权 +description: FastGPT 分享链接身份鉴权 --- import { Alert } from '@/components/docs/Alert'; @@ -403,4 +399,4 @@ export default async function (ctx: FunctionContext) { 这个鉴权方式通常是帮助你直接嵌入`分享链接`到你的应用中,在你的应用打开分享链接前,应做`authToken`的拼接后再打开。 -除了对接已有系统的用户外,你还可以对接`余额`功能,通过`结果上报`接口扣除用户余额,通过`对话前校验`接口检查用户的余额。 \ No newline at end of file +除了对接已有系统的用户外,你还可以对接`余额`功能,通过`结果上报`接口扣除用户余额,通过`对话前校验`接口检查用户的余额。 diff --git a/document/content/docs/introduction/development/proxy/cloudflare.mdx b/document/content/docs/introduction/development/proxy/cloudflare.mdx index b200179291bb..e49c30231e14 100644 --- a/document/content/docs/introduction/development/proxy/cloudflare.mdx +++ b/document/content/docs/introduction/development/proxy/cloudflare.mdx @@ -1,10 +1,6 @@ --- -title: "Cloudflare Worker 中转" -description: "使用 Cloudflare Worker 实现中转" -icon: "foggy" -draft: false -toc: true -weight: 953 +title: Cloudflare Worker 中转 +description: 使用 Cloudflare Worker 实现中转 --- [参考 "不做了睡觉" 的教程](https://gravel-twister-d32.notion.site/FastGPT-API-ba7bb261d5fd4fd9bbb2f0607dacdc9e) @@ -51,4 +47,4 @@ async function handleRequest(request) { ```bash OPENAI_BASE_URL=https://xxxxxx/v1 OPENAI_BASE_URL_AUTH=auth_code -``` \ No newline at end of file +``` diff --git a/document/content/docs/introduction/development/proxy/http_proxy.mdx b/document/content/docs/introduction/development/proxy/http_proxy.mdx index 3708b8636331..89537074cb99 100644 --- a/document/content/docs/introduction/development/proxy/http_proxy.mdx +++ b/document/content/docs/introduction/development/proxy/http_proxy.mdx @@ -1,10 +1,6 @@ --- -title: "HTTP 代理中转" -description: "使用 HTTP 代理实现中转" -icon: "http" -draft: false -toc: true -weight: 952 +title: HTTP 代理中转 +description: 使用 HTTP 代理实现中转 --- 如果你有代理工具(例如 [Clash](https://github.com/Dreamacro/clash) 或者 [sing-box](https://github.com/SagerNet/sing-box)),也可以使用 HTTP 代理来访问 OpenAI。只需要添加以下两个环境变量即可: diff --git a/document/content/docs/introduction/development/proxy/nginx.mdx b/document/content/docs/introduction/development/proxy/nginx.mdx index 9fefbd8a3400..b13746d4b0f7 100644 --- a/document/content/docs/introduction/development/proxy/nginx.mdx +++ b/document/content/docs/introduction/development/proxy/nginx.mdx @@ -1,10 +1,6 @@ --- -title: "Nginx 中转" -description: "使用 Sealos 部署 Nginx 实现中转" -icon: "cloud_sync" -draft: false -toc: true -weight: 951 +title: Nginx 中转 +description: 使用 Sealos 部署 Nginx 实现中转 --- ## 登录 Sealos @@ -102,4 +98,4 @@ weight: 951 OPENAI_BASE_URL=https://tgohwtdlrmer.cloud.sealos.io/openai/v1 ``` -**Done!** \ No newline at end of file +**Done!** diff --git a/document/content/docs/introduction/development/sealos.mdx b/document/content/docs/introduction/development/sealos.mdx index 7284136cd8a9..469998f5639a 100644 --- a/document/content/docs/introduction/development/sealos.mdx +++ b/document/content/docs/introduction/development/sealos.mdx @@ -1,10 +1,6 @@ --- -title: "Sealos 一键部署" -description: "使用 Sealos 一键部署 FastGPT" -icon: "cloud" -draft: false -toc: true -weight: 706 +title: Sealos 一键部署 +description: 使用 Sealos 一键部署 FastGPT --- import { Alert } from '@/components/docs/Alert'; @@ -168,4 +164,4 @@ SYSTEM_FAVICON 可以是一个网络地址 ### One API 使用 -[参考 OneAPI 使用步骤](/docs/development/modelconfig/one-api/) \ No newline at end of file +[参考 OneAPI 使用步骤](/docs/development/modelconfig/one-api/) diff --git a/document/content/docs/introduction/development/upgrading/40.mdx b/document/content/docs/introduction/development/upgrading/40.mdx index 11790c939d7f..679b3eeeae41 100644 --- a/document/content/docs/introduction/development/upgrading/40.mdx +++ b/document/content/docs/introduction/development/upgrading/40.mdx @@ -1,10 +1,6 @@ --- -title: '升级到 V4.0' -description: 'FastGPT 从旧版本升级到 V4.0 操作指南' -icon: 'upgrade' -draft: false -toc: true -weight: 850 +title: 升级到 V4.0 +description: FastGPT 从旧版本升级到 V4.0 操作指南 --- import { Alert } from '@/components/docs/Alert'; diff --git a/document/content/docs/introduction/development/upgrading/41.mdx b/document/content/docs/introduction/development/upgrading/41.mdx index 7d2f056fdf30..5c8d5ba2ad4d 100644 --- a/document/content/docs/introduction/development/upgrading/41.mdx +++ b/document/content/docs/introduction/development/upgrading/41.mdx @@ -1,10 +1,6 @@ --- -title: '升级到 V4.1' -description: 'FastGPT 从旧版本升级到 V4.1 操作指南' -icon: 'upgrade' -draft: false -toc: true -weight: 849 +title: 升级到 V4.1 +description: FastGPT 从旧版本升级到 V4.1 操作指南 --- 如果您是**从旧版本升级到 V4.1**,由于新版重新设置了对话存储结构,需要初始化原来的存储内容。 diff --git a/document/content/docs/introduction/development/upgrading/4100.mdx b/document/content/docs/introduction/development/upgrading/4100.mdx index 745e59782dd6..05b84e2efeb9 100644 --- a/document/content/docs/introduction/development/upgrading/4100.mdx +++ b/document/content/docs/introduction/development/upgrading/4100.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.10.0' -description: 'FastGPT V4.10.0 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 785 +title: V4.10.0 +description: FastGPT V4.10.0 更新说明 --- ## 更新指南 diff --git a/document/content/docs/introduction/development/upgrading/4101.mdx b/document/content/docs/introduction/development/upgrading/4101.mdx index 4a361adde364..c66cf6c9de27 100644 --- a/document/content/docs/introduction/development/upgrading/4101.mdx +++ b/document/content/docs/introduction/development/upgrading/4101.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.10.1' -description: 'FastGPT V4.10.1 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 784 +title: V4.10.1 +description: FastGPT V4.10.1 更新说明 --- ## 更新指南 diff --git a/document/content/docs/introduction/development/upgrading/42.mdx b/document/content/docs/introduction/development/upgrading/42.mdx index ece48521c61b..67d26ecd8e4f 100644 --- a/document/content/docs/introduction/development/upgrading/42.mdx +++ b/document/content/docs/introduction/development/upgrading/42.mdx @@ -1,10 +1,6 @@ --- -title: '升级到 V4.2' -description: 'FastGPT 从旧版本升级到 V4.2 操作指南' -icon: 'upgrade' -draft: false -toc: true -weight: 848 +title: 升级到 V4.2 +description: FastGPT 从旧版本升级到 V4.2 操作指南 --- 99.9%用户不影响,升级 4.2 主要是修改了配置文件中 QAModel 的格式。从原先的数组改成对象: diff --git a/document/content/docs/introduction/development/upgrading/421.mdx b/document/content/docs/introduction/development/upgrading/421.mdx index b224ed9e2ab8..9f9ac04efacf 100644 --- a/document/content/docs/introduction/development/upgrading/421.mdx +++ b/document/content/docs/introduction/development/upgrading/421.mdx @@ -1,10 +1,6 @@ --- -title: '升级到 V4.2.1' -description: 'FastGPT 从旧版本升级到 V4.2.1 操作指南' -icon: 'upgrade' -draft: false -toc: true -weight: 847 +title: 升级到 V4.2.1 +description: FastGPT 从旧版本升级到 V4.2.1 操作指南 --- 私有部署,如果添加了配置文件,需要在配置文件中修改 `VectorModels` 字段。增加 defaultToken 和 maxToken,分别对应直接分段时的默认 token 数量和该模型支持的 token 上限 (通常不建议超过 3000) diff --git a/document/content/docs/introduction/development/upgrading/43.mdx b/document/content/docs/introduction/development/upgrading/43.mdx index 5577018ac8b1..87f7663f8908 100644 --- a/document/content/docs/introduction/development/upgrading/43.mdx +++ b/document/content/docs/introduction/development/upgrading/43.mdx @@ -1,10 +1,6 @@ --- -title: '升级到 V4.3(包含升级脚本)' -description: 'FastGPT 从旧版本升级到 V4.3 操作指南' -icon: 'upgrade' -draft: false -toc: true -weight: 846 +title: 升级到 V4.3(包含升级脚本) +description: FastGPT 从旧版本升级到 V4.3 操作指南 --- ## 执行初始化 API diff --git a/document/content/docs/introduction/development/upgrading/44.mdx b/document/content/docs/introduction/development/upgrading/44.mdx index 4c2ee70371fc..40fc6e916cdb 100644 --- a/document/content/docs/introduction/development/upgrading/44.mdx +++ b/document/content/docs/introduction/development/upgrading/44.mdx @@ -1,10 +1,6 @@ --- -title: '升级到 V4.4(包含升级脚本)' -description: 'FastGPT 从旧版本升级到 V4.4 操作指南' -icon: 'upgrade' -draft: false -toc: true -weight: 845 +title: 升级到 V4.4(包含升级脚本) +description: FastGPT 从旧版本升级到 V4.4 操作指南 --- ## 执行初始化 API diff --git a/document/content/docs/introduction/development/upgrading/441.mdx b/document/content/docs/introduction/development/upgrading/441.mdx index 8a885c343883..8c1dcb1027ec 100644 --- a/document/content/docs/introduction/development/upgrading/441.mdx +++ b/document/content/docs/introduction/development/upgrading/441.mdx @@ -1,10 +1,6 @@ --- -title: '升级到 V4.4.1(包含升级脚本)' -description: 'FastGPT 从旧版本升级到 V4.4.1 操作指南' -icon: 'upgrade' -draft: false -toc: true -weight: 844 +title: 升级到 V4.4.1(包含升级脚本) +description: FastGPT 从旧版本升级到 V4.4.1 操作指南 --- ## 执行初始化 API diff --git a/document/content/docs/introduction/development/upgrading/442.mdx b/document/content/docs/introduction/development/upgrading/442.mdx index b09b75bc926a..586db0215360 100644 --- a/document/content/docs/introduction/development/upgrading/442.mdx +++ b/document/content/docs/introduction/development/upgrading/442.mdx @@ -1,10 +1,6 @@ --- -title: '升级到 V4.4.2(包含升级脚本)' -description: 'FastGPT 从旧版本升级到 V4.4.2 操作指南' -icon: 'upgrade' -draft: false -toc: true -weight: 843 +title: 升级到 V4.4.2(包含升级脚本) +description: FastGPT 从旧版本升级到 V4.4.2 操作指南 --- ## 执行初始化 API diff --git a/document/content/docs/introduction/development/upgrading/445.mdx b/document/content/docs/introduction/development/upgrading/445.mdx index 11914a2c055f..6d310c66bed9 100644 --- a/document/content/docs/introduction/development/upgrading/445.mdx +++ b/document/content/docs/introduction/development/upgrading/445.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.4.5(包含升级脚本)' -description: 'FastGPT V4.4.5 更新' -icon: 'upgrade' -draft: false -toc: true -weight: 842 +title: V4.4.5(包含升级脚本) +description: FastGPT V4.4.5 更新 --- ## 执行初始化 API @@ -28,4 +24,4 @@ curl --location --request POST 'https://{{host}}/api/admin/initv445' \ 1. 新增 - 下一步指引选项,可以通过模型生成 3 个预测问题。 2. 商业版新增 - 分享链接限制及 hook 身份校验(可对接已有的用户系统)。 3. 商业版新增 - Api Key 使用。增加别名、额度限制和过期时间。自带 appId,无需额外连接。 -4. 优化 - 全局变量与开场白合并成同一模块。 \ No newline at end of file +4. 优化 - 全局变量与开场白合并成同一模块。 diff --git a/document/content/docs/introduction/development/upgrading/446.mdx b/document/content/docs/introduction/development/upgrading/446.mdx index a6e3fe784706..ce3073e9ef45 100644 --- a/document/content/docs/introduction/development/upgrading/446.mdx +++ b/document/content/docs/introduction/development/upgrading/446.mdx @@ -1,14 +1,10 @@ --- -title: 'V4.4.6' -description: 'FastGPT V4.4.6 更新' -icon: 'upgrade' -draft: false -toc: true -weight: 841 +title: V4.4.6 +description: FastGPT V4.4.6 更新 --- ## 功能介绍 1. 高级编排新增模块 - 应用调用,可调用其他应用。 2. 新增 - 必要连接校验 -3. 修复 - 下一步指引在免登录中身份问题。 \ No newline at end of file +3. 修复 - 下一步指引在免登录中身份问题。 diff --git a/document/content/docs/introduction/development/upgrading/447.mdx b/document/content/docs/introduction/development/upgrading/447.mdx index 15ae8ebd226a..8fefd6c71bfb 100644 --- a/document/content/docs/introduction/development/upgrading/447.mdx +++ b/document/content/docs/introduction/development/upgrading/447.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.4.7(需执行升级脚本)' -description: 'FastGPT V4.4.7 更新(需执行升级脚本)' -icon: 'upgrade' -draft: false -toc: true -weight: 840 +title: V4.4.7(需执行升级脚本) +description: FastGPT V4.4.7 更新(需执行升级脚本) --- ## 执行初始化 API diff --git a/document/content/docs/introduction/development/upgrading/45.mdx b/document/content/docs/introduction/development/upgrading/45.mdx index 37dd84df0026..080242b29d24 100644 --- a/document/content/docs/introduction/development/upgrading/45.mdx +++ b/document/content/docs/introduction/development/upgrading/45.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.5(需进行较为复杂更新)' -description: 'FastGPT V4.5 更新' -icon: 'upgrade' -draft: false -toc: true -weight: 839 +title: V4.5(需进行较为复杂更新) +description: FastGPT V4.5 更新 --- FastGPT V4.5 引入 PgVector0.5 版本的 HNSW 索引,极大的提高了知识库检索的速度,比起`IVFFlat`索引大致有3~10倍的性能提升,可轻松实现百万数据毫秒级搜索。缺点在于构建索引的速度非常慢,4c16g 500w 组数据使用`并行构建`大约花了 48 小时。具体参数配置可参考 [PgVector官方](https://github.com/pgvector/pgvector) @@ -90,4 +86,4 @@ CREATE INDEX CONCURRENTLY vector_index ON modeldata USING hnsw (vector vector_ip ## 该版本需要修改 `config.json` 文件 -最新配置可参考: [V45版本最新 config.json](/docs/development/configuration) \ No newline at end of file +最新配置可参考: [V45版本最新 config.json](/docs/development/configuration) diff --git a/document/content/docs/introduction/development/upgrading/451.mdx b/document/content/docs/introduction/development/upgrading/451.mdx index 8842feede678..682701156d9b 100644 --- a/document/content/docs/introduction/development/upgrading/451.mdx +++ b/document/content/docs/introduction/development/upgrading/451.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.5.1(需进行初始化)' -description: 'FastGPT V4.5.1 更新' -icon: 'upgrade' -draft: false -toc: true -weight: 838 +title: V4.5.1(需进行初始化) +description: FastGPT V4.5.1 更新 --- ## 执行初始化 API @@ -32,4 +28,4 @@ curl --location --request POST 'https://{{host}}/api/admin/initv451' \ 1. 新增知识库文件夹管理 2. 修复了 openai4.x sdk 无法兼容 oneapi 的智谱和阿里的接口。 -3. 修复部分模块无法触发完成事件 \ No newline at end of file +3. 修复部分模块无法触发完成事件 diff --git a/document/content/docs/introduction/development/upgrading/452.mdx b/document/content/docs/introduction/development/upgrading/452.mdx index 5f2527c24f01..e331de16160c 100644 --- a/document/content/docs/introduction/development/upgrading/452.mdx +++ b/document/content/docs/introduction/development/upgrading/452.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.5.2' -description: 'FastGPT V4.5.2 更新' -icon: 'upgrade' -draft: false -toc: true -weight: 837 +title: V4.5.2 +description: FastGPT V4.5.2 更新 --- ## 功能介绍 @@ -12,4 +8,4 @@ weight: 837 ### Fast GPT V4.5.2 1. 新增 - 模块插件,允许自行组装插件进行模块复用。 -2. 优化 - 知识库引用提示。 \ No newline at end of file +2. 优化 - 知识库引用提示。 diff --git a/document/content/docs/introduction/development/upgrading/46.mdx b/document/content/docs/introduction/development/upgrading/46.mdx index cbcb86905112..d758a7454481 100644 --- a/document/content/docs/introduction/development/upgrading/46.mdx +++ b/document/content/docs/introduction/development/upgrading/46.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.6(包含升级脚本)' -description: 'FastGPT V4.6 更新' -icon: 'upgrade' -draft: false -toc: true -weight: 836 +title: V4.6(包含升级脚本) +description: FastGPT V4.6 更新 --- **V4.6 版本加入了简单的团队功能,可以邀请其他用户进来管理资源。该版本升级后无法执行旧的升级脚本,且无法回退。** @@ -64,4 +60,4 @@ https://xxxxx/api/admin/initv46-fix curl --location --request POST 'https://{{host}}/api/admin/initv46-fix' \ --header 'rootkey: {{rootkey}}' \ --header 'Content-Type: application/json' -``` \ No newline at end of file +``` diff --git a/document/content/docs/introduction/development/upgrading/461.mdx b/document/content/docs/introduction/development/upgrading/461.mdx index 44515e34b132..cb2b073ecf07 100644 --- a/document/content/docs/introduction/development/upgrading/461.mdx +++ b/document/content/docs/introduction/development/upgrading/461.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.6.1' -description: 'FastGPT V4.6 .1' -icon: 'upgrade' -draft: false -toc: true -weight: 835 +title: V4.6.1 +description: FastGPT V4.6 .1 --- diff --git a/document/content/docs/introduction/development/upgrading/462.mdx b/document/content/docs/introduction/development/upgrading/462.mdx index 32857a032e6b..c233f050df5d 100644 --- a/document/content/docs/introduction/development/upgrading/462.mdx +++ b/document/content/docs/introduction/development/upgrading/462.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.6.2(包含升级脚本)' -description: 'FastGPT V4.6.2' -icon: 'upgrade' -draft: false -toc: true -weight: 834 +title: V4.6.2(包含升级脚本) +description: FastGPT V4.6.2 --- ## 1。执行初始化 API diff --git a/document/content/docs/introduction/development/upgrading/463.mdx b/document/content/docs/introduction/development/upgrading/463.mdx index 4d9a55c2db07..00cf151705aa 100644 --- a/document/content/docs/introduction/development/upgrading/463.mdx +++ b/document/content/docs/introduction/development/upgrading/463.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.6.3(包含升级脚本)' -description: 'FastGPT V4.6.3' -icon: 'upgrade' -draft: false -toc: true -weight: 833 +title: V4.6.3(包含升级脚本) +description: FastGPT V4.6.3 --- ## 1。执行初始化 API diff --git a/document/content/docs/introduction/development/upgrading/464.mdx b/document/content/docs/introduction/development/upgrading/464.mdx index 66678a084ce1..1c9e1d1c38ed 100644 --- a/document/content/docs/introduction/development/upgrading/464.mdx +++ b/document/content/docs/introduction/development/upgrading/464.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.6.4(包含升级脚本)' -description: 'FastGPT V4.6.4' -icon: 'upgrade' -draft: false -toc: true -weight: 832 +title: V4.6.4(包含升级脚本) +description: FastGPT V4.6.4 --- ## 1。执行初始化 API diff --git a/document/content/docs/introduction/development/upgrading/465.mdx b/document/content/docs/introduction/development/upgrading/465.mdx index 966ee18f1f31..8503ee976d30 100644 --- a/document/content/docs/introduction/development/upgrading/465.mdx +++ b/document/content/docs/introduction/development/upgrading/465.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.6.5(需要改配置文件)' -description: 'FastGPT V4.6.5' -icon: 'upgrade' -draft: false -toc: true -weight: 831 +title: V4.6.5(需要改配置文件) +description: FastGPT V4.6.5 --- ## 配置文件变更 diff --git a/document/content/docs/introduction/development/upgrading/466.mdx b/document/content/docs/introduction/development/upgrading/466.mdx index 0435df94a54f..9941eabc39c0 100644 --- a/document/content/docs/introduction/development/upgrading/466.mdx +++ b/document/content/docs/introduction/development/upgrading/466.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.6.6(需要改配置文件)' -description: 'FastGPT V4.6.6' -icon: 'upgrade' -draft: false -toc: true -weight: 830 +title: V4.6.6(需要改配置文件) +description: FastGPT V4.6.6 --- ## 配置文件变更 @@ -30,4 +26,4 @@ weight: 830 5. 优化 - 问题分类提示词,id引导。测试国产商用 api 模型(百度阿里智谱讯飞)使用 Prompt 模式均可分类。 6. UI 优化,未来将逐步替换新的UI设计。 7. 优化代码:Icon 抽离和自动化获取。 -8. 修复 - 链接读取的数据集,未保存选择器,导致同步时不使用选择器。 \ No newline at end of file +8. 修复 - 链接读取的数据集,未保存选择器,导致同步时不使用选择器。 diff --git a/document/content/docs/introduction/development/upgrading/467.mdx b/document/content/docs/introduction/development/upgrading/467.mdx index 284acd875520..ead811972c1b 100644 --- a/document/content/docs/introduction/development/upgrading/467.mdx +++ b/document/content/docs/introduction/development/upgrading/467.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.6.7(需要初始化)' -description: 'FastGPT V4.6.7' -icon: 'upgrade' -draft: false -toc: true -weight: 829 +title: V4.6.7(需要初始化) +description: FastGPT V4.6.7 --- ## 1。执行初始化 API @@ -32,4 +28,4 @@ curl --location --request POST 'https://{{host}}/api/admin/initv467' \ 4. 新增 - 输入框变量提示。输入 `{` 号后将会获得可用变量提示。根据社区针对高级编排的反馈,我们计划于 2 月份的版本中,优化变量内容,支持模块的局部变量以及更多全局变量写入。 5. 优化 - 切换团队后会保存记录,下次登录时优先登录该团队。 6. 修复 - API 对话时,chatId 冲突问题。 -7. 修复 - Iframe 嵌入网页可能导致的 window.onLoad 冲突。 \ No newline at end of file +7. 修复 - Iframe 嵌入网页可能导致的 window.onLoad 冲突。 diff --git a/document/content/docs/introduction/development/upgrading/468.mdx b/document/content/docs/introduction/development/upgrading/468.mdx index 689de7ef663f..3131999d06da 100644 --- a/document/content/docs/introduction/development/upgrading/468.mdx +++ b/document/content/docs/introduction/development/upgrading/468.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.6.8(需要初始化)' -description: 'FastGPT V4.6.8更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 828 +title: V4.6.8(需要初始化) +description: FastGPT V4.6.8更新说明 --- ## docker 部署 - 手动更新 Mongo @@ -95,4 +91,4 @@ curl --location --request POST 'https://{{host}}/api/init/v468' \ 4. 优化 - LLM 模型配置,不再区分对话、分类、提取模型。同时支持模型的默认参数,避免不同模型参数冲突,可通过`defaultConfig`传入默认的配置。 5. 优化 - 流响应,参考了`ChatNextWeb`的流,更加丝滑。此外,之前提到的乱码、中断,刷新后又正常了,可能会修复) 6. 修复 - 语音输入文件无法上传。 -7. 修复 - 对话框重新生成无法使用。 \ No newline at end of file +7. 修复 - 对话框重新生成无法使用。 diff --git a/document/content/docs/introduction/development/upgrading/469.mdx b/document/content/docs/introduction/development/upgrading/469.mdx index cc4644def8ea..434d3ae2ef04 100644 --- a/document/content/docs/introduction/development/upgrading/469.mdx +++ b/document/content/docs/introduction/development/upgrading/469.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.6.9(包含升级脚本)' -description: 'FastGPT V4.6.9更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 827 +title: V4.6.9(包含升级脚本) +description: FastGPT V4.6.9更新说明 --- ## 修改商业版环境变量 diff --git a/document/content/docs/introduction/development/upgrading/47.mdx b/document/content/docs/introduction/development/upgrading/47.mdx index 67b4bc027438..ccb48f21e280 100644 --- a/document/content/docs/introduction/development/upgrading/47.mdx +++ b/document/content/docs/introduction/development/upgrading/47.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.7(需要初始化)' -description: 'FastGPT V4.7更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 826 +title: V4.7(需要初始化) +description: FastGPT V4.7更新说明 --- ## 1. 修改配置文件 diff --git a/document/content/docs/introduction/development/upgrading/471.mdx b/document/content/docs/introduction/development/upgrading/471.mdx index ca2cb18ddfd8..70b7b8344bce 100644 --- a/document/content/docs/introduction/development/upgrading/471.mdx +++ b/document/content/docs/introduction/development/upgrading/471.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.7.1(包含升级脚本)' -description: 'FastGPT V4.7.1 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 825 +title: V4.7.1(包含升级脚本) +description: FastGPT V4.7.1 更新说明 --- ## 初始化脚本 @@ -38,4 +34,4 @@ curl --location --request POST 'https://{{host}}/api/admin/clearInvalidData' \ 9. 修复 - 自定义索引输入时,解构数据失败。 10. 修复 - rerank 模型数据格式。 11. 修复 - 问题补全历史记录BUG -12. 修复 - 分享页面特殊情况下加载缓慢问题(由于ssr时候数据库不会触发连接) \ No newline at end of file +12. 修复 - 分享页面特殊情况下加载缓慢问题(由于ssr时候数据库不会触发连接) diff --git a/document/content/docs/introduction/development/upgrading/48.mdx b/document/content/docs/introduction/development/upgrading/48.mdx index 9a48996a4c05..240d91ee062b 100644 --- a/document/content/docs/introduction/development/upgrading/48.mdx +++ b/document/content/docs/introduction/development/upgrading/48.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8' -description: 'FastGPT V4.8 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 824 +title: V4.8 +description: FastGPT V4.8 更新说明 --- import { Alert } from '@/components/docs/Alert'; @@ -54,4 +50,4 @@ gmail: smtp.gmail.com 20. 修复 - 工具调用时候,name不能是数字开头(随机数有概率数字开头)@c121914yu 21. 修复 - 分享链接, query 全局变量会被缓存。 @c121914yu 22. 修复 - 工具调用字段兼容。 https://github.com/labring/FastGPT/issues/1253 -23. 修复 - HTTP 模块url光标问题 https://github.com/labring/FastGPT/issues/1334 @maquannene \ No newline at end of file +23. 修复 - HTTP 模块url光标问题 https://github.com/labring/FastGPT/issues/1334 @maquannene diff --git a/document/content/docs/introduction/development/upgrading/481.mdx b/document/content/docs/introduction/development/upgrading/481.mdx index 008dde1e54e5..36a05ef589bc 100644 --- a/document/content/docs/introduction/development/upgrading/481.mdx +++ b/document/content/docs/introduction/development/upgrading/481.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.1(包含升级脚本)' -description: 'FastGPT V4.8.1 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 823 +title: V4.8.1(包含升级脚本) +description: FastGPT V4.8.1 更新说明 --- ## 初始化脚本 diff --git a/document/content/docs/introduction/development/upgrading/4810.mdx b/document/content/docs/introduction/development/upgrading/4810.mdx index d1a2cd3a8630..f49bb5128eec 100644 --- a/document/content/docs/introduction/development/upgrading/4810.mdx +++ b/document/content/docs/introduction/development/upgrading/4810.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.10(包含升级脚本)' -description: 'FastGPT V4.8.10 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 814 +title: V4.8.10(包含升级脚本) +description: FastGPT V4.8.10 更新说明 --- ## 更新指南 diff --git a/document/content/docs/introduction/development/upgrading/4811.mdx b/document/content/docs/introduction/development/upgrading/4811.mdx index 26040d6cbee7..c641ae921253 100644 --- a/document/content/docs/introduction/development/upgrading/4811.mdx +++ b/document/content/docs/introduction/development/upgrading/4811.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.11(商业版初始化)' -description: 'FastGPT V4.8.11 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 813 +title: V4.8.11(商业版初始化) +description: FastGPT V4.8.11 更新说明 --- ## 更新指南 diff --git a/document/content/docs/introduction/development/upgrading/4812.mdx b/document/content/docs/introduction/development/upgrading/4812.mdx index 2a6db83b046e..bef935ccb7ae 100644 --- a/document/content/docs/introduction/development/upgrading/4812.mdx +++ b/document/content/docs/introduction/development/upgrading/4812.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.12(包含升级脚本)' -description: 'FastGPT V4.8.12 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 812 +title: V4.8.12(包含升级脚本) +description: FastGPT V4.8.12 更新说明 --- ## 更新指南 diff --git a/document/content/docs/introduction/development/upgrading/4813.mdx b/document/content/docs/introduction/development/upgrading/4813.mdx index f4227df1da9f..f31f9774f2e8 100644 --- a/document/content/docs/introduction/development/upgrading/4813.mdx +++ b/document/content/docs/introduction/development/upgrading/4813.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.13' -description: 'FastGPT V4.8.13 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 811 +title: V4.8.13 +description: FastGPT V4.8.13 更新说明 --- ## 更新指南 diff --git a/document/content/docs/introduction/development/upgrading/4814.mdx b/document/content/docs/introduction/development/upgrading/4814.mdx index dda58e63c523..3a5a4ee096fb 100644 --- a/document/content/docs/introduction/development/upgrading/4814.mdx +++ b/document/content/docs/introduction/development/upgrading/4814.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.14' -description: 'FastGPT V4.8.14 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 810 +title: V4.8.14 +description: FastGPT V4.8.14 更新说明 --- ## 更新指南 diff --git a/document/content/docs/introduction/development/upgrading/4815.mdx b/document/content/docs/introduction/development/upgrading/4815.mdx index 2e967e06a34b..7134f70ceede 100644 --- a/document/content/docs/introduction/development/upgrading/4815.mdx +++ b/document/content/docs/introduction/development/upgrading/4815.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.15(包含升级脚本)' -description: 'FastGPT V4.8.15 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 809 +title: V4.8.15(包含升级脚本) +description: FastGPT V4.8.15 更新说明 --- ## 新功能预览 diff --git a/document/content/docs/introduction/development/upgrading/4816.mdx b/document/content/docs/introduction/development/upgrading/4816.mdx index d2f84bc35ebf..c963ace88eff 100644 --- a/document/content/docs/introduction/development/upgrading/4816.mdx +++ b/document/content/docs/introduction/development/upgrading/4816.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.16(更新配置文件)' -description: 'FastGPT V4.8.16 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 808 +title: V4.8.16(更新配置文件) +description: FastGPT V4.8.16 更新说明 --- ## 更新指南 @@ -70,4 +66,4 @@ weight: 808 18. 修复 - 工作流使用弹窗组件时,关闭弹窗后,有时候会出现页面偏移。 19. 修复 - 插件调试时,日志未保存插件输入参数。 20. 修复 - 部分模板市场模板 -21. 修复 - 设置NEXT_PUBLIC_BASE_URL时,图片文件读取URL不正确 \ No newline at end of file +21. 修复 - 设置NEXT_PUBLIC_BASE_URL时,图片文件读取URL不正确 diff --git a/document/content/docs/introduction/development/upgrading/4817.mdx b/document/content/docs/introduction/development/upgrading/4817.mdx index aa0ef558dff5..54c428bcfa50 100644 --- a/document/content/docs/introduction/development/upgrading/4817.mdx +++ b/document/content/docs/introduction/development/upgrading/4817.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.17(包含升级脚本)' -description: 'FastGPT V4.8.17 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 807 +title: V4.8.17(包含升级脚本) +description: FastGPT V4.8.17 更新说明 --- ## 更新指南 diff --git a/document/content/docs/introduction/development/upgrading/4818.mdx b/document/content/docs/introduction/development/upgrading/4818.mdx index 54c10482e841..76effa1b3717 100644 --- a/document/content/docs/introduction/development/upgrading/4818.mdx +++ b/document/content/docs/introduction/development/upgrading/4818.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.18(包含升级脚本)' -description: 'FastGPT V4.8.18 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 806 +title: V4.8.18(包含升级脚本) +description: FastGPT V4.8.18 更新说明 --- ## 更新指南 diff --git a/document/content/docs/introduction/development/upgrading/4819.mdx b/document/content/docs/introduction/development/upgrading/4819.mdx index 56264aa0ec33..e125c9c3a850 100644 --- a/document/content/docs/introduction/development/upgrading/4819.mdx +++ b/document/content/docs/introduction/development/upgrading/4819.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.19(包含升级脚本)' -description: 'FastGPT V4.8.19 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 805 +title: V4.8.19(包含升级脚本) +description: FastGPT V4.8.19 更新说明 --- ## 更新指南 @@ -43,4 +39,4 @@ curl --location --request POST 'https://{{host}}/api/admin/initv4819' \ 12. 修复 - HTTP 接口适配对象字符串解析。 13. 修复 - 通过 API 上传文件(localFile)接口,图片过期标记未清除。 14. 修复 - 工作流导入编排时,number input 类型无法覆盖。 -15. 修复 - 部分模型提供商 logo 无法正常显示。 \ No newline at end of file +15. 修复 - 部分模型提供商 logo 无法正常显示。 diff --git a/document/content/docs/introduction/development/upgrading/482.mdx b/document/content/docs/introduction/development/upgrading/482.mdx index f59ba31fbb19..84b2e658127f 100644 --- a/document/content/docs/introduction/development/upgrading/482.mdx +++ b/document/content/docs/introduction/development/upgrading/482.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.2' -description: 'FastGPT V4.8.2 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 822 +title: V4.8.2 +description: FastGPT V4.8.2 更新说明 --- ## Sealos 升级说明 diff --git a/document/content/docs/introduction/development/upgrading/4820.mdx b/document/content/docs/introduction/development/upgrading/4820.mdx index ef53abce7218..814b8c7af637 100644 --- a/document/content/docs/introduction/development/upgrading/4820.mdx +++ b/document/content/docs/introduction/development/upgrading/4820.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.20(包含升级脚本)' -description: 'FastGPT V4.8.20 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 804 +title: V4.8.20(包含升级脚本) +description: FastGPT V4.8.20 更新说明 --- ## 更新指南 diff --git a/document/content/docs/introduction/development/upgrading/4821.mdx b/document/content/docs/introduction/development/upgrading/4821.mdx index ab379d953bb2..60c5117e8a7d 100644 --- a/document/content/docs/introduction/development/upgrading/4821.mdx +++ b/document/content/docs/introduction/development/upgrading/4821.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.21' -description: 'FastGPT V4.8.21 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 803 +title: V4.8.21 +description: FastGPT V4.8.21 更新说明 --- ## 更新指南 @@ -36,4 +32,4 @@ weight: 803 14. 修复 - o1,o3 模型,在测试时候字段映射未生效导致报错。 15. 修复 - 公众号对话空指针异常。 16. 修复 - 多个音频/视频文件展示异常。 -17. 修复 - 分享链接鉴权报错后无限循环。 \ No newline at end of file +17. 修复 - 分享链接鉴权报错后无限循环。 diff --git a/document/content/docs/introduction/development/upgrading/4822.mdx b/document/content/docs/introduction/development/upgrading/4822.mdx index 4c1cb4df5363..aa386def438b 100644 --- a/document/content/docs/introduction/development/upgrading/4822.mdx +++ b/document/content/docs/introduction/development/upgrading/4822.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.22(包含升级脚本)' -description: 'FastGPT V4.8.22 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 802 +title: V4.8.22(包含升级脚本) +description: FastGPT V4.8.22 更新说明 --- ## 🌟更新指南 @@ -58,4 +54,4 @@ curl --location --request POST 'https://{{host}}/api/admin/initv4822' \ 9. 工作流基础节点无法升级。 10. 向量检索结果未去重。 11. 用户选择节点无法正常连线。 -12. 对话记录保存时,source 未正常记录。 \ No newline at end of file +12. 对话记录保存时,source 未正常记录。 diff --git a/document/content/docs/introduction/development/upgrading/4823.mdx b/document/content/docs/introduction/development/upgrading/4823.mdx index a1a18d581655..248784bfc5bd 100644 --- a/document/content/docs/introduction/development/upgrading/4823.mdx +++ b/document/content/docs/introduction/development/upgrading/4823.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.23' -description: 'FastGPT V4.8.23 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 801 +title: V4.8.23 +description: FastGPT V4.8.23 更新说明 --- ## 更新指南 @@ -51,4 +47,4 @@ curl --location --request POST 'https://{{host}}/api/admin/initv4823' \ 3. 离开团队时,未刷新成员列表。 4. PPTX 编码错误,导致解析失败。 5. 删除知识库单条数据时,全文索引未跟随删除。 -6. 修复 Mongo Dataset text 索引在查询数据时未生效。 \ No newline at end of file +6. 修复 Mongo Dataset text 索引在查询数据时未生效。 diff --git a/document/content/docs/introduction/development/upgrading/483.mdx b/document/content/docs/introduction/development/upgrading/483.mdx index 924b4db8eb33..6871aeee2358 100644 --- a/document/content/docs/introduction/development/upgrading/483.mdx +++ b/document/content/docs/introduction/development/upgrading/483.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.3' -description: 'FastGPT V4.8.3 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 821 +title: V4.8.3 +description: FastGPT V4.8.3 更新说明 --- ## 升级指南 @@ -19,4 +15,4 @@ weight: 821 2. 新增 - 给 chat 接口 empty answer 增加 log,便于排查模型问题。 3. 新增 - ifelse判断器,字符串支持正则。 4. 新增 - 代码运行支持 console.log 输出调试。 -5. 修复 - 变量更新在 Debug 模式下出错。 \ No newline at end of file +5. 修复 - 变量更新在 Debug 模式下出错。 diff --git a/document/content/docs/introduction/development/upgrading/484.mdx b/document/content/docs/introduction/development/upgrading/484.mdx index 531bb7fc1fe3..ab2e8b477a6a 100644 --- a/document/content/docs/introduction/development/upgrading/484.mdx +++ b/document/content/docs/introduction/development/upgrading/484.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.4(包含升级脚本)' -description: 'FastGPT V4.8.4 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 820 +title: V4.8.4(包含升级脚本) +description: FastGPT V4.8.4 更新说明 --- ## 升级指南 diff --git a/document/content/docs/introduction/development/upgrading/485.mdx b/document/content/docs/introduction/development/upgrading/485.mdx index a0c734c5de54..846a3a2ef788 100644 --- a/document/content/docs/introduction/development/upgrading/485.mdx +++ b/document/content/docs/introduction/development/upgrading/485.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.5(包含升级脚本)' -description: 'FastGPT V4.8.5 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 819 +title: V4.8.5(包含升级脚本) +description: FastGPT V4.8.5 更新说明 --- ## 升级指南 diff --git a/document/content/docs/introduction/development/upgrading/486.mdx b/document/content/docs/introduction/development/upgrading/486.mdx index 0e134f98b601..16371e99ac08 100644 --- a/document/content/docs/introduction/development/upgrading/486.mdx +++ b/document/content/docs/introduction/development/upgrading/486.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.6(包含升级脚本)' -description: 'FastGPT V4.8.6 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 818 +title: V4.8.6(包含升级脚本) +description: FastGPT V4.8.6 更新说明 --- ## 升级指南 diff --git a/document/content/docs/introduction/development/upgrading/487.mdx b/document/content/docs/introduction/development/upgrading/487.mdx index 81a08d73facf..572c0750bca4 100644 --- a/document/content/docs/introduction/development/upgrading/487.mdx +++ b/document/content/docs/introduction/development/upgrading/487.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.7' -description: 'FastGPT V4.8.7 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 817 +title: V4.8.7 +description: FastGPT V4.8.7 更新说明 --- ## 升级指南 diff --git a/document/content/docs/introduction/development/upgrading/488.mdx b/document/content/docs/introduction/development/upgrading/488.mdx index 596aac55d753..59224353ee7e 100644 --- a/document/content/docs/introduction/development/upgrading/488.mdx +++ b/document/content/docs/introduction/development/upgrading/488.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.8(包含升级脚本)' -description: 'FastGPT V4.8.8 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 816 +title: V4.8.8(包含升级脚本) +description: FastGPT V4.8.8 更新说明 --- ## 升级指南 diff --git a/document/content/docs/introduction/development/upgrading/489.mdx b/document/content/docs/introduction/development/upgrading/489.mdx index 858264e15fa7..b8ef8f397495 100644 --- a/document/content/docs/introduction/development/upgrading/489.mdx +++ b/document/content/docs/introduction/development/upgrading/489.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.8.9(需要初始化)' -description: 'FastGPT V4.8.9 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 815 +title: V4.8.9(需要初始化) +description: FastGPT V4.8.9 更新说明 --- ## 升级指南 diff --git a/document/content/docs/introduction/development/upgrading/490.mdx b/document/content/docs/introduction/development/upgrading/490.mdx index 7c4e86d04a0b..0619ce1bbca7 100644 --- a/document/content/docs/introduction/development/upgrading/490.mdx +++ b/document/content/docs/introduction/development/upgrading/490.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.9.0(包含升级脚本)' -description: 'FastGPT V4.9.0 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 800 +title: V4.9.0(包含升级脚本) +description: FastGPT V4.9.0 更新说明 --- diff --git a/document/content/docs/introduction/development/upgrading/491.mdx b/document/content/docs/introduction/development/upgrading/491.mdx index 5fd9a2afbec7..784e49f0f06d 100644 --- a/document/content/docs/introduction/development/upgrading/491.mdx +++ b/document/content/docs/introduction/development/upgrading/491.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.9.1' -description: 'FastGPT V4.9.1 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 799 +title: V4.9.1 +description: FastGPT V4.9.1 更新说明 --- ## 更新指南 diff --git a/document/content/docs/introduction/development/upgrading/4910.mdx b/document/content/docs/introduction/development/upgrading/4910.mdx index b659e306ce46..96b36ea8db20 100644 --- a/document/content/docs/introduction/development/upgrading/4910.mdx +++ b/document/content/docs/introduction/development/upgrading/4910.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.9.10' -description: 'FastGPT V4.9.10 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 790 +title: V4.9.10 +description: FastGPT V4.9.10 更新说明 --- ## 升级指南 @@ -47,4 +43,4 @@ weight: 790 4. 知识库 indexSize 参数未生效。 5. 工作流嵌套 2 层后,获取预览引用、上下文不正确。 6. xlsx 转成 Markdown 时候,前面会多出一个空格。 -7. 读取 Markdown 文件时,Base64 图片未进行额外抓换保存。 \ No newline at end of file +7. 读取 Markdown 文件时,Base64 图片未进行额外抓换保存。 diff --git a/document/content/docs/introduction/development/upgrading/4911.mdx b/document/content/docs/introduction/development/upgrading/4911.mdx index eac5a5eeac02..762e16758057 100644 --- a/document/content/docs/introduction/development/upgrading/4911.mdx +++ b/document/content/docs/introduction/development/upgrading/4911.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.9.11(包含升级脚本)' -description: 'FastGPT V4.9.11 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 789 +title: V4.9.11(包含升级脚本) +description: FastGPT V4.9.11 更新说明 --- ## 更新指南 @@ -55,4 +51,4 @@ curl --location --request POST 'https://{{host}}/api/admin/initv4911' \ 4. 自定义 PDF 解析,无法保存 base64 图片。 5. 非流请求,未进行 CITE 标记替换。 6. Python 沙盒存在隐藏风险。 -7. curl 导入插件缺失确认按键 \ No newline at end of file +7. curl 导入插件缺失确认按键 diff --git a/document/content/docs/introduction/development/upgrading/4912.mdx b/document/content/docs/introduction/development/upgrading/4912.mdx index 1d6a8d7d68cc..e9ed441e23eb 100644 --- a/document/content/docs/introduction/development/upgrading/4912.mdx +++ b/document/content/docs/introduction/development/upgrading/4912.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.9.12' -description: 'FastGPT V4.9.12 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 788 +title: V4.9.12 +description: FastGPT V4.9.12 更新说明 --- ## 更新指南 @@ -50,4 +46,4 @@ weight: 788 3. 登录页可能存在的 XSS 攻击。 4. 输入框语音输入时候会丢失文件列表的问题。 5. 知识库文档中图片 TTL 字段未清除,导致图片过期。 -6. MCP 工具存储时,未转义 int 类型数据。 \ No newline at end of file +6. MCP 工具存储时,未转义 int 类型数据。 diff --git a/document/content/docs/introduction/development/upgrading/4913.mdx b/document/content/docs/introduction/development/upgrading/4913.mdx index e2c875b4f2a4..67d6e388a97d 100644 --- a/document/content/docs/introduction/development/upgrading/4913.mdx +++ b/document/content/docs/introduction/development/upgrading/4913.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.9.13' -description: 'FastGPT V4.9.13 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 787 +title: V4.9.13 +description: FastGPT V4.9.13 更新说明 --- ## 更新指南 diff --git a/document/content/docs/introduction/development/upgrading/4914.mdx b/document/content/docs/introduction/development/upgrading/4914.mdx index 64d894567af3..1b3e915ebfb6 100644 --- a/document/content/docs/introduction/development/upgrading/4914.mdx +++ b/document/content/docs/introduction/development/upgrading/4914.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.9.14' -description: 'FastGPT V4.9.14 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 786 +title: V4.9.14 +description: FastGPT V4.9.14 更新说明 --- ## 更新指南 @@ -39,4 +35,4 @@ weight: 786 1. 知识库数据输入,识别 QA 模式错误。 2. 知识库标签条件冲突。 -3. 对话日志点赞点踩统计。 \ No newline at end of file +3. 对话日志点赞点踩统计。 diff --git a/document/content/docs/introduction/development/upgrading/492.mdx b/document/content/docs/introduction/development/upgrading/492.mdx index abcd044883d6..9c0f3a062f52 100644 --- a/document/content/docs/introduction/development/upgrading/492.mdx +++ b/document/content/docs/introduction/development/upgrading/492.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.9.2' -description: 'FastGPT V4.9.2 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 798 +title: V4.9.2 +description: FastGPT V4.9.2 更新说明 --- ## 更新指南 @@ -72,4 +68,4 @@ weight: 798 2. 渠道测试时,如果配置了模型自定义请求地址,会走自定义请求地址,而不是渠道请求地址。 3. 语音识别模型测试未启用的模型时,无法正常测试。 4. 管理员配置系统插件时,如果插件包含其他系统应用,无法正常鉴权。 -5. 移除 TTS 自定义请求地址时,必须需要填 requestAuth 字段。 \ No newline at end of file +5. 移除 TTS 自定义请求地址时,必须需要填 requestAuth 字段。 diff --git a/document/content/docs/introduction/development/upgrading/493.mdx b/document/content/docs/introduction/development/upgrading/493.mdx index 5dcefc3cc295..487d5d86a2b2 100644 --- a/document/content/docs/introduction/development/upgrading/493.mdx +++ b/document/content/docs/introduction/development/upgrading/493.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.9.3' -description: 'FastGPT V4.9.3 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 797 +title: V4.9.3 +description: FastGPT V4.9.3 更新说明 --- ## 更新指南 diff --git a/document/content/docs/introduction/development/upgrading/494.mdx b/document/content/docs/introduction/development/upgrading/494.mdx index 5e5f82d95418..9f9860d28dd1 100644 --- a/document/content/docs/introduction/development/upgrading/494.mdx +++ b/document/content/docs/introduction/development/upgrading/494.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.9.4' -description: 'FastGPT V4.9.4 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 796 +title: V4.9.4 +description: FastGPT V4.9.4 更新说明 --- ## 升级指南 @@ -63,4 +59,4 @@ curl --location --request POST 'https://{{host}}/api/admin/initv494' \ 1. 搜索应用/知识库时,无法点击目录进入下一层。 2. 重新训练时,参数未成功初始化。 -3. package/service 部分请求在多 app 中不一致。 \ No newline at end of file +3. package/service 部分请求在多 app 中不一致。 diff --git a/document/content/docs/introduction/development/upgrading/495.mdx b/document/content/docs/introduction/development/upgrading/495.mdx index a8f1f5c70308..d75eb6e1d923 100644 --- a/document/content/docs/introduction/development/upgrading/495.mdx +++ b/document/content/docs/introduction/development/upgrading/495.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.9.5' -description: 'FastGPT V4.9.5 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 795 +title: V4.9.5 +description: FastGPT V4.9.5 更新说明 --- ## 升级指南 @@ -36,4 +32,4 @@ weight: 795 2. 分享链接无法隐藏知识库检索结果。 3. IOS 低版本正则兼容问题。 4. 修复问答提取队列错误后,计数器未清零问题,导致问答提取队列失效。 -5. Debug 模式交互节点下一步可能造成死循环。 \ No newline at end of file +5. Debug 模式交互节点下一步可能造成死循环。 diff --git a/document/content/docs/introduction/development/upgrading/496.mdx b/document/content/docs/introduction/development/upgrading/496.mdx index 59171af5a7aa..3d4f8829eba0 100644 --- a/document/content/docs/introduction/development/upgrading/496.mdx +++ b/document/content/docs/introduction/development/upgrading/496.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.9.6' -description: 'FastGPT V4.9.6 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 794 +title: V4.9.6 +description: FastGPT V4.9.6 更新说明 --- ## 🚀 新增内容 diff --git a/document/content/docs/introduction/development/upgrading/497.mdx b/document/content/docs/introduction/development/upgrading/497.mdx index c0b1d13e1280..89119d339012 100644 --- a/document/content/docs/introduction/development/upgrading/497.mdx +++ b/document/content/docs/introduction/development/upgrading/497.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.9.7' -description: 'FastGPT V4.9.7 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 793 +title: V4.9.7 +description: FastGPT V4.9.7 更新说明 --- ## 升级指南 diff --git a/document/content/docs/introduction/development/upgrading/498.mdx b/document/content/docs/introduction/development/upgrading/498.mdx index 21a77af870fe..4fb99884e941 100644 --- a/document/content/docs/introduction/development/upgrading/498.mdx +++ b/document/content/docs/introduction/development/upgrading/498.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.9.8' -description: 'FastGPT V4.9.8 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 792 +title: V4.9.8 +description: FastGPT V4.9.8 更新说明 --- ## 升级指南 diff --git a/document/content/docs/introduction/development/upgrading/499.mdx b/document/content/docs/introduction/development/upgrading/499.mdx index d271cd480221..c206883ea02c 100644 --- a/document/content/docs/introduction/development/upgrading/499.mdx +++ b/document/content/docs/introduction/development/upgrading/499.mdx @@ -1,10 +1,6 @@ --- -title: 'V4.9.9' -description: 'FastGPT V4.9.9 更新说明' -icon: 'upgrade' -draft: false -toc: true -weight: 791 +title: V4.9.9 +description: FastGPT V4.9.9 更新说明 --- ## 升级指南 diff --git a/document/content/docs/introduction/development/upgrading/intro.mdx b/document/content/docs/introduction/development/upgrading/intro.mdx index f72b9d8fba8c..b1325583e75d 100644 --- a/document/content/docs/introduction/development/upgrading/intro.mdx +++ b/document/content/docs/introduction/development/upgrading/intro.mdx @@ -1,10 +1,6 @@ --- -title: '升级说明' -description: 'FastGPT 升级说明' -icon: 'upgrade' -draft: false -toc: true -weight: 751 +title: 升级说明 +description: FastGPT 升级说明 --- FastGPT 升级包括两个步骤: diff --git a/document/content/docs/introduction/guide/DialogBoxes/htmlRendering.mdx b/document/content/docs/introduction/guide/DialogBoxes/htmlRendering.mdx index 4d0484522478..957758f42a9e 100644 --- a/document/content/docs/introduction/guide/DialogBoxes/htmlRendering.mdx +++ b/document/content/docs/introduction/guide/DialogBoxes/htmlRendering.mdx @@ -1,10 +1,6 @@ --- -title: "对话框与HTML渲染" -description: "如何在FastGPT中通过Markdown嵌入HTML代码块,并提供全屏、源代码切换等交互功能" -icon: "group" -draft: false -toc: true -weight: 470 +title: 对话框与HTML渲染 +description: 如何在FastGPT中通过Markdown嵌入HTML代码块,并提供全屏、源代码切换等交互功能 --- | 源码模式 | 预览模式 | 全屏模式 | @@ -54,4 +50,4 @@ weight: 470 -``` \ No newline at end of file +``` diff --git a/document/content/docs/introduction/guide/DialogBoxes/quoteList.mdx b/document/content/docs/introduction/guide/DialogBoxes/quoteList.mdx index 63d5f861ac22..046eb88e6f04 100644 --- a/document/content/docs/introduction/guide/DialogBoxes/quoteList.mdx +++ b/document/content/docs/introduction/guide/DialogBoxes/quoteList.mdx @@ -1,10 +1,6 @@ --- -title: '知识库引用分块阅读器' -description: 'FastGPT 分块阅读器功能介绍' -icon: 'description' -draft: false -toc: true -weight: 480 +title: 知识库引用分块阅读器 +description: FastGPT 分块阅读器功能介绍 --- 在企业 AI 应用落地过程中,文档知识引用的精确性和透明度一直是用户关注的焦点。FastGPT 4.9.1 版本带来的知识库分块阅读器,巧妙解决了这一痛点,让 AI 引用不再是"黑盒"。 diff --git a/document/content/docs/introduction/guide/admin/sso.mdx b/document/content/docs/introduction/guide/admin/sso.mdx index 00e52d8a7454..65fc6656d5bd 100644 --- a/document/content/docs/introduction/guide/admin/sso.mdx +++ b/document/content/docs/introduction/guide/admin/sso.mdx @@ -1,10 +1,6 @@ --- -title: 'SSO & 外部成员同步' -description: 'FastGPT 外部成员系统接入设计与配置' -icon: '' -draft: false -toc: true -weight: 707 +title: SSO & 外部成员同步 +description: FastGPT 外部成员系统接入设计与配置 --- import { Alert } from '@/components/docs/Alert'; diff --git a/document/content/docs/introduction/guide/admin/teamMode.mdx b/document/content/docs/introduction/guide/admin/teamMode.mdx index 0acb786f4fb1..74950128b687 100644 --- a/document/content/docs/introduction/guide/admin/teamMode.mdx +++ b/document/content/docs/introduction/guide/admin/teamMode.mdx @@ -1,10 +1,6 @@ --- -title: '团队模式说明文档' -description: 'FastGPT 团队模式说明文档' -icon: '' -draft: false -toc: true -weight: 707 +title: 团队模式说明文档 +description: FastGPT 团队模式说明文档 --- ## 介绍 diff --git a/document/content/docs/introduction/guide/course/ai_settings.mdx b/document/content/docs/introduction/guide/course/ai_settings.mdx index 70a4d73bb5d6..308826e201c4 100644 --- a/document/content/docs/introduction/guide/course/ai_settings.mdx +++ b/document/content/docs/introduction/guide/course/ai_settings.mdx @@ -1,10 +1,6 @@ --- -title: "AI 相关参数配置说明" -description: "FastGPT AI 相关参数配置说明" -icon: "sign_language" -draft: false -toc: true -weight: 104 +title: AI 相关参数配置说明 +description: FastGPT AI 相关参数配置说明 --- import { Alert } from '@/components/docs/Alert'; diff --git a/document/content/docs/introduction/guide/course/chat_input_guide.mdx b/document/content/docs/introduction/guide/course/chat_input_guide.mdx index 155cdfdb3a1e..e0c73cda127f 100644 --- a/document/content/docs/introduction/guide/course/chat_input_guide.mdx +++ b/document/content/docs/introduction/guide/course/chat_input_guide.mdx @@ -1,10 +1,6 @@ --- -title: "对话问题引导" -description: "FastGPT 对话问题引导" -icon: "code" -draft: false -toc: true -weight: 106 +title: 对话问题引导 +description: FastGPT 对话问题引导 --- ![](/imgs/questionGuide.png) @@ -51,4 +47,4 @@ data是一个数组,包含了搜索到的问题,最多只需要返回5个问 **参数说明:** - appId - 应用ID -- searchKey - 搜索关键字 \ No newline at end of file +- searchKey - 搜索关键字 diff --git a/document/content/docs/introduction/guide/course/collection_tags.mdx b/document/content/docs/introduction/guide/course/collection_tags.mdx index 12a580a98cb1..d4c11b72cc0e 100644 --- a/document/content/docs/introduction/guide/course/collection_tags.mdx +++ b/document/content/docs/introduction/guide/course/collection_tags.mdx @@ -1,10 +1,6 @@ --- -title: "知识库集合标签" -description: "FastGPT 知识库集合标签使用说明" -icon: "developer_guide" -draft: false -toc: true -weight: 109 +title: 知识库集合标签 +description: FastGPT 知识库集合标签使用说明 --- 知识库集合标签是 FastGPT 商业版特有功能。它允许你对知识库中的数据集合添加标签进行分类,更高效地管理知识库数据。 diff --git a/document/content/docs/introduction/guide/course/fileInput.mdx b/document/content/docs/introduction/guide/course/fileInput.mdx index 5eb88b33a132..7dbd280e9113 100644 --- a/document/content/docs/introduction/guide/course/fileInput.mdx +++ b/document/content/docs/introduction/guide/course/fileInput.mdx @@ -1,10 +1,6 @@ --- -title: '文件输入功能介绍' -description: 'FastGPT 文件输入功能介绍' -icon: 'description' -draft: false -toc: true -weight: 110 +title: 文件输入功能介绍 +description: FastGPT 文件输入功能介绍 --- 从 4.8.9 版本起,FastGPT 支持在`简易模式`和`工作流`中,配置用户上传文件、图片功能。下面先简单介绍下如何使用文件输入功能,最后是介绍下文件解析的工作原理。 @@ -110,4 +106,4 @@ ${content} 4. AI 对话:支持直接选择文档引用,不需要进过文档解析节点。会自动解析历史记录中的文件。 5. 插件单独运行:不再支持全局文件;插件输入支持配置文件类型,可以取代全局文件上传。 6. **工作流调用插件:不再自动传递工作流上传的文件到插件,需要手动给插件输入指定变量。** -7. **工作流调用工作流:不再自动传递工作流上传的文件到子工作流,可以手动选择需要传递的文件链接。** \ No newline at end of file +7. **工作流调用工作流:不再自动传递工作流上传的文件到子工作流,可以手动选择需要传递的文件链接。** diff --git a/document/content/docs/introduction/guide/course/quick-start.mdx b/document/content/docs/introduction/guide/course/quick-start.mdx index 2cb306d90e14..535f42ca914b 100644 --- a/document/content/docs/introduction/guide/course/quick-start.mdx +++ b/document/content/docs/introduction/guide/course/quick-start.mdx @@ -1,10 +1,6 @@ --- -title: '快速上手' -description: '快速体验 FastGPT 基础功能' -icon: 'rocket_launch' -draft: false -toc: true -weight: 102 +title: 快速上手 +description: 快速体验 FastGPT 基础功能 --- 更多使用技巧,[查看视频教程](https://www.bilibili.com/video/BV1sH4y1T7s9) diff --git a/document/content/docs/introduction/guide/dashboard/basic-mode.mdx b/document/content/docs/introduction/guide/dashboard/basic-mode.mdx index 207190a36c37..9f106d4e98ba 100644 --- a/document/content/docs/introduction/guide/dashboard/basic-mode.mdx +++ b/document/content/docs/introduction/guide/dashboard/basic-mode.mdx @@ -1,9 +1,5 @@ --- -weight: 225 -title: '简易模式' -description: '快速了解 FastGPT 工作台的简易模式' -icon: 'speed' -draft: false -images: [] +title: 简易模式 +description: 快速了解 FastGPT 工作台的简易模式 --- diff --git a/document/content/docs/introduction/guide/dashboard/gapier.mdx b/document/content/docs/introduction/guide/dashboard/gapier.mdx index 44469130b033..8ea773317a5d 100644 --- a/document/content/docs/introduction/guide/dashboard/gapier.mdx +++ b/document/content/docs/introduction/guide/dashboard/gapier.mdx @@ -1,10 +1,6 @@ --- -title: "使用 Gapier 快速导入Agent工具" -description: "FastGPT 使用 Gapier 快速导入Agent工具" -icon: "build" -draft: false -toc: true -weight: 280 +title: 使用 Gapier 快速导入Agent工具 +description: FastGPT 使用 Gapier 快速导入Agent工具 --- FastGPT V4.7版本加入了工具调用,可以兼容 GPTs 的 Actions。这意味着,你可以直接导入兼容 GPTs 的 Agent 工具。 diff --git a/document/content/docs/introduction/guide/dashboard/intro.mdx b/document/content/docs/introduction/guide/dashboard/intro.mdx index f60430970eac..0389f899c850 100644 --- a/document/content/docs/introduction/guide/dashboard/intro.mdx +++ b/document/content/docs/introduction/guide/dashboard/intro.mdx @@ -1,10 +1,6 @@ --- -title: "工作流&插件" -description: "快速了解 FastGPT 工作流和插件的使用" -icon: "extension" -draft: false -toc: true -weight: 226 +title: 工作流&插件 +description: 快速了解 FastGPT 工作流和插件的使用 --- FastGPT 从 V4.0 版本开始采用新的交互方式来构建 AI 应用。使用了 Flow 节点编排(工作流)的方式来实现复杂工作流,提高可玩性和扩展性。但同时也提高了上手的门槛,有一定开发背景的用户使用起来会比较容易。 diff --git a/document/content/docs/introduction/guide/dashboard/mcp_server.mdx b/document/content/docs/introduction/guide/dashboard/mcp_server.mdx index 79cb82af8946..e986b0825070 100644 --- a/document/content/docs/introduction/guide/dashboard/mcp_server.mdx +++ b/document/content/docs/introduction/guide/dashboard/mcp_server.mdx @@ -1,10 +1,6 @@ --- -title: "MCP 服务" -description: "快速了解 FastGPT MCP server" -icon: "extension" -draft: false -toc: true -weight: 260 +title: MCP 服务 +description: 快速了解 FastGPT MCP server --- ## MCP server 介绍 diff --git a/document/content/docs/introduction/guide/dashboard/mcp_tools.mdx b/document/content/docs/introduction/guide/dashboard/mcp_tools.mdx index c19d26b9f16a..a2768285d84c 100644 --- a/document/content/docs/introduction/guide/dashboard/mcp_tools.mdx +++ b/document/content/docs/introduction/guide/dashboard/mcp_tools.mdx @@ -1,10 +1,6 @@ --- -title: "MCP 工具集" -description: "快速了解 MCP 工具接入 FastGPT" -icon: "extension" -draft: false -toc: true -weight: 260 +title: MCP 工具集 +description: 快速了解 MCP 工具接入 FastGPT --- FastGPT v4.9.6 版本开始,新增了 MCP 工具集 这种新的应用类型,允许传入一个 MCP 的 SSE URL 来批量创建可被模型轻松调用的 MCP 工具,下面就来看下如何创建 MCP 工具并且让 AI 调用 diff --git a/document/content/docs/introduction/guide/dashboard/workflow/ai_chat.mdx b/document/content/docs/introduction/guide/dashboard/workflow/ai_chat.mdx index a1bf57f99309..608d7f3b29bb 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/ai_chat.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/ai_chat.mdx @@ -1,10 +1,6 @@ --- -title: "AI 对话" -description: "FastGPT AI 对话模块介绍" -icon: "chat" -draft: false -toc: true -weight: 232 +title: AI 对话 +description: FastGPT AI 对话模块介绍 --- import { Alert } from '@/components/docs/Alert'; @@ -33,4 +29,4 @@ import { Alert } from '@/components/docs/Alert'; 具体配置参数介绍可以参考: [AI参数配置说明](/docs/guide/course/ai_settings/) - \ No newline at end of file +
diff --git a/document/content/docs/introduction/guide/dashboard/workflow/content_extract.mdx b/document/content/docs/introduction/guide/dashboard/workflow/content_extract.mdx index 7e4208d5cc97..731960f7d5bb 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/content_extract.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/content_extract.mdx @@ -1,10 +1,6 @@ --- -title: "文本内容提取" -description: "FastGPT 内容提取模块介绍" -icon: "content_paste_go" -draft: false -toc: true -weight: 240 +title: 文本内容提取 +description: FastGPT 内容提取模块介绍 --- ## 特点 @@ -54,4 +50,4 @@ weight: 240 ## 输出介绍 - **完整提取结果**: 一个 JSON 字符串,包含所有字段的提取结果。 -- **目标字段提取结果**:类型均为字符串。 \ No newline at end of file +- **目标字段提取结果**:类型均为字符串。 diff --git a/document/content/docs/introduction/guide/dashboard/workflow/coreferenceResolution.mdx b/document/content/docs/introduction/guide/dashboard/workflow/coreferenceResolution.mdx index 108f54c3a2b7..c000a25451a1 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/coreferenceResolution.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/coreferenceResolution.mdx @@ -1,10 +1,6 @@ --- -title: "问题优化" -description: "问题优化模块介绍和使用" -icon: "input" -draft: false -toc: true -weight: 264 +title: 问题优化 +description: 问题优化模块介绍和使用 --- ## 特点 @@ -36,4 +32,4 @@ weight: 264 ## 示例 -- [接入谷歌搜索](/docs/use-cases/app-cases/google_search/) \ No newline at end of file +- [接入谷歌搜索](/docs/use-cases/app-cases/google_search/) diff --git a/document/content/docs/introduction/guide/dashboard/workflow/custom_feedback.mdx b/document/content/docs/introduction/guide/dashboard/workflow/custom_feedback.mdx index cec0bbf04289..ad22d367a8b0 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/custom_feedback.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/custom_feedback.mdx @@ -1,10 +1,6 @@ --- -title: "自定义反馈" -description: "自定义反馈模块介绍" -icon: "feedback" -draft: false -toc: true -weight: 268 +title: 自定义反馈 +description: 自定义反馈模块介绍 --- 该模块为临时模块,后续会针对该模块进行更全面的设计。 @@ -32,4 +28,4 @@ weight: 268 ## 作用 -自定义反馈模块的功能类似于程序开发的`埋点`,便于你观测的对话中的数据。 \ No newline at end of file +自定义反馈模块的功能类似于程序开发的`埋点`,便于你观测的对话中的数据。 diff --git a/document/content/docs/introduction/guide/dashboard/workflow/dataset_search.mdx b/document/content/docs/introduction/guide/dashboard/workflow/dataset_search.mdx index 214e13b79d0e..a17e126b0f2f 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/dataset_search.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/dataset_search.mdx @@ -1,10 +1,6 @@ --- -title: '知识库搜索' -description: 'FastGPT AI 知识库搜索模块介绍' -icon: 'chat' -draft: false -toc: true -weight: 234 +title: 知识库搜索 +description: FastGPT AI 知识库搜索模块介绍 --- 知识库搜索具体参数说明,以及内部逻辑请移步:[FastGPT知识库搜索方案](/docs/guide/knowledge_base/rag/) diff --git a/document/content/docs/introduction/guide/dashboard/workflow/document_parsing.mdx b/document/content/docs/introduction/guide/dashboard/workflow/document_parsing.mdx index ac14c1c300d4..f99be39527d7 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/document_parsing.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/document_parsing.mdx @@ -1,10 +1,6 @@ --- -title: "文档解析" -description: "FastGPT 文档解析模块介绍" -icon: "document_analysis" -draft: false -toc: true -weight: 250 +title: 文档解析 +description: FastGPT 文档解析模块介绍 --- | | | @@ -15,4 +11,4 @@ weight: 250 ## 功能 -## 作用 \ No newline at end of file +## 作用 diff --git a/document/content/docs/introduction/guide/dashboard/workflow/form_input.mdx b/document/content/docs/introduction/guide/dashboard/workflow/form_input.mdx index 67c221a057fd..9aa6bc579074 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/form_input.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/form_input.mdx @@ -1,10 +1,6 @@ --- -title: "表单输入" -description: "FastGPT 表单输入模块介绍" -icon: "form_input" -draft: false -toc: true -weight: 244 +title: 表单输入 +description: FastGPT 表单输入模块介绍 --- ## 特点 @@ -29,4 +25,4 @@ weight: 244 ## 作用 -能够精准收集需要的用户信息,再根据用户信息进行后续操作 \ No newline at end of file +能够精准收集需要的用户信息,再根据用户信息进行后续操作 diff --git a/document/content/docs/introduction/guide/dashboard/workflow/http.mdx b/document/content/docs/introduction/guide/dashboard/workflow/http.mdx index ad1d92f97359..624350dec418 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/http.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/http.mdx @@ -1,10 +1,6 @@ --- -title: "HTTP 请求" -description: "FastGPT HTTP 模块介绍" -icon: "http" -draft: false -toc: true -weight: 252 +title: HTTP 请求 +description: FastGPT HTTP 模块介绍 --- import { Alert } from '@/components/docs/Alert'; diff --git a/document/content/docs/introduction/guide/dashboard/workflow/knowledge_base_search_merge.mdx b/document/content/docs/introduction/guide/dashboard/workflow/knowledge_base_search_merge.mdx index eafccd76990a..720349816f9c 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/knowledge_base_search_merge.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/knowledge_base_search_merge.mdx @@ -1,10 +1,6 @@ --- -title: "知识库搜索引用合并" -description: "FastGPT 知识库搜索引用合并模块介绍" -icon: "knowledge_merge" -draft: false -toc: true -weight: 262 +title: 知识库搜索引用合并 +description: FastGPT 知识库搜索引用合并模块介绍 --- @@ -26,4 +22,4 @@ AI对话只能接收一个知识库引用内容。因此,如果调用了多个 ## 可用例子: -1. 经过问题分类后对不同知识库进行检索,然后统一给一个 AI 进行回答,此时可以用到合并,不需要每个分支都添加一个 AI 对话。 \ No newline at end of file +1. 经过问题分类后对不同知识库进行检索,然后统一给一个 AI 进行回答,此时可以用到合并,不需要每个分支都添加一个 AI 对话。 diff --git a/document/content/docs/introduction/guide/dashboard/workflow/laf.mdx b/document/content/docs/introduction/guide/dashboard/workflow/laf.mdx index 71b2d622e55e..10f0d5535618 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/laf.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/laf.mdx @@ -1,10 +1,6 @@ --- -title: "Laf 函数调用" -description: "FastGPT Laf 函数调用模块介绍" -icon: "code" -draft: false -toc: true -weight: 266 +title: Laf 函数调用 +description: FastGPT Laf 函数调用模块介绍 --- @@ -95,4 +91,4 @@ export default async function (ctx: FunctionContext): Promise { ### 调用报错 -先在 laf 中调试函数,看是否正常调用。可以通过 console.log,打印入参,将入参放在 Laf 测试页面的 Body 中进行测试。 \ No newline at end of file +先在 laf 中调试函数,看是否正常调用。可以通过 console.log,打印入参,将入参放在 Laf 测试页面的 Body 中进行测试。 diff --git a/document/content/docs/introduction/guide/dashboard/workflow/loop.mdx b/document/content/docs/introduction/guide/dashboard/workflow/loop.mdx index 7468e2f18cc8..0378e2ff4f25 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/loop.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/loop.mdx @@ -1,10 +1,6 @@ --- -title: "批量运行" -description: "FastGPT 批量运行节点介绍和使用" -icon: "input" -draft: false -toc: true -weight: 260 +title: 批量运行 +description: FastGPT 批量运行节点介绍和使用 --- ## 节点概述 diff --git a/document/content/docs/introduction/guide/dashboard/workflow/question_classify.mdx b/document/content/docs/introduction/guide/dashboard/workflow/question_classify.mdx index 54db28b1e5f9..721ab008e878 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/question_classify.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/question_classify.mdx @@ -1,10 +1,6 @@ --- -title: "问题分类" -description: "FastGPT 问题分类模块介绍" -icon: "quiz" -draft: false -toc: true -weight: 238 +title: 问题分类 +description: FastGPT 问题分类模块介绍 --- ## 特点 @@ -75,4 +71,4 @@ const agentFunction = { }; ``` -上面的 Function 必然会返回 `type = abc,vvv,aaa` 其中一个值,从而实现分类判断。 \ No newline at end of file +上面的 Function 必然会返回 `type = abc,vvv,aaa` 其中一个值,从而实现分类判断。 diff --git a/document/content/docs/introduction/guide/dashboard/workflow/reply.mdx b/document/content/docs/introduction/guide/dashboard/workflow/reply.mdx index e7a4685f3220..9209fb499cd1 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/reply.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/reply.mdx @@ -1,10 +1,6 @@ --- -title: "指定回复" -description: "FastGPT 指定回复模块介绍" -icon: "reply" -draft: false -toc: true -weight: 248 +title: 指定回复 +description: FastGPT 指定回复模块介绍 --- ## 特点 diff --git a/document/content/docs/introduction/guide/dashboard/workflow/sandbox.mdx b/document/content/docs/introduction/guide/dashboard/workflow/sandbox.mdx index 61b5eb3ea3ff..e78a4be3d363 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/sandbox.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/sandbox.mdx @@ -1,10 +1,6 @@ --- -title: "代码运行" -description: "FastGPT 代码运行节点介绍" -icon: "input" -draft: false -toc: true -weight: 258 +title: 代码运行 +description: FastGPT 代码运行节点介绍 --- ![alt text](/imgs/image.png) @@ -98,4 +94,4 @@ function main({secret}){ sign,timestamp } } -``` \ No newline at end of file +``` diff --git a/document/content/docs/introduction/guide/dashboard/workflow/text_editor.mdx b/document/content/docs/introduction/guide/dashboard/workflow/text_editor.mdx index f7bd8f7a4456..efde8e4af208 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/text_editor.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/text_editor.mdx @@ -1,10 +1,6 @@ --- -title: "文本拼接" -description: "FastGPT 文本加工模块介绍" -icon: "input" -draft: false -toc: true -weight: 246 +title: 文本拼接 +description: FastGPT 文本加工模块介绍 --- ## 特点 @@ -29,4 +25,4 @@ weight: 246 ## 示例 -- [接入谷歌搜索](/docs/use-cases/app-cases/google_search/) \ No newline at end of file +- [接入谷歌搜索](/docs/use-cases/app-cases/google_search/) diff --git a/document/content/docs/introduction/guide/dashboard/workflow/tfswitch.mdx b/document/content/docs/introduction/guide/dashboard/workflow/tfswitch.mdx index 2255a0506534..a43fa5cf6159 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/tfswitch.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/tfswitch.mdx @@ -1,10 +1,6 @@ --- -title: "判断器" -description: "FastGPT 判断器模块介绍" -icon: "input" -draft: false -toc: true -weight: 254 +title: 判断器 +description: FastGPT 判断器模块介绍 --- ## 特点 diff --git a/document/content/docs/introduction/guide/dashboard/workflow/tool.mdx b/document/content/docs/introduction/guide/dashboard/workflow/tool.mdx index 604e91af12ab..d489bc4ef6bd 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/tool.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/tool.mdx @@ -1,10 +1,6 @@ --- -title: "工具调用&终止" -description: "FastGPT 工具调用模块介绍" -icon: "build" -draft: false -toc: true -weight: 236 +title: 工具调用&终止 +description: FastGPT 工具调用模块介绍 --- @@ -82,4 +78,4 @@ weight: 236 ### **相关示例** - [谷歌搜索](https://doc.fastgpt.in/docs/use-cases/app-cases/google_search/) -- [发送飞书webhook](https://doc.fastgpt.in/docs/use-cases/app-cases/feishu_webhook/) \ No newline at end of file +- [发送飞书webhook](https://doc.fastgpt.in/docs/use-cases/app-cases/feishu_webhook/) diff --git a/document/content/docs/introduction/guide/dashboard/workflow/user-selection.mdx b/document/content/docs/introduction/guide/dashboard/workflow/user-selection.mdx index ef7a6490e082..36a6e6ff91a7 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/user-selection.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/user-selection.mdx @@ -1,10 +1,6 @@ --- -title: "用户选择" -description: "FastGPT 用户选择模块的使用说明" -icon: "user_check" -draft: false -toc: true -weight: 242 +title: 用户选择 +description: FastGPT 用户选择模块的使用说明 --- ## 特点 @@ -29,4 +25,4 @@ weight: 242 ## 作用 -基础的用法为提出需要用户做抉择的问题,然后根据用户的反馈设计不同的工作流流程 \ No newline at end of file +基础的用法为提出需要用户做抉择的问题,然后根据用户的反馈设计不同的工作流流程 diff --git a/document/content/docs/introduction/guide/dashboard/workflow/variable_update.mdx b/document/content/docs/introduction/guide/dashboard/workflow/variable_update.mdx index e0c0be108093..2f2953c3d933 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/variable_update.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/variable_update.mdx @@ -1,10 +1,6 @@ --- -title: "变量更新" -description: "FastGPT 变量更新模块介绍" -icon: "variable_update" -draft: false -toc: true -weight: 256 +title: 变量更新 +description: FastGPT 变量更新模块介绍 --- ## 特点 @@ -35,4 +31,4 @@ weight: 256 最基础的使用场景为 - 给一个「自定义变量」类型的全局变量赋值,从而实现全局变量无需用户输入 -- 更新「变量更新」节点前的工作流节点输出,在后续使用中,使用的节点输出值为新的输出 \ No newline at end of file +- 更新「变量更新」节点前的工作流节点输出,在后续使用中,使用的节点输出值为新的输出 diff --git a/document/content/docs/introduction/guide/knowledge_base/RAG.mdx b/document/content/docs/introduction/guide/knowledge_base/RAG.mdx index ad6d877f7a18..b5ddd71948cd 100644 --- a/document/content/docs/introduction/guide/knowledge_base/RAG.mdx +++ b/document/content/docs/introduction/guide/knowledge_base/RAG.mdx @@ -1,10 +1,6 @@ --- -title: '知识库基础原理介绍' -description: '本节详细介绍RAG模型的核心机制、应用场景及其在生成任务中的优势与局限性。' -icon: 'language' -draft: false -toc: true -weight: 402 +title: 知识库基础原理介绍 +description: 本节详细介绍RAG模型的核心机制、应用场景及其在生成任务中的优势与局限性。 --- [RAG文档](https://huggingface.co/docs/transformers/model_doc/rag) @@ -328,4 +324,4 @@ RAG还可以应用于多模态生成场景,如图像、音频和3D内容生成 在应用实践中,RAG模型虽然有着信息完整性、推理能力和跨领域适应性等显著优势,但也面临着数据质量、计算资源消耗和知识库更新等挑战。为进一步提升RAG的性能,提出了针对数据采集、内容分块、检索策略优化以及回答生成的全面改进措施,如引入知识图谱、优化用户反馈机制、实施高效去重算法等,以增强模型的适用性和效率。 -RAG在智能问答、信息检索与文本生成等领域展现了出色的应用潜力,并在不断发展的技术支持下进一步拓展至多模态生成和企业决策支持等场景。通过引入混合检索技术、知识图谱以及动态反馈机制,RAG能够更加灵活地应对复杂的用户需求,生成具有事实支撑和逻辑连贯性的回答。未来,RAG将通过增强模型透明性与可控性,进一步提升在专业领域中的可信度和实用性,为智能信息检索与内容生成提供更广泛的应用空间。 \ No newline at end of file +RAG在智能问答、信息检索与文本生成等领域展现了出色的应用潜力,并在不断发展的技术支持下进一步拓展至多模态生成和企业决策支持等场景。通过引入混合检索技术、知识图谱以及动态反馈机制,RAG能够更加灵活地应对复杂的用户需求,生成具有事实支撑和逻辑连贯性的回答。未来,RAG将通过增强模型透明性与可控性,进一步提升在专业领域中的可信度和实用性,为智能信息检索与内容生成提供更广泛的应用空间。 diff --git a/document/content/docs/introduction/guide/knowledge_base/api_dataset.mdx b/document/content/docs/introduction/guide/knowledge_base/api_dataset.mdx index b9e85219cae6..cff7df280f86 100644 --- a/document/content/docs/introduction/guide/knowledge_base/api_dataset.mdx +++ b/document/content/docs/introduction/guide/knowledge_base/api_dataset.mdx @@ -1,10 +1,6 @@ --- -title: 'API 文件库' -description: 'FastGPT API 文件库功能介绍和使用方式' -icon: 'language' -draft: false -toc: true -weight: 405 +title: API 文件库 +description: FastGPT API 文件库功能介绍和使用方式 --- import { Alert } from '@/components/docs/Alert'; diff --git a/document/content/docs/introduction/guide/knowledge_base/dataset_engine.mdx b/document/content/docs/introduction/guide/knowledge_base/dataset_engine.mdx index 969e31108d96..7c4a446b7d08 100644 --- a/document/content/docs/introduction/guide/knowledge_base/dataset_engine.mdx +++ b/document/content/docs/introduction/guide/knowledge_base/dataset_engine.mdx @@ -1,10 +1,8 @@ --- -title: '知识库搜索方案和参数' -description: '本节会详细介绍 FastGPT 知识库结构设计,理解其 QA 的存储格式和多向量映射,以便更好的构建知识库。同时会介绍每个搜索参数的功能。这篇介绍主要以使用为主,详细原理不多介绍。' -icon: 'language' -draft: false -toc: true -weight: 404 +title: 知识库搜索方案和参数 +description: + 本节会详细介绍 FastGPT 知识库结构设计,理解其 QA + 的存储格式和多向量映射,以便更好的构建知识库。同时会介绍每个搜索参数的功能。这篇介绍主要以使用为主,详细原理不多介绍。 --- ## 理解向量 diff --git a/document/content/docs/introduction/guide/knowledge_base/externalFile.mdx b/document/content/docs/introduction/guide/knowledge_base/externalFile.mdx index 413d2c351efc..11979f120929 100644 --- a/document/content/docs/introduction/guide/knowledge_base/externalFile.mdx +++ b/document/content/docs/introduction/guide/knowledge_base/externalFile.mdx @@ -1,10 +1,6 @@ --- -title: '外部文件知识库' -description: 'FastGPT 外部文件知识库功能介绍和使用方式' -icon: 'language' -draft: false -toc: true -weight: 408 +title: 外部文件知识库 +description: FastGPT 外部文件知识库功能介绍和使用方式 --- 外部文件库是 FastGPT 商业版特有功能。它允许接入你现在的文件系统,无需将文件再导入一份到 FastGPT 中。 diff --git a/document/content/docs/introduction/guide/knowledge_base/lark_dataset.mdx b/document/content/docs/introduction/guide/knowledge_base/lark_dataset.mdx index 8631b0f0dbc8..a2ef2de7e4c3 100644 --- a/document/content/docs/introduction/guide/knowledge_base/lark_dataset.mdx +++ b/document/content/docs/introduction/guide/knowledge_base/lark_dataset.mdx @@ -1,10 +1,6 @@ --- -title: '飞书知识库' -description: 'FastGPT 飞书知识库功能介绍和使用方式' -icon: 'language' -draft: false -toc: true -weight: 405 +title: 飞书知识库 +description: FastGPT 飞书知识库功能介绍和使用方式 --- | | | @@ -57,4 +53,4 @@ FastGPT v4.8.16 版本开始,商业版用户支持飞书知识库导入,用 根据 3 和 5 获取到的 3 个参数,创建知识库,选择飞书文件库类型,然后填入对应的参数,点击创建。 -![alt text](/imgs/image-39.png) \ No newline at end of file +![alt text](/imgs/image-39.png) diff --git a/document/content/docs/introduction/guide/knowledge_base/template.mdx b/document/content/docs/introduction/guide/knowledge_base/template.mdx index ca54858597c4..2dffe7d4a81c 100644 --- a/document/content/docs/introduction/guide/knowledge_base/template.mdx +++ b/document/content/docs/introduction/guide/knowledge_base/template.mdx @@ -1,10 +1,6 @@ --- -title: '模板导入' -description: 'FastGPT 模板导入功能介绍和使用方式' -icon: 'language' -draft: false -toc: true -weight: 420 +title: 模板导入 +description: FastGPT 模板导入功能介绍和使用方式 --- ## 背景 @@ -114,4 +110,4 @@ Q: 如何验证导入是否成功? A: 导入成功后,你可以: - 在知识库中搜索导入的问题 - 通过对话测试回答的准确性 -- 查看知识库的数据统计 \ No newline at end of file +- 查看知识库的数据统计 diff --git a/document/content/docs/introduction/guide/knowledge_base/third_dataset.mdx b/document/content/docs/introduction/guide/knowledge_base/third_dataset.mdx index 5e277326c30c..fb80658a7020 100644 --- a/document/content/docs/introduction/guide/knowledge_base/third_dataset.mdx +++ b/document/content/docs/introduction/guide/knowledge_base/third_dataset.mdx @@ -1,10 +1,6 @@ --- -title: '第三方知识库开发' -description: '本节详细介绍如何在FastGPT上自己接入第三方知识库' -icon: 'language' -draft: false -toc: true -weight: 410 +title: 第三方知识库开发 +description: 本节详细介绍如何在FastGPT上自己接入第三方知识库 --- import { Alert } from '@/components/docs/Alert'; @@ -168,4 +164,4 @@ export type YuqueServer = { ## 提示 -建议知识库创建完成后,完整测试一遍知识库的功能,以确定有无漏洞,如果你的知识库添加有问题,且无法在文档找到对应的文件解决,一定是杂项没有添加完全,建议重复一次全局搜索`YuqueServer`和`yuqueServer`,检查是否有地方没有加上自己的类型。 \ No newline at end of file +建议知识库创建完成后,完整测试一遍知识库的功能,以确定有无漏洞,如果你的知识库添加有问题,且无法在文档找到对应的文件解决,一定是杂项没有添加完全,建议重复一次全局搜索`YuqueServer`和`yuqueServer`,检查是否有地方没有加上自己的类型。 diff --git a/document/content/docs/introduction/guide/knowledge_base/websync.mdx b/document/content/docs/introduction/guide/knowledge_base/websync.mdx index bd3c069f93e9..45c4153066ee 100644 --- a/document/content/docs/introduction/guide/knowledge_base/websync.mdx +++ b/document/content/docs/introduction/guide/knowledge_base/websync.mdx @@ -1,10 +1,6 @@ --- -title: 'Web 站点同步' -description: 'FastGPT Web 站点同步功能介绍和使用方式' -icon: 'language' -draft: false -toc: true -weight: 406 +title: Web 站点同步 +description: FastGPT Web 站点同步功能介绍和使用方式 --- ![](/imgs/webSync1.jpg) diff --git a/document/content/docs/introduction/guide/knowledge_base/yuque_dataset.mdx b/document/content/docs/introduction/guide/knowledge_base/yuque_dataset.mdx index 96b99026015e..a89b4824f2a7 100644 --- a/document/content/docs/introduction/guide/knowledge_base/yuque_dataset.mdx +++ b/document/content/docs/introduction/guide/knowledge_base/yuque_dataset.mdx @@ -1,10 +1,6 @@ --- -title: '语雀文件库' -description: 'FastGPT 语雀文件库功能介绍和使用方式' -icon: 'language' -draft: false -toc: true -weight: 405 +title: 语雀文件库 +description: FastGPT 语雀文件库功能介绍和使用方式 --- | | | @@ -39,4 +35,4 @@ FastGPT v4.8.16 版本开始,商业版用户支持语雀文件库导入,用 语雀知识库支持定时同步功能,每天会不定时的扫描一次,如果文档有更新,则会进行同步,也可以进行手动同步。 -![alt text](/imgs/image-38.png) \ No newline at end of file +![alt text](/imgs/image-38.png) diff --git a/document/content/docs/introduction/guide/plugins/bing_search_plugin.mdx b/document/content/docs/introduction/guide/plugins/bing_search_plugin.mdx index 25ae9521f880..ef8d164c508d 100644 --- a/document/content/docs/introduction/guide/plugins/bing_search_plugin.mdx +++ b/document/content/docs/introduction/guide/plugins/bing_search_plugin.mdx @@ -1,10 +1,6 @@ --- -title: "Bing 搜索插件填写说明" -description: "FastGPT Bing 搜索插件配置步骤详解" -icon: "bing_search" -draft: false -toc: true -weight: 306 +title: Bing 搜索插件填写说明 +description: FastGPT Bing 搜索插件配置步骤详解 --- 1. # 打开微软Azure官网,登陆账号 @@ -29,4 +25,4 @@ https://portal.azure.com/#create/Microsoft.BingSearch ![](/imgs/bing_search_plugin4.png) -![](/imgs/bing_search_plugin5.png) \ No newline at end of file +![](/imgs/bing_search_plugin5.png) diff --git a/document/content/docs/introduction/guide/plugins/dev_system_tool.mdx b/document/content/docs/introduction/guide/plugins/dev_system_tool.mdx index 3dadb6b0a80d..e82efcd10f02 100644 --- a/document/content/docs/introduction/guide/plugins/dev_system_tool.mdx +++ b/document/content/docs/introduction/guide/plugins/dev_system_tool.mdx @@ -1,10 +1,6 @@ --- -title: "如何开发系统工具" -description: "FastGPT 系统工具开发指南" -icon: "home_repair_service" -draft: false -toc: true -weight: 302 +title: 如何开发系统工具 +description: FastGPT 系统工具开发指南 --- ## 介绍 diff --git a/document/content/docs/introduction/guide/plugins/doc2x_plugin_guide.mdx b/document/content/docs/introduction/guide/plugins/doc2x_plugin_guide.mdx index e1e70570b72e..dbdf1ef80ef5 100644 --- a/document/content/docs/introduction/guide/plugins/doc2x_plugin_guide.mdx +++ b/document/content/docs/introduction/guide/plugins/doc2x_plugin_guide.mdx @@ -1,10 +1,6 @@ --- -title: "Doc2x 插件填写说明" -description: "如何配置和使用 Doc2x 插件" -icon: "doc_transform" -draft: false -toc: true -weight: 308 +title: Doc2x 插件填写说明 +description: 如何配置和使用 Doc2x 插件 --- 1. # 打开docx官网,创建账号,并复制 apikey @@ -23,4 +19,4 @@ https://doc2x.noedgeai.com/ **简易模式使用:** -![](/imgs/doc2x_plugin4.png) \ No newline at end of file +![](/imgs/doc2x_plugin4.png) diff --git a/document/content/docs/introduction/guide/plugins/google_search_plugin_guide.mdx b/document/content/docs/introduction/guide/plugins/google_search_plugin_guide.mdx index 432e2cab0703..d19ddcced60e 100644 --- a/document/content/docs/introduction/guide/plugins/google_search_plugin_guide.mdx +++ b/document/content/docs/introduction/guide/plugins/google_search_plugin_guide.mdx @@ -1,10 +1,6 @@ --- -title: "Google 搜索插件填写说明" -description: "FastGPT Google 搜索插件配置指南" -icon: "google_search" -draft: false -toc: true -weight: 304 +title: Google 搜索插件填写说明 +description: FastGPT Google 搜索插件配置指南 --- 1. # 创建Google Custom Search Engine @@ -29,4 +25,4 @@ https://developers.google.com/custom-search/v1/overview?hl=zh-cn 将搜索引擎ID填入cx字段,api key填入key字段 -![](/imgs/google_search_plugin4.png) \ No newline at end of file +![](/imgs/google_search_plugin4.png) diff --git a/document/content/docs/introduction/guide/plugins/how_to_submit_system_plugin.mdx b/document/content/docs/introduction/guide/plugins/how_to_submit_system_plugin.mdx index 0e85d1ff123f..d5dec6a5f3a3 100644 --- a/document/content/docs/introduction/guide/plugins/how_to_submit_system_plugin.mdx +++ b/document/content/docs/introduction/guide/plugins/how_to_submit_system_plugin.mdx @@ -1,10 +1,6 @@ --- -title: "如何提交系统插件" -description: "FastGPT 系统插件提交指南" -icon: "plugin_submission" -draft: false -toc: true -weight: 302 +title: 如何提交系统插件 +description: FastGPT 系统插件提交指南 --- > 如何向 FastGPT 社区提交系统插件 @@ -115,4 +111,4 @@ FastGPT 系统插件和用户工作台的插件效果是一致的,所以你需 参考上面 3 张图片,当 HTTP 节点的 URL 为系统插件注册的名字时,该请求不会以 HTTP 形式发送,而是会请求到 index.ts 文件中的 main 方法。出入参则对应了 body 和自定义输出的字段名。 -由于目前插件会默认插件输出均作为“工具调用”的结果,无法单独指定某些字段作为工具输出,所以,请避免插件的自定义输出携带大量说明字段。 \ No newline at end of file +由于目前插件会默认插件输出均作为“工具调用”的结果,无法单独指定某些字段作为工具输出,所以,请避免插件的自定义输出携带大量说明字段。 diff --git a/document/content/docs/introduction/guide/plugins/searxng_plugin_guide.mdx b/document/content/docs/introduction/guide/plugins/searxng_plugin_guide.mdx index 87c3d6468d17..b6c3596a5bb4 100644 --- a/document/content/docs/introduction/guide/plugins/searxng_plugin_guide.mdx +++ b/document/content/docs/introduction/guide/plugins/searxng_plugin_guide.mdx @@ -1,10 +1,6 @@ --- -title: "SearXNG 搜索插件配置与使用说明" -description: "FastGPT SearXNG 搜索插件配置指南" -icon: "search" -draft: false -toc: true -weight: 303 +title: SearXNG 搜索插件配置与使用说明 +description: FastGPT SearXNG 搜索插件配置指南 --- [SearXNG](https://github.com/searxng/searxng)是一款免费的互联网元搜索引擎,它汇总了来自各种搜索服务和数据库的结果。它不会跟踪或分析用户。用户可以自行部署它进行使用。本文介绍 Searxng 的部署以及接入 FastGPT 插件。 @@ -187,4 +183,4 @@ default_doi_resolver: 'oadoi.org' ### 无搜索结果 1. 先直接打开外网地址,测试是否可以正常搜索。 -2. 检查是否有超时的搜索引擎,通过 API 调用时不会返回结果。 \ No newline at end of file +2. 检查是否有超时的搜索引擎,通过 API 调用时不会返回结果。 diff --git a/document/content/docs/introduction/guide/team_permissions/invitation_link.mdx b/document/content/docs/introduction/guide/team_permissions/invitation_link.mdx index 84b385fb555a..a0554c99018b 100644 --- a/document/content/docs/introduction/guide/team_permissions/invitation_link.mdx +++ b/document/content/docs/introduction/guide/team_permissions/invitation_link.mdx @@ -1,10 +1,6 @@ --- -title: "邀请链接说明文档" -description: "如何使用邀请链接来邀请团队成员" -icon: "group" -draft: false -toc: true -weight: 451 +title: 邀请链接说明文档 +description: 如何使用邀请链接来邀请团队成员 --- v4.9.1 团队邀请成员将开始使用「邀请链接」的模式,弃用之前输入用户名进行添加的形式。 diff --git a/document/content/docs/introduction/guide/team_permissions/team_roles_permissions.mdx b/document/content/docs/introduction/guide/team_permissions/team_roles_permissions.mdx index 1ce26155bd0f..17b5e5afd521 100644 --- a/document/content/docs/introduction/guide/team_permissions/team_roles_permissions.mdx +++ b/document/content/docs/introduction/guide/team_permissions/team_roles_permissions.mdx @@ -1,10 +1,6 @@ --- -title: "团队&成员组&权限" -description: "如何管理 FastGPT 团队、成员组及权限设置" -icon: "group" -draft: false -toc: true -weight: 450 +title: 团队&成员组&权限 +description: 如何管理 FastGPT 团队、成员组及权限设置 --- # 团队 & 成员组 & 权限 diff --git a/document/content/docs/introduction/index.en.mdx b/document/content/docs/introduction/index.en.mdx index 8877012932e0..fa61d1ccdfc7 100644 --- a/document/content/docs/introduction/index.en.mdx +++ b/document/content/docs/introduction/index.en.mdx @@ -1,10 +1,6 @@ --- -title: '快速了解 FastGPT' -description: 'FastGPT 的能力与优势' -icon: 'rocket_launch' -draft: false -toc: true -weight: 0 +title: 快速了解 FastGPT +description: FastGPT 的能力与优势 --- import { Alert } from '@/components/docs/Alert'; diff --git a/document/content/docs/introduction/index.mdx b/document/content/docs/introduction/index.mdx index 28579cced166..fa61d1ccdfc7 100644 --- a/document/content/docs/introduction/index.mdx +++ b/document/content/docs/introduction/index.mdx @@ -1,10 +1,6 @@ --- -title: '快速了解 FastGPT' -description: 'FastGPT 的能力与优势' -icon: Album -draft: false -toc: true -weight: -10 +title: 快速了解 FastGPT +description: FastGPT 的能力与优势 --- import { Alert } from '@/components/docs/Alert'; diff --git a/document/content/docs/introduction/shopping_cart/intro.mdx b/document/content/docs/introduction/shopping_cart/intro.mdx index 35fe58bd0c46..fe5bc62b225f 100644 --- a/document/content/docs/introduction/shopping_cart/intro.mdx +++ b/document/content/docs/introduction/shopping_cart/intro.mdx @@ -1,10 +1,6 @@ --- -title: '商业版' -description: 'FastGPT 商业版相关说明' -icon: 'shopping_cart' -draft: false -toc: true -weight: 1104 +title: 商业版 +description: FastGPT 商业版相关说明 --- import { Alert } from '@/components/docs/Alert'; @@ -112,4 +108,4 @@ Sealos 云服务属于按量计费,下面是它的价格表: | | | | | ---- | ---- | ---- | -| ![alt text](/imgs/image-55.png) | ![alt text](/imgs/image-56.png) | ![alt text](/imgs/image-57.png) | \ No newline at end of file +| ![alt text](/imgs/image-55.png) | ![alt text](/imgs/image-56.png) | ![alt text](/imgs/image-57.png) | diff --git a/document/content/docs/introduction/shopping_cart/saas.mdx b/document/content/docs/introduction/shopping_cart/saas.mdx index b25199b1ccd6..228d0562f9f1 100644 --- a/document/content/docs/introduction/shopping_cart/saas.mdx +++ b/document/content/docs/introduction/shopping_cart/saas.mdx @@ -1,13 +1,9 @@ --- -title: '线上版定价' -description: 'FastGPT 线上版定价' -icon: 'currency_yen' -draft: false -toc: true -weight: 1102 +title: 线上版定价 +description: FastGPT 线上版定价 --- 线上版价格按套餐订阅模式,具体价格和计费请查看(请正确选择版本,账号不互通): - [海外版](https://cloud.tryfastgpt.ai/price) -- [国内版](https://cloud.fastgpt.cn/price) \ No newline at end of file +- [国内版](https://cloud.fastgpt.cn/price) diff --git a/document/content/docs/protocol/index.mdx b/document/content/docs/protocol/index.mdx index 5a7a56b0acd4..08aa21073103 100644 --- a/document/content/docs/protocol/index.mdx +++ b/document/content/docs/protocol/index.mdx @@ -1,9 +1,5 @@ --- -weight: 0 -title: 'FastGPT 协议' -description: 'FastGPT 协议' -icon: menu_book -lead: '' -draft: false -images: [] +title: FastGPT 协议 +description: FastGPT 协议 --- + diff --git a/document/content/docs/protocol/open-source.en.mdx b/document/content/docs/protocol/open-source.en.mdx index 931b6ec6d7ba..7b3e75e8ea31 100644 --- a/document/content/docs/protocol/open-source.en.mdx +++ b/document/content/docs/protocol/open-source.en.mdx @@ -1,10 +1,6 @@ --- -title: 'Open Source License' -description: 'FastGPT Open Source License' -icon: 'verified_user' -draft: false -toc: true -weight: 1210 +title: Open Source License +description: FastGPT Open Source License --- The FastGPT project is open-sourced under the Apache License 2.0, but includes the following additional conditions: @@ -21,4 +17,4 @@ The FastGPT project is open-sourced under the Apache License 2.0, but includes t + Be used under license terms that FastGPT may adjust to stricter or more lenient conditions. + Support commercial use cases such as the FastGPT cloud service. -Outside of these specific terms, all other rights and restrictions are governed by the Apache License 2.0. All other details can be found in the full Apache License 2.0 text. The interactive design of this product is protected by patent. © 2023 Sealos. \ No newline at end of file +Outside of these specific terms, all other rights and restrictions are governed by the Apache License 2.0. All other details can be found in the full Apache License 2.0 text. The interactive design of this product is protected by patent. © 2023 Sealos. diff --git a/document/content/docs/protocol/open-source.mdx b/document/content/docs/protocol/open-source.mdx index eaa493ec62c6..04fe5c6afbdc 100644 --- a/document/content/docs/protocol/open-source.mdx +++ b/document/content/docs/protocol/open-source.mdx @@ -1,10 +1,6 @@ --- -title: '开源协议' +title: 开源协议 description: ' FastGPT 开源许可证' -icon: 'verified_user' -draft: false -toc: true -weight: 1210 --- FastGPT 项目在 Apache License 2.0 许可下开源,但包含以下附加条件: @@ -21,4 +17,4 @@ FastGPT 项目在 Apache License 2.0 许可下开源,但包含以下附加条 + 生产者有权将开源协议调整为更严格或更宽松的形式。 + 可用于商业目的,例如 FastGPT 的云服务。 -除此之外,所有其他权利和限制均遵循 Apache License 2.0。如果你需要更多详细信息,可以参考 Apache License 2.0 的完整版本。本产品的交互设计受到外观专利保护。© 2023 Sealos. \ No newline at end of file +除此之外,所有其他权利和限制均遵循 Apache License 2.0。如果你需要更多详细信息,可以参考 Apache License 2.0 的完整版本。本产品的交互设计受到外观专利保护。© 2023 Sealos. diff --git a/document/content/docs/protocol/privacy.en.mdx b/document/content/docs/protocol/privacy.en.mdx index 9f2fc6dc70f3..61e81a9c0254 100644 --- a/document/content/docs/protocol/privacy.en.mdx +++ b/document/content/docs/protocol/privacy.en.mdx @@ -1,10 +1,6 @@ --- -title: 'Privacy Policy' -description: 'FastGPT Privacy Policy' -icon: 'gavel' -draft: false -toc: true -weight: 1221 +title: Privacy Policy +description: FastGPT Privacy Policy --- Last Updated: March 3, 2024 @@ -62,4 +58,4 @@ Due to servers potentially being located in different countries/regions, you agr **Contact Us** 1. For any questions, suggestions, or complaints about this policy, contact us at: yujinlong@sealos.io. -2. We will respond promptly and address your concerns. \ No newline at end of file +2. We will respond promptly and address your concerns. diff --git a/document/content/docs/protocol/privacy.mdx b/document/content/docs/protocol/privacy.mdx index 03f78969902b..4ad911d79bde 100644 --- a/document/content/docs/protocol/privacy.mdx +++ b/document/content/docs/protocol/privacy.mdx @@ -1,10 +1,6 @@ --- -title: '隐私政策' +title: 隐私政策 description: ' FastGPT 隐私政策' -icon: 'gavel' -draft: false -toc: true -weight: 1221 --- 最后更新时间:2024年3月3日 @@ -63,4 +59,4 @@ weight: 1221 **联系我们** 1. 如您对本隐私政策有任何疑问、建议或投诉,请通过以下方式与我们联系:yujinlong@sealos.io。 -2. 我们将尽快回复并解决您提出的问题。 \ No newline at end of file +2. 我们将尽快回复并解决您提出的问题。 diff --git a/document/content/docs/protocol/terms.en.mdx b/document/content/docs/protocol/terms.en.mdx index 4e5a9bc0def1..32b3823d58c9 100644 --- a/document/content/docs/protocol/terms.en.mdx +++ b/document/content/docs/protocol/terms.en.mdx @@ -1,10 +1,6 @@ --- -title: 'Service Agreement' -description: 'FastGPT Service Agreement' -icon: 'gavel' -draft: false -toc: true -weight: 1220 +title: Service Agreement +description: FastGPT Service Agreement --- Last Updated: March 3, 2024 @@ -76,4 +72,4 @@ This FastGPT Service Agreement constitutes the terms and conditions agreed betwe **Article 7 Additional Provisions** 1. If any clause is deemed unlawful or invalid, the remaining provisions shall remain enforceable. -2. Sealos retains final authority in interpreting this Agreement and privacy policies. For any inquiries, please contact us at yujinlong@sealos.io. \ No newline at end of file +2. Sealos retains final authority in interpreting this Agreement and privacy policies. For any inquiries, please contact us at yujinlong@sealos.io. diff --git a/document/content/docs/protocol/terms.mdx b/document/content/docs/protocol/terms.mdx index 8920b101e2ac..c0bcc404f1d1 100644 --- a/document/content/docs/protocol/terms.mdx +++ b/document/content/docs/protocol/terms.mdx @@ -1,10 +1,6 @@ --- -title: '服务协议' +title: 服务协议 description: ' FastGPT 服务协议' -icon: 'gavel' -draft: false -toc: true -weight: 1220 --- 最后更新时间:2024年3月3日 @@ -72,4 +68,4 @@ FastGPT 服务协议是您与珠海环界云计算有限公司(以下简称“ **第7条 其他条款** 1. 如本协议中部分条款因违反法律法规而被视为无效,不影响其他条款的效力。 -2. 本公司保留对本协议及隐私政策的最终解释权。如您对本协议或隐私政策有任何疑问,请联系我们:yujinlong@sealos.io。 \ No newline at end of file +2. 本公司保留对本协议及隐私政策的最终解释权。如您对本协议或隐私政策有任何疑问,请联系我们:yujinlong@sealos.io。 diff --git a/document/content/docs/use-cases/app-cases/dalle3.mdx b/document/content/docs/use-cases/app-cases/dalle3.mdx index 3117d8d507d2..ae2b74b87af7 100644 --- a/document/content/docs/use-cases/app-cases/dalle3.mdx +++ b/document/content/docs/use-cases/app-cases/dalle3.mdx @@ -1,10 +1,6 @@ --- -title: 'Dalle3 绘图' -description: '使用 HTTP 模块绘制图片' -icon: 'image' -draft: false -toc: true -weight: 614 +title: Dalle3 绘图 +description: 使用 HTTP 模块绘制图片 --- | | | diff --git a/document/content/docs/use-cases/app-cases/english_essay_correction_bot.mdx b/document/content/docs/use-cases/app-cases/english_essay_correction_bot.mdx index c560b93e4b99..19424273c997 100644 --- a/document/content/docs/use-cases/app-cases/english_essay_correction_bot.mdx +++ b/document/content/docs/use-cases/app-cases/english_essay_correction_bot.mdx @@ -1,10 +1,6 @@ --- -title: "英语作文纠错机器人" -description: "使用 FastGPT 创建一个用于英语作文纠错的机器人,帮助用户检测并纠正语言错误" -icon: "spellcheck" -draft: false -toc: true -weight: 608 +title: 英语作文纠错机器人 +description: 使用 FastGPT 创建一个用于英语作文纠错的机器人,帮助用户检测并纠正语言错误 --- FastGPT 提供了一种基于 LLM Model 搭建应用的简便方式。 @@ -94,4 +90,4 @@ FastGPT 的指定回复组件可以将 Markdown 解析为 Html 返回。 可以选择通过 URL 访问,或者是直接嵌入你的网页中。 -> [点我使用](https://share.fastgpt.in/chat/share?shareId=b4r173wkcjae7wpnexcvmyc3) \ No newline at end of file +> [点我使用](https://share.fastgpt.in/chat/share?shareId=b4r173wkcjae7wpnexcvmyc3) diff --git a/document/content/docs/use-cases/app-cases/feishu_webhook.mdx b/document/content/docs/use-cases/app-cases/feishu_webhook.mdx index 71f6883fa7cf..1b3df2384762 100644 --- a/document/content/docs/use-cases/app-cases/feishu_webhook.mdx +++ b/document/content/docs/use-cases/app-cases/feishu_webhook.mdx @@ -1,10 +1,6 @@ --- -title: '发送飞书webhook通知' -description: '利用工具调用模块,发送一个飞书webhook通知' -icon: 'image' -draft: false -toc: true -weight: 618 +title: 发送飞书webhook通知 +description: 利用工具调用模块,发送一个飞书webhook通知 --- 该文章展示如何发送一个简单的飞书webhook通知,以此类推,发送其他类型的通知也可以这么操作。 @@ -409,4 +405,4 @@ weight: 618 1. 为工具调用挂载一个HTTP模块,功能描述写上:调用飞书webhook,发送一个通知。 2. HTTP模块的输入参数中,填写飞书机器人的地址,填写发送的通知内容。 3. HTTP模块输出连接上一个工具终止模块,用于强制结束工具调用。不终止的话,会把调用结果返回给模型,模型会继续回答一次问题,浪费 Tokens -4. HTTP模块输出再连上一个指定回复,直接回复一个发送成功,用于替代AI的回答。 \ No newline at end of file +4. HTTP模块输出再连上一个指定回复,直接回复一个发送成功,用于替代AI的回答。 diff --git a/document/content/docs/use-cases/app-cases/fixingEvidence.mdx b/document/content/docs/use-cases/app-cases/fixingEvidence.mdx index cb5465004b9e..2e931dc60e05 100644 --- a/document/content/docs/use-cases/app-cases/fixingEvidence.mdx +++ b/document/content/docs/use-cases/app-cases/fixingEvidence.mdx @@ -1,10 +1,6 @@ --- -title: '固定开头和结尾内容' -description: '利用指定回复,创建固定的开头和结尾' -icon: 'healing' -draft: false -toc: true -weight: 610 +title: 固定开头和结尾内容 +description: 利用指定回复,创建固定的开头和结尾 --- ![](/imgs/demo-fix-evidence1.jpg) diff --git a/document/content/docs/use-cases/app-cases/google_search.mdx b/document/content/docs/use-cases/app-cases/google_search.mdx index 15ebb43ecbe0..0b6d09fe7251 100644 --- a/document/content/docs/use-cases/app-cases/google_search.mdx +++ b/document/content/docs/use-cases/app-cases/google_search.mdx @@ -1,10 +1,6 @@ --- -title: '接入谷歌搜索' -description: '将 FastGPT 接入谷歌搜索' -icon: 'search' -draft: false -toc: true -weight: 616 +title: 接入谷歌搜索 +description: 将 FastGPT 接入谷歌搜索 --- | | | diff --git a/document/content/docs/use-cases/app-cases/lab_appointment.mdx b/document/content/docs/use-cases/app-cases/lab_appointment.mdx index e8373f0cfbe3..6ce438fd151a 100644 --- a/document/content/docs/use-cases/app-cases/lab_appointment.mdx +++ b/document/content/docs/use-cases/app-cases/lab_appointment.mdx @@ -1,10 +1,6 @@ --- -title: '实验室预约' -description: '展示高级编排操作数据库的能力' -icon: 'database' -draft: false -toc: true -weight: 612 +title: 实验室预约 +description: 展示高级编排操作数据库的能力 --- import { Alert } from '@/components/docs/Alert'; diff --git a/document/content/docs/use-cases/app-cases/multi_turn_translation_bot.mdx b/document/content/docs/use-cases/app-cases/multi_turn_translation_bot.mdx index 1f35a2e941c7..8921a07199c7 100644 --- a/document/content/docs/use-cases/app-cases/multi_turn_translation_bot.mdx +++ b/document/content/docs/use-cases/app-cases/multi_turn_translation_bot.mdx @@ -1,10 +1,6 @@ --- -title: "多轮翻译机器人" -description: "如何使用 FastGPT 构建一个多轮翻译机器人,实现连续的对话翻译功能" -icon: "translate" -draft: false -toc: true -weight: 606 +title: 多轮翻译机器人 +description: 如何使用 FastGPT 构建一个多轮翻译机器人,实现连续的对话翻译功能 --- 吴恩达老师提出了一种反思翻译的大语言模型(LLM)翻译工作流程——[GitHub - andrewyng/translation-agent](https://github.com/andrewyng/translation-agent),具体工作流程如下: @@ -312,4 +308,4 @@ Fastgpt 提供了工作流线路可以返回去执行的功能,所以我们可 出于 LLM 的卓越能力,我们能够通过设置不同的prompt来获取不同的翻译结果,也就是可以很轻松地通过设置特殊的限定词,来实现特定的,更精确的翻译 -而对于一些超出 LLM 理解的术语等,也可以利用 Fastgpt 的知识库功能进行相应扩展,进一步完善翻译机器人的功能 \ No newline at end of file +而对于一些超出 LLM 理解的术语等,也可以利用 Fastgpt 的知识库功能进行相应扩展,进一步完善翻译机器人的功能 diff --git a/document/content/docs/use-cases/app-cases/submit_application_template.mdx b/document/content/docs/use-cases/app-cases/submit_application_template.mdx index 51d428d69110..3e7b146de3c3 100644 --- a/document/content/docs/use-cases/app-cases/submit_application_template.mdx +++ b/document/content/docs/use-cases/app-cases/submit_application_template.mdx @@ -1,10 +1,6 @@ --- -title: "如何提交应用模板" -description: "指南:如何向 FastGPT 提交应用模板" -icon: "template_submission" -draft: false -toc: true -weight: 602 +title: 如何提交应用模板 +description: 指南:如何向 FastGPT 提交应用模板 --- diff --git a/document/content/docs/use-cases/app-cases/translate-subtitle-using-gpt.mdx b/document/content/docs/use-cases/app-cases/translate-subtitle-using-gpt.mdx index f9e4b79298a1..ecf247649bf5 100644 --- a/document/content/docs/use-cases/app-cases/translate-subtitle-using-gpt.mdx +++ b/document/content/docs/use-cases/app-cases/translate-subtitle-using-gpt.mdx @@ -1,10 +1,6 @@ --- -title: '长字幕翻译' -description: '利用 AI 自我反思提升翻译质量,同时循环迭代执行 AI 工作流来突破 LLM tokens 限制,实现一个高效的长字幕翻译机器人。' -icon: 'translate' -draft: false -toc: true -weight: 604 +title: 长字幕翻译 +description: 利用 AI 自我反思提升翻译质量,同时循环迭代执行 AI 工作流来突破 LLM tokens 限制,实现一个高效的长字幕翻译机器人。 --- 直接使用 LLM 来翻译长字幕会遇到很多难点,这些难点也正是直接使用 AI 无法有效处理的问题: @@ -2214,4 +2210,4 @@ weight: 604 } ``` - \ No newline at end of file + diff --git a/document/content/docs/use-cases/external-integration/dingtalk.mdx b/document/content/docs/use-cases/external-integration/dingtalk.mdx index 820757d94330..97265655772b 100644 --- a/document/content/docs/use-cases/external-integration/dingtalk.mdx +++ b/document/content/docs/use-cases/external-integration/dingtalk.mdx @@ -1,10 +1,6 @@ --- -title: "接入钉钉机器人教程" -description: "FastGPT 接入钉钉机器人教程" -icon: "chat" -draft: false -toc: true -weight: 505 +title: 接入钉钉机器人教程 +description: FastGPT 接入钉钉机器人教程 --- 从 4.8.16 版本起,FastGPT 商业版支持直接接入钉钉机器人,无需额外的 API。 @@ -61,4 +57,4 @@ weight: 505 ### 如何新开一个聊天记录 -如果你想重置你的聊天记录,可以给机器人发送 `Reset` 消息(注意大小写),机器人会新开一个聊天记录。 \ No newline at end of file +如果你想重置你的聊天记录,可以给机器人发送 `Reset` 消息(注意大小写),机器人会新开一个聊天记录。 diff --git a/document/content/docs/use-cases/external-integration/feishu.mdx b/document/content/docs/use-cases/external-integration/feishu.mdx index 9669cac9c6a0..dc5525b7ef56 100644 --- a/document/content/docs/use-cases/external-integration/feishu.mdx +++ b/document/content/docs/use-cases/external-integration/feishu.mdx @@ -1,10 +1,6 @@ --- -title: "接入飞书机器人教程" -description: "FastGPT 接入飞书机器人教程" -icon: "chat" -draft: false -toc: true -weight: 504 +title: 接入飞书机器人教程 +description: FastGPT 接入飞书机器人教程 --- 从 4.8.10 版本起,FastGPT 商业版支持直接接入飞书机器人,无需额外的 API。 @@ -103,4 +99,4 @@ Verification Token 默认生成的这个 Token 用于校验来源。但我们使 2. 飞书话题群中单个话题 3. 群组聊天中,由群 id+个人id 组成。 -如果你想重置你的聊天记录,可以给机器人发送 `Reset` 消息(注意大小写),机器人会新开一个聊天记录。 \ No newline at end of file +如果你想重置你的聊天记录,可以给机器人发送 `Reset` 消息(注意大小写),机器人会新开一个聊天记录。 diff --git a/document/content/docs/use-cases/external-integration/iframe_integration.mdx b/document/content/docs/use-cases/external-integration/iframe_integration.mdx index 7fa8cb2883a0..765fd9146c52 100644 --- a/document/content/docs/use-cases/external-integration/iframe_integration.mdx +++ b/document/content/docs/use-cases/external-integration/iframe_integration.mdx @@ -1,8 +1,5 @@ --- -title: "iframe 接入" -description: "通过 iframe 嵌入 FastGPT 内容到其他网页或应用" -icon: "iframe" -draft: false -toc: true -weight: 512 +title: iframe 接入 +description: 通过 iframe 嵌入 FastGPT 内容到其他网页或应用 --- + diff --git a/document/content/docs/use-cases/external-integration/official_account.mdx b/document/content/docs/use-cases/external-integration/official_account.mdx index c4cb7aac1c7f..d34cf2fc1fc0 100644 --- a/document/content/docs/use-cases/external-integration/official_account.mdx +++ b/document/content/docs/use-cases/external-integration/official_account.mdx @@ -1,10 +1,6 @@ --- -title: '接入微信公众号教程' -description: 'FastGPT 接入微信公众号教程' -icon: 'description' -draft: false -toc: true -weight: 506 +title: 接入微信公众号教程 +description: FastGPT 接入微信公众号教程 --- 从 4.8.10 版本起,FastGPT 商业版支持直接接入微信公众号,无需额外的 API。 @@ -127,4 +123,4 @@ weight: 506 ### 如何新开一个聊天记录 -如果你想重置你的聊天记录,可以给机器人发送 `Reset` 消息(注意大小写),机器人会新开一个聊天记录。 \ No newline at end of file +如果你想重置你的聊天记录,可以给机器人发送 `Reset` 消息(注意大小写),机器人会新开一个聊天记录。 diff --git a/document/content/docs/use-cases/external-integration/onwechat.mdx b/document/content/docs/use-cases/external-integration/onwechat.mdx index e13f5727b8bb..9a981c0bc423 100644 --- a/document/content/docs/use-cases/external-integration/onwechat.mdx +++ b/document/content/docs/use-cases/external-integration/onwechat.mdx @@ -1,10 +1,6 @@ --- -title: "对接 chatgpt-on-wechat" -description: "FastGPT 对接 chatgpt-on-wechat" -icon: "chat" -draft: false -toc: true -weight: 509 +title: 对接 chatgpt-on-wechat +description: FastGPT 对接 chatgpt-on-wechat --- import { Alert } from '@/components/docs/Alert'; @@ -72,4 +68,4 @@ docker-compose up -d ``` * 运行成功后会提示扫码登录 -* 随便找个账号,私信发送: bot问题 会将 问题 传到 FastGPT 进行回答。 \ No newline at end of file +* 随便找个账号,私信发送: bot问题 会将 问题 传到 FastGPT 进行回答。 diff --git a/document/content/docs/use-cases/external-integration/openapi.mdx b/document/content/docs/use-cases/external-integration/openapi.mdx index c2d90f8ffa27..0e01646beb55 100644 --- a/document/content/docs/use-cases/external-integration/openapi.mdx +++ b/document/content/docs/use-cases/external-integration/openapi.mdx @@ -1,10 +1,6 @@ --- -title: "通过 API 访问应用" -description: "通过 API 访问 FastGPT 应用" -icon: "model_training" -draft: false -toc: true -weight: 502 +title: 通过 API 访问应用 +description: 通过 API 访问 FastGPT 应用 --- import { Alert } from '@/components/docs/Alert'; @@ -39,4 +35,4 @@ OPENAI_API_KEY = 上一步获取到的密钥 **[ChatGPT Web](https://github.com/Chanzhaoyu/chatgpt-web) 示例:** -![](/imgs/chatgptweb.png) \ No newline at end of file +![](/imgs/chatgptweb.png) diff --git a/document/content/docs/use-cases/external-integration/wechat.mdx b/document/content/docs/use-cases/external-integration/wechat.mdx index 2b15151cf483..fa345144ae60 100644 --- a/document/content/docs/use-cases/external-integration/wechat.mdx +++ b/document/content/docs/use-cases/external-integration/wechat.mdx @@ -1,10 +1,6 @@ --- -title: "接入微信和企业微信 " -description: "FastGPT 接入微信和企业微信 " -icon: "chat" -draft: false -toc: true -weight: 510 +title: '接入微信和企业微信 ' +description: 'FastGPT 接入微信和企业微信 ' --- # FastGPT 三分钟接入微信/企业微信 diff --git a/document/content/docs/use-cases/index.mdx b/document/content/docs/use-cases/index.mdx index c0d67aa82119..4f0a6573deca 100644 --- a/document/content/docs/use-cases/index.mdx +++ b/document/content/docs/use-cases/index.mdx @@ -1,9 +1,5 @@ --- -weight: 0 -title: '使用案例' -description: 'FastGPT 使用案例' -icon: menu_book -lead: '' -draft: false -images: [] +title: 使用案例 +description: FastGPT 使用案例 --- + diff --git a/document/lib/github.ts b/document/lib/github.ts index 8af64091db9b..a3801fe152ba 100644 --- a/document/lib/github.ts +++ b/document/lib/github.ts @@ -7,7 +7,7 @@ export async function fetchLastModified(path: string): Promise { owner: process.env.GITHUB_OWNER || 'labring', repo: process.env.GITHUB_REPO || 'FastGPT', path, - token: `Bearer ${process.env.GIT_TOKEN}` + token: `Bearer ${process.env.GITHUB_TOKEN}` }); return lastEdit ? lastEdit.toISOString() : null; } catch (err) { diff --git a/document/package-lock.json b/document/package-lock.json new file mode 100644 index 000000000000..6da74b8bffb1 --- /dev/null +++ b/document/package-lock.json @@ -0,0 +1,6622 @@ +{ + "name": "fast", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "fast", + "version": "0.0.0", + "hasInstallScript": true, + "dependencies": { + "@orama/orama": "^3.1.11", + "@orama/tokenizers": "^3.1.11", + "algoliasearch": "^5.32.0", + "fast-glob": "^3.3.3", + "fs-extra": "^11.3.0", + "fumadocs-core": "15.6.3", + "fumadocs-mdx": "11.6.11", + "fumadocs-ui": "15.6.3", + "gray-matter": "^4.0.3", + "lucide-react": "^0.525.0", + "next": "15.3.5", + "react": "^19.1.0", + "react-dom": "^19.1.0", + "react-responsive": "^10.0.1", + "remark": "^15.0.1", + "remark-gfm": "^4.0.1", + "remark-mdx": "^3.1.0", + "remark-stringify": "^11.0.0" + }, + "devDependencies": { + "@content-collections/core": "^0.10.0", + "@content-collections/next": "^0.2.6", + "@tailwindcss/postcss": "^4.1.11", + "@types/mdx": "^2.0.13", + "@types/node": "24.0.13", + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", + "postcss": "^8.5.6", + "tailwindcss": "^4.1.11", + "typescript": "^5.8.3", + "zod": "^4.0.5" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.34.0", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.34.0.tgz", + "integrity": "sha512-d6ardhDtQsnMpyr/rPrS3YuIE9NYpY4rftkC7Ap9tyuhZ/+V3E/LH+9uEewPguKzVqduApdwJzYq2k+vAXVEbQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.34.0", + "@algolia/requester-browser-xhr": "5.34.0", + "@algolia/requester-fetch": "5.34.0", + "@algolia/requester-node-http": "5.34.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.34.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.34.0.tgz", + "integrity": "sha512-WXIByjHNA106JO1Dj6b4viSX/yMN3oIB4qXr2MmyEmNq0MgfuPfPw8ayLRIZPa9Dp27hvM3G8MWJ4RG978HYFw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.34.0", + "@algolia/requester-browser-xhr": "5.34.0", + "@algolia/requester-fetch": "5.34.0", + "@algolia/requester-node-http": "5.34.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.34.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.34.0.tgz", + "integrity": "sha512-JeN1XJLZIkkv6yK0KT93CIXXk+cDPUGNg5xeH4fN9ZykYFDWYRyqgaDo+qvg4RXC3WWkdQ+hogQuuCk4Y3Eotw==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.34.0", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.34.0.tgz", + "integrity": "sha512-gdFlcQa+TWXJUsihHDlreFWniKPFIQ15i5oynCY4m9K3DCex5g5cVj9VG4Hsquxf2t6Y0yv8w6MvVTGDO8oRLw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.34.0", + "@algolia/requester-browser-xhr": "5.34.0", + "@algolia/requester-fetch": "5.34.0", + "@algolia/requester-node-http": "5.34.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.34.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.34.0.tgz", + "integrity": "sha512-g91NHhIZDkh1IUeNtsUd8V/ZxuBc2ByOfDqhCkoQY3Z/mZszhpn3Czn6AR5pE81fx793vMaiOZvQVB5QttArkQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.34.0", + "@algolia/requester-browser-xhr": "5.34.0", + "@algolia/requester-fetch": "5.34.0", + "@algolia/requester-node-http": "5.34.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.34.0", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.34.0.tgz", + "integrity": "sha512-cvRApDfFrlJ3Vcn37U4Nd/7S6T8cx7FW3mVLJPqkkzixv8DQ/yV+x4VLirxOtGDdq3KohcIbIGWbg1QuyOZRvQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.34.0", + "@algolia/requester-browser-xhr": "5.34.0", + "@algolia/requester-fetch": "5.34.0", + "@algolia/requester-node-http": "5.34.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.34.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.34.0.tgz", + "integrity": "sha512-m9tK4IqJmn+flEPRtuxuHgiHmrKV0su5fuVwVpq8/es4DMjWMgX1a7Lg1PktvO8AbKaTp9kTtBAPnwXpuCwmEg==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.34.0", + "@algolia/requester-browser-xhr": "5.34.0", + "@algolia/requester-fetch": "5.34.0", + "@algolia/requester-node-http": "5.34.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion": { + "version": "1.34.0", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.34.0.tgz", + "integrity": "sha512-2rxy4XoeRtIpzxEh5u5UgDC5HY4XbNdjzNgFx1eDrfFkSHpEVjirtLhISMy2N5uSFqYu1uUby5/NC1Soq8J7iw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.34.0", + "@algolia/requester-browser-xhr": "5.34.0", + "@algolia/requester-fetch": "5.34.0", + "@algolia/requester-node-http": "5.34.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.34.0", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.34.0.tgz", + "integrity": "sha512-OJiDhlJX8ZdWAndc50Z6aUEW/YmnhFK2ul3rahMw5/c9Damh7+oY9SufoK2LimJejy+65Qka06YPG29v2G/vww==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.34.0", + "@algolia/requester-browser-xhr": "5.34.0", + "@algolia/requester-fetch": "5.34.0", + "@algolia/requester-node-http": "5.34.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.34.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.34.0.tgz", + "integrity": "sha512-fzNQZAdVxu/Gnbavy8KW5gurApwdYcPW6+pjO7Pw8V5drCR3eSqnOxSvp79rhscDX8ezwqMqqK4F3Hsq+KpRzg==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.34.0", + "@algolia/requester-browser-xhr": "5.34.0", + "@algolia/requester-fetch": "5.34.0", + "@algolia/requester-node-http": "5.34.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.34.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.34.0.tgz", + "integrity": "sha512-gEI0xjzA/xvMpEdYmgQnf6AQKllhgKRtnEWmwDrnct+YPIruEHlx1dd7nRJTy/33MiYcCxkB4khXpNrHuqgp3Q==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.34.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.34.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.34.0.tgz", + "integrity": "sha512-5SwGOttpbACT4jXzfSJ3mnTcF46SVNSnZ1JjxC3qBa3qKi4U0CJGzuVVy3L798u8dG5H0SZ2MAB5v7180Gnqew==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.34.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.34.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.34.0.tgz", + "integrity": "sha512-409XlyIyEXrxyGjWxd0q5RASizHSRVUU0AXPCEdqnbcGEzbCgL1n7oYI8YxzE/RqZLha+PNwWCcTVn7EE5tyyQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.34.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@content-collections/core": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@content-collections/core/-/core-0.10.0.tgz", + "integrity": "sha512-GDBYbvhoj9lHNlarY5wr+3PoO3m9GBMjftio9NXatLuZaenY+EHHNCcbbA3J+c06Q7WBYwNoLAaMX2I5N0duAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "camelcase": "^8.0.0", + "chokidar": "^4.0.3", + "esbuild": "^0.25.0", + "gray-matter": "^4.0.3", + "p-limit": "^6.1.0", + "picomatch": "^4.0.2", + "pluralize": "^8.0.0", + "serialize-javascript": "^6.0.2", + "tinyglobby": "^0.2.5", + "yaml": "^2.4.5", + "zod": "^3.24.4" + }, + "peerDependencies": { + "typescript": "^5.0.2" + } + }, + "node_modules/@content-collections/core/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@content-collections/integrations": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@content-collections/integrations/-/integrations-0.2.1.tgz", + "integrity": "sha512-AyEcS2MmcOXSYt6vNmJsAiu6EBYjtNiwYGUVUmpG3llm8Gt8uiNrhIhlHyv3cuk+N8KJ2PWemLcMqtQJ+sW3bA==", + "dev": true, + "peerDependencies": { + "@content-collections/core": "0.x" + } + }, + "node_modules/@content-collections/next": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@content-collections/next/-/next-0.2.6.tgz", + "integrity": "sha512-gbVgtnXD7Qad95ENjL99LvrXoBtRTL8N0aZc5gz5NIK/yKBlpTZI6/CKVQMmROtGrqLOwcBdWlGUIzZPwpUBVA==", + "dev": true, + "dependencies": { + "@content-collections/integrations": "0.2.1" + }, + "peerDependencies": { + "@content-collections/core": "0.x", + "next": "^12 || ^13 || ^14 || ^15" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz", + "integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", + "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", + "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", + "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", + "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", + "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", + "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", + "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", + "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", + "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", + "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", + "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", + "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", + "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", + "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", + "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", + "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", + "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", + "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", + "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", + "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", + "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", + "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", + "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", + "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", + "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", + "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.2.tgz", + "integrity": "sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.2.tgz", + "integrity": "sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.2", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.4.tgz", + "integrity": "sha512-JbbpPhp38UmXDDAu60RJmbeme37Jbgsm7NrHGgzYYFKmblzRUh6Pa641dII6LsjwF4XlScDrde2UAzDo/b9KPw==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.2" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.1.tgz", + "integrity": "sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.3.tgz", + "integrity": "sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.0" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.3.tgz", + "integrity": "sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.0" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.0.tgz", + "integrity": "sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.0.tgz", + "integrity": "sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.0.tgz", + "integrity": "sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.0.tgz", + "integrity": "sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.0.tgz", + "integrity": "sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.0.tgz", + "integrity": "sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.0.tgz", + "integrity": "sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.0.tgz", + "integrity": "sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.0.tgz", + "integrity": "sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.3.tgz", + "integrity": "sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.3.tgz", + "integrity": "sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.3.tgz", + "integrity": "sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.3.tgz", + "integrity": "sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.0" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.3.tgz", + "integrity": "sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.0" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.3.tgz", + "integrity": "sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.0" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.3.tgz", + "integrity": "sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.0" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.3.tgz", + "integrity": "sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.4.4" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.3.tgz", + "integrity": "sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.3.tgz", + "integrity": "sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.3.tgz", + "integrity": "sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", + "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@next/env": { + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.5.tgz", + "integrity": "sha512-7g06v8BUVtN2njAX/r8gheoVffhiKFVt4nx74Tt6G4Hqw9HCLYQVx/GkH2qHvPtAHZaUNZ0VXAa0pQP6v1wk7g==", + "license": "MIT" + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.5.tgz", + "integrity": "sha512-lM/8tilIsqBq+2nq9kbTW19vfwFve0NR7MxfkuSUbRSgXlMQoJYg+31+++XwKVSXk4uT23G2eF/7BRIKdn8t8w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.5.tgz", + "integrity": "sha512-WhwegPQJ5IfoUNZUVsI9TRAlKpjGVK0tpJTL6KeiC4cux9774NYE9Wu/iCfIkL/5J8rPAkqZpG7n+EfiAfidXA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.5.tgz", + "integrity": "sha512-LVD6uMOZ7XePg3KWYdGuzuvVboxujGjbcuP2jsPAN3MnLdLoZUXKRc6ixxfs03RH7qBdEHCZjyLP/jBdCJVRJQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.5.tgz", + "integrity": "sha512-k8aVScYZ++BnS2P69ClK7v4nOu702jcF9AIHKu6llhHEtBSmM2zkPGl9yoqbSU/657IIIb0QHpdxEr0iW9z53A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.5.tgz", + "integrity": "sha512-2xYU0DI9DGN/bAHzVwADid22ba5d/xrbrQlr2U+/Q5WkFUzeL0TDR963BdrtLS/4bMmKZGptLeg6282H/S2i8A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.5.tgz", + "integrity": "sha512-TRYIqAGf1KCbuAB0gjhdn5Ytd8fV+wJSM2Nh2is/xEqR8PZHxfQuaiNhoF50XfY90sNpaRMaGhF6E+qjV1b9Tg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.5.tgz", + "integrity": "sha512-h04/7iMEUSMY6fDGCvdanKqlO1qYvzNxntZlCzfE8i5P0uqzVQWQquU1TIhlz0VqGQGXLrFDuTJVONpqGqjGKQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.5.tgz", + "integrity": "sha512-5fhH6fccXxnX2KhllnGhkYMndhOiLOLEiVGYjP2nizqeGWkN10sA9taATlXwake2E2XMvYZjjz0Uj7T0y+z1yw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@orama/orama": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.1.11.tgz", + "integrity": "sha512-Szki0cgFiXE5F9RLx2lUyEtJllnuCSQ4B8RLDwIjXkVit6qZjoDAxH+xhJs29MjKLDz0tbPLdKFa6QrQ/qoGGA==", + "license": "Apache-2.0", + "engines": { + "node": ">= 20.0.0" + } + }, + "node_modules/@orama/tokenizers": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/@orama/tokenizers/-/tokenizers-3.1.11.tgz", + "integrity": "sha512-fwULrEdbP5/83gFjaX1X/l7lzdD7LxBT8YbAzcY89BmXjJcJETU/5qckp4ZNDMhRRjJUSGKH4bAXHsm6yu+ZPw==", + "license": "Apache-2.0", + "dependencies": { + "@orama/orama": "3.1.11" + }, + "engines": { + "node": ">= 20.0.0" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-accordion": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.11.tgz", + "integrity": "sha512-l3W5D54emV2ues7jjeG1xcyN7S3jnK3zE2zHqgn0CmMsy9lNJwmgcrmaxS+7ipw15FAivzKNzH3d5EcGoFKw0A==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collapsible": "1.1.11", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.11.tgz", + "integrity": "sha512-2qrRsVGSCYasSz1RFOorXwl0H7g7J1frQtgpQgYrt+MOidtPAINHn9CPovQXb83r8ahapdx3Tu0fa/pdFFSdPg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.14.tgz", + "integrity": "sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.10.tgz", + "integrity": "sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", + "integrity": "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.13.tgz", + "integrity": "sha512-WG8wWfDiJlSF5hELjwfjSGOXcBR/ZMhBFCGYe8vERpC39CQYZeq1PQ2kaYHdye3V95d06H89KGMsVCIE4LWo3g==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.14.tgz", + "integrity": "sha512-ODz16+1iIbGUfFEfKx2HTPKizg2MN39uIOV8MXeHnmdd3i/N9Wt7vU46wbHsqA0xoaQyXVcs0KIlBdOA2Y95bw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.10", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.7", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.7.tgz", + "integrity": "sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.4.tgz", + "integrity": "sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.10.tgz", + "integrity": "sha512-dT9aOXUen9JSsxnMPv/0VqySQf5eDQ6LCk5Sw28kamz8wSOW2bJdlX2Bg5VUIIcV+6XlHpWTIuTPCf/UNIyq8Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.9.tgz", + "integrity": "sha512-YSjEfBXnhUELsO2VzjdtYYD4CfQjvao+lhhrX5XsHD7/cyUNzljF1FHEbgTPN7LH2MClfwRMIsYlqTYpKTTe2A==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.12.tgz", + "integrity": "sha512-GTVAlRVrQrSw3cEARM0nAx73ixrWDPNZAruETn3oHCNP6SbZ/hNxdxp+u7VkIEv3/sFoLq1PfcHrl7Pnp0CDpw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "node_modules/@shikijs/core": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.8.1.tgz", + "integrity": "sha512-uTSXzUBQ/IgFcUa6gmGShCHr4tMdR3pxUiiWKDm8pd42UKJdYhkAYsAmHX5mTwybQ5VyGDgTjW4qKSsRvGSang==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.8.1", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.8.1.tgz", + "integrity": "sha512-rZRp3BM1llrHkuBPAdYAzjlF7OqlM0rm/7EWASeCcY7cRYZIrOnGIHE9qsLz5TCjGefxBFnwgIECzBs2vmOyKA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.8.1", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.3" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.8.1.tgz", + "integrity": "sha512-KGQJZHlNY7c656qPFEQpIoqOuC4LrxjyNndRdzk5WKB/Ie87+NJCF1xo9KkOUxwxylk7rT6nhlZyTGTC4fCe1g==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.8.1", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.8.1.tgz", + "integrity": "sha512-TjOFg2Wp1w07oKnXjs0AUMb4kJvujML+fJ1C5cmEj45lhjbUXtziT1x2bPQb9Db6kmPhkG5NI2tgYW1/DzhUuQ==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.8.1" + } + }, + "node_modules/@shikijs/rehype": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@shikijs/rehype/-/rehype-3.8.1.tgz", + "integrity": "sha512-ERs9IUaORBY8vu3OQfmB1L0nwGey0qhJi3NVSLwl22H+FPIg3dDyi2bHULY7pcyKC2qo5b1yiu5Vf3jp3ZkPvA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.8.1", + "@types/hast": "^3.0.4", + "hast-util-to-string": "^3.0.1", + "shiki": "3.8.1", + "unified": "^11.0.5", + "unist-util-visit": "^5.0.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.8.1.tgz", + "integrity": "sha512-Vu3t3BBLifc0GB0UPg2Pox1naTemrrvyZv2lkiSw3QayVV60me1ujFQwPZGgUTmwXl1yhCPW8Lieesm0CYruLQ==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.8.1" + } + }, + "node_modules/@shikijs/transformers": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-3.8.1.tgz", + "integrity": "sha512-nmTyFfBrhJk6HJi118jes0wuWdfKXeVUq1Nq+hm8h6wbk1KUfvtg+LY/uDfxZD2VDItHO3QoINIs3NtoKBmgxw==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "3.8.1", + "@shikijs/types": "3.8.1" + } + }, + "node_modules/@shikijs/types": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.8.1.tgz", + "integrity": "sha512-5C39Q8/8r1I26suLh+5TPk1DTrbY/kn3IdWA5HdizR0FhlhD05zx5nKCqhzSfDHH3p4S0ZefxWd77DLV+8FhGg==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" + }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "license": "MIT" + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.11.tgz", + "integrity": "sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.30.1", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.11" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.11.tgz", + "integrity": "sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.11", + "@tailwindcss/oxide-darwin-arm64": "4.1.11", + "@tailwindcss/oxide-darwin-x64": "4.1.11", + "@tailwindcss/oxide-freebsd-x64": "4.1.11", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.11", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.11", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.11", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.11", + "@tailwindcss/oxide-linux-x64-musl": "4.1.11", + "@tailwindcss/oxide-wasm32-wasi": "4.1.11", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.11", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.11" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.11.tgz", + "integrity": "sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.11.tgz", + "integrity": "sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.11.tgz", + "integrity": "sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.11.tgz", + "integrity": "sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.11.tgz", + "integrity": "sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.11.tgz", + "integrity": "sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.11.tgz", + "integrity": "sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.11.tgz", + "integrity": "sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.11.tgz", + "integrity": "sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.11.tgz", + "integrity": "sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@emnapi/wasi-threads": "^1.0.2", + "@napi-rs/wasm-runtime": "^0.2.11", + "@tybys/wasm-util": "^0.9.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.11.tgz", + "integrity": "sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.11.tgz", + "integrity": "sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.11.tgz", + "integrity": "sha512-q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.1.11", + "@tailwindcss/oxide": "4.1.11", + "postcss": "^8.4.41", + "tailwindcss": "4.1.11" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.0.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.13.tgz", + "integrity": "sha512-Qm9OYVOFHFYg3wJoTSrz80hoec5Lia/dPp84do3X7dZvLikQvM1YpmvTBEdIr/e+U8HTkFjLHLnl78K/qjf+jQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.8.0" + } + }, + "node_modules/@types/react": { + "version": "19.1.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz", + "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.1.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz", + "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/algoliasearch": { + "version": "5.34.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.34.0.tgz", + "integrity": "sha512-wioVnf/8uuG8Bmywhk5qKIQ3wzCCtmdvicPRb0fa3kKYGGoewfgDqLEaET1MV2NbTc3WGpPv+AgauLVBp1nB9A==", + "license": "MIT", + "dependencies": { + "@algolia/client-abtesting": "5.34.0", + "@algolia/client-analytics": "5.34.0", + "@algolia/client-common": "5.34.0", + "@algolia/client-insights": "5.34.0", + "@algolia/client-personalization": "5.34.0", + "@algolia/client-query-suggestions": "5.34.0", + "@algolia/client-search": "5.34.0", + "@algolia/ingestion": "1.34.0", + "@algolia/monitoring": "1.34.0", + "@algolia/recommend": "5.34.0", + "@algolia/requester-browser-xhr": "5.34.0", + "@algolia/requester-fetch": "5.34.0", + "@algolia/requester-node-http": "5.34.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/camelcase": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "optional": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT", + "optional": true + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "optional": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", + "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==", + "license": "MIT" + }, + "node_modules/css-mediaquery": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", + "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==", + "license": "BSD" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", + "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "devOptional": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", + "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esbuild": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", + "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.8", + "@esbuild/android-arm": "0.25.8", + "@esbuild/android-arm64": "0.25.8", + "@esbuild/android-x64": "0.25.8", + "@esbuild/darwin-arm64": "0.25.8", + "@esbuild/darwin-x64": "0.25.8", + "@esbuild/freebsd-arm64": "0.25.8", + "@esbuild/freebsd-x64": "0.25.8", + "@esbuild/linux-arm": "0.25.8", + "@esbuild/linux-arm64": "0.25.8", + "@esbuild/linux-ia32": "0.25.8", + "@esbuild/linux-loong64": "0.25.8", + "@esbuild/linux-mips64el": "0.25.8", + "@esbuild/linux-ppc64": "0.25.8", + "@esbuild/linux-riscv64": "0.25.8", + "@esbuild/linux-s390x": "0.25.8", + "@esbuild/linux-x64": "0.25.8", + "@esbuild/netbsd-arm64": "0.25.8", + "@esbuild/netbsd-x64": "0.25.8", + "@esbuild/openbsd-arm64": "0.25.8", + "@esbuild/openbsd-x64": "0.25.8", + "@esbuild/openharmony-arm64": "0.25.8", + "@esbuild/sunos-x64": "0.25.8", + "@esbuild/win32-arm64": "0.25.8", + "@esbuild/win32-ia32": "0.25.8", + "@esbuild/win32-x64": "0.25.8" + } + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-value-to-estree": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.4.0.tgz", + "integrity": "sha512-Zlp+gxis+gCfK12d3Srl2PdX2ybsEA8ZYy6vQGVQTNNYLEGRQQ56XB64bjemN8kxIKXP1nC9ip4Z+ILy9LGzvQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fumadocs-core": { + "version": "15.6.3", + "resolved": "https://registry.npmjs.org/fumadocs-core/-/fumadocs-core-15.6.3.tgz", + "integrity": "sha512-71IPC6Y0ZLPHlavYormnF1r2uX/lNrTFTYCEh6Akll8hWxRNbKG9Hk4xpFJDTkU83c8eLtHk2iow/ccQkcV6Hw==", + "license": "MIT", + "dependencies": { + "@formatjs/intl-localematcher": "^0.6.1", + "@orama/orama": "^3.1.9", + "@shikijs/rehype": "^3.7.0", + "@shikijs/transformers": "^3.7.0", + "github-slugger": "^2.0.0", + "hast-util-to-estree": "^3.1.3", + "hast-util-to-jsx-runtime": "^2.3.6", + "image-size": "^2.0.2", + "negotiator": "^1.0.0", + "npm-to-yarn": "^3.0.1", + "react-remove-scroll": "^2.7.1", + "remark": "^15.0.0", + "remark-gfm": "^4.0.1", + "remark-rehype": "^11.1.2", + "scroll-into-view-if-needed": "^3.1.0", + "shiki": "^3.7.0", + "unist-util-visit": "^5.0.0" + }, + "peerDependencies": { + "@oramacloud/client": "1.x.x || 2.x.x", + "@types/react": "*", + "algoliasearch": "5.x.x", + "next": "14.x.x || 15.x.x", + "react": "18.x.x || 19.x.x", + "react-dom": "18.x.x || 19.x.x" + }, + "peerDependenciesMeta": { + "@oramacloud/client": { + "optional": true + }, + "@types/react": { + "optional": true + }, + "algoliasearch": { + "optional": true + }, + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fumadocs-mdx": { + "version": "11.6.11", + "resolved": "https://registry.npmjs.org/fumadocs-mdx/-/fumadocs-mdx-11.6.11.tgz", + "integrity": "sha512-8KPOMU53ujQtNWvmmBpyGb9BRdFXZKS0m0O6udSlXCoLU/VZlQSJE0ntxX1e5JCDVsxPR63jleCVq1c/WXmEVw==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.1.0", + "@standard-schema/spec": "^1.0.0", + "chokidar": "^4.0.3", + "esbuild": "^0.25.6", + "estree-util-value-to-estree": "^3.4.0", + "js-yaml": "^4.1.0", + "lru-cache": "^11.1.0", + "picocolors": "^1.1.1", + "tinyexec": "^1.0.1", + "tinyglobby": "^0.2.14", + "unist-util-visit": "^5.0.0", + "zod": "^4.0.5" + }, + "bin": { + "fumadocs-mdx": "bin.js" + }, + "peerDependencies": { + "@fumadocs/mdx-remote": "^1.2.0", + "fumadocs-core": "^14.0.0 || ^15.0.0", + "next": "^15.3.0", + "vite": "6.x.x" + }, + "peerDependenciesMeta": { + "@fumadocs/mdx-remote": { + "optional": true + }, + "next": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/fumadocs-ui": { + "version": "15.6.3", + "resolved": "https://registry.npmjs.org/fumadocs-ui/-/fumadocs-ui-15.6.3.tgz", + "integrity": "sha512-FN2wpPacoJ6vHhwVZF+tiAezKKqOOy5hpQxBUer0Bda95I7uFyloGF/ilVMrrCSbzd5bt/bKzXRJQwcJAw9vAQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-accordion": "^1.2.11", + "@radix-ui/react-collapsible": "^1.1.11", + "@radix-ui/react-dialog": "^1.1.14", + "@radix-ui/react-direction": "^1.1.1", + "@radix-ui/react-navigation-menu": "^1.2.13", + "@radix-ui/react-popover": "^1.1.14", + "@radix-ui/react-presence": "^1.1.4", + "@radix-ui/react-scroll-area": "^1.2.9", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-tabs": "^1.1.12", + "class-variance-authority": "^0.7.1", + "fumadocs-core": "15.6.3", + "lodash.merge": "^4.6.2", + "next-themes": "^0.4.6", + "postcss-selector-parser": "^7.1.0", + "react-medium-image-zoom": "^5.2.14", + "scroll-into-view-if-needed": "^3.1.0", + "tailwind-merge": "^3.3.1" + }, + "peerDependencies": { + "@types/react": "*", + "next": "14.x.x || 15.x.x", + "react": "18.x.x || 19.x.x", + "react-dom": "18.x.x || 19.x.x", + "tailwindcss": "^3.4.14 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "next": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "license": "BSD-3-Clause" + }, + "node_modules/image-size": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", + "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", + "license": "MIT", + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", + "license": "MIT" + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT", + "optional": true + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "license": "MIT" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/lucide-react": { + "version": "0.525.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.525.0.tgz", + "integrity": "sha512-Tm1txJ2OkymCGkvwoHt33Y2JpN5xucVq1slHcgE6Lk0WjDfjgKWor5CdVER8U6DvcfMwh4M8XxmpTiyzfmfDYQ==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/matchmediaquery": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.4.2.tgz", + "integrity": "sha512-wrZpoT50ehYOudhDjt/YvUJc6eUzcdFPdmbizfgvswCKNHD1/OBOHYJpHie+HXpu6bSkEGieFMYk6VuutaiRfA==", + "license": "MIT", + "dependencies": { + "css-mediaquery": "^0.1.2" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next": { + "version": "15.3.5", + "resolved": "https://registry.npmjs.org/next/-/next-15.3.5.tgz", + "integrity": "sha512-RkazLBMMDJSJ4XZQ81kolSpwiCt907l0xcgcpF4xC2Vml6QVcPNXW0NQRwQ80FFtSn7UM52XN0anaw8TEJXaiw==", + "license": "MIT", + "dependencies": { + "@next/env": "15.3.5", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.15", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "15.3.5", + "@next/swc-darwin-x64": "15.3.5", + "@next/swc-linux-arm64-gnu": "15.3.5", + "@next/swc-linux-arm64-musl": "15.3.5", + "@next/swc-linux-x64-gnu": "15.3.5", + "@next/swc-linux-x64-musl": "15.3.5", + "@next/swc-win32-arm64-msvc": "15.3.5", + "@next/swc-win32-x64-msvc": "15.3.5", + "sharp": "^0.34.1" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-themes": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", + "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/npm-to-yarn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-to-yarn/-/npm-to-yarn-3.0.1.tgz", + "integrity": "sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/nebrelbug/npm-to-yarn?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oniguruma-parser": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", + "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==", + "license": "MIT" + }, + "node_modules/oniguruma-to-es": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.3.tgz", + "integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==", + "license": "MIT", + "dependencies": { + "oniguruma-parser": "^0.12.1", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/p-limit": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", + "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react-medium-image-zoom": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-medium-image-zoom/-/react-medium-image-zoom-5.3.0.tgz", + "integrity": "sha512-RCIzVlsKqy3BYgGgYbolUfuvx0aSKC7YhX/IJGEp+WJxsqdIVYJHkBdj++FAj6VD7RiWj6VVmdCfa/9vJE9hZg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/rpearce" + } + ], + "license": "BSD-3-Clause", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", + "integrity": "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-responsive": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-10.0.1.tgz", + "integrity": "sha512-OM5/cRvbtUWEX8le8RCT8scA8y2OPtb0Q/IViEyCEM5FBN8lRrkUOZnu87I88A6njxDldvxG+rLBxWiA7/UM9g==", + "license": "MIT", + "dependencies": { + "hyphenate-style-name": "^1.0.0", + "matchmediaquery": "^0.4.2", + "prop-types": "^15.6.1", + "shallow-equal": "^3.1.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz", + "integrity": "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==", + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "license": "MIT" + }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", + "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", + "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", + "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "license": "MIT", + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shallow-equal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-3.1.0.tgz", + "integrity": "sha512-pfVOw8QZIXpMbhBWvzBISicvToTiM5WBF1EeAUZDDSb5Dt29yl4AYbyywbJFSEsRUMr7gJaxqCdr4L3tQf9wVg==", + "license": "MIT" + }, + "node_modules/sharp": { + "version": "0.34.3", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.3.tgz", + "integrity": "sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.4", + "semver": "^7.7.2" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.3", + "@img/sharp-darwin-x64": "0.34.3", + "@img/sharp-libvips-darwin-arm64": "1.2.0", + "@img/sharp-libvips-darwin-x64": "1.2.0", + "@img/sharp-libvips-linux-arm": "1.2.0", + "@img/sharp-libvips-linux-arm64": "1.2.0", + "@img/sharp-libvips-linux-ppc64": "1.2.0", + "@img/sharp-libvips-linux-s390x": "1.2.0", + "@img/sharp-libvips-linux-x64": "1.2.0", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.0", + "@img/sharp-libvips-linuxmusl-x64": "1.2.0", + "@img/sharp-linux-arm": "0.34.3", + "@img/sharp-linux-arm64": "0.34.3", + "@img/sharp-linux-ppc64": "0.34.3", + "@img/sharp-linux-s390x": "0.34.3", + "@img/sharp-linux-x64": "0.34.3", + "@img/sharp-linuxmusl-arm64": "0.34.3", + "@img/sharp-linuxmusl-x64": "0.34.3", + "@img/sharp-wasm32": "0.34.3", + "@img/sharp-win32-arm64": "0.34.3", + "@img/sharp-win32-ia32": "0.34.3", + "@img/sharp-win32-x64": "0.34.3" + } + }, + "node_modules/shiki": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.8.1.tgz", + "integrity": "sha512-+MYIyjwGPCaegbpBeFN9+oOifI8CKiKG3awI/6h3JeT85c//H2wDW/xCJEGuQ5jPqtbboKNqNy+JyX9PYpGwNg==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "3.8.1", + "@shikijs/engine-javascript": "3.8.1", + "@shikijs/engine-oniguruma": "3.8.1", + "@shikijs/langs": "3.8.1", + "@shikijs/themes": "3.8.1", + "@shikijs/types": "3.8.1", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "optional": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/style-to-js": { + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.17.tgz", + "integrity": "sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.9" + } + }, + "node_modules/style-to-object": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz", + "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.4" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/tailwind-merge": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.1.tgz", + "integrity": "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.11.tgz", + "integrity": "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyexec": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.5.tgz", + "integrity": "sha512-/5UuuRPStvHXu7RS+gmvRf4NXrNxpSllGwDnCBcJZtQsKrviYXm54yDGV2KYNLT5kq0lHGcl7lqWJLgSaG+tgA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/document/public/readme/algolia.png b/document/public/readme/algolia.png new file mode 100644 index 0000000000000000000000000000000000000000..ee723940e4a22d66ce488ed413c51e1f2e5b6275 GIT binary patch literal 123379 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 z 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

F+;*v#0`8mM2 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 G&;2j+i4^w$ literal 0 HcmV?d00001 diff --git a/document/public/readme/algolia2.png b/document/public/readme/algolia2.png new file mode 100644 index 0000000000000000000000000000000000000000..b93b82c2da2255ce6e963b39e6502c86af38403a GIT binary patch literal 159172 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 z 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 literal 0 HcmV?d00001 diff --git a/document/public/readme/algolia3.png b/document/public/readme/algolia3.png new file mode 100644 index 0000000000000000000000000000000000000000..00396b3a7942046808d0a4690c2d024dd2e29034 GIT binary patch literal 36501 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 SKNdj({z*$HJcEiE`uz`+DVo^; literal 0 HcmV?d00001 diff --git a/document/public/readme/link.png b/document/public/readme/link.png new file mode 100644 index 0000000000000000000000000000000000000000..98f4c093214ecbfae5017b9793adcf9f21dd79e3 GIT binary patch literal 279291 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򱍺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

VKW#EDhJw30hzto)e!zM-`iup$-`-og6yl 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 z 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 Date: Tue, 22 Jul 2025 11:04:22 +0800 Subject: [PATCH 6/7] feat: add a linkfastgpt compontent --- document/.env.template | 3 +- document/.gitignore | 30 ---------- document/README.md | 8 ++- document/components/docs/linkFastGPT.tsx | 58 +++++++++++++++++++ .../docs/introduction/development/intro.mdx | 5 +- .../guide/dashboard/workflow/http.mdx | 4 +- .../content/docs/introduction/index.en.mdx | 2 +- document/content/docs/introduction/index.mdx | 2 +- document/package-lock.json | 2 +- document/package.json | 4 +- document/update-index.mjs | 8 +-- 11 files changed, 81 insertions(+), 45 deletions(-) delete mode 100644 document/.gitignore create mode 100644 document/components/docs/linkFastGPT.tsx diff --git a/document/.env.template b/document/.env.template index 7cd3bd5e51c1..841f08a3c3f1 100644 --- a/document/.env.template +++ b/document/.env.template @@ -2,4 +2,5 @@ GITHUB_TOKEN= NEXT_PUBLIC_SEARCH_APPKEY= NEXT_PUBLIC_SEARCH_APPID= GITHUB_REPO= -GITHUB_OWNER= \ No newline at end of file +GITHUB_OWNER= +NEXT_PUBLIC_DOMAIN= \ No newline at end of file diff --git a/document/.gitignore b/document/.gitignore deleted file mode 100644 index 0c9ff6ca20ab..000000000000 --- a/document/.gitignore +++ /dev/null @@ -1,30 +0,0 @@ -# deps -/node_modules - -# generated content -.contentlayer -.content-collections -.source - -# test & build -/coverage -/.next/ -/out/ -/build -*.tsbuildinfo - -# misc -.DS_Store -*.pem -/.pnp -.pnp.js -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# others -.env*.local -.vercel -next-env.d.ts - -.env \ No newline at end of file diff --git a/document/README.md b/document/README.md index 4e66b8a10a4c..3b96d14391e4 100644 --- a/document/README.md +++ b/document/README.md @@ -26,6 +26,7 @@ NEXT_PUBLIC_SEARCH_APPKEY = #这是上面获取的搜索key NEXT_PUBLIC_SEARCH_APPID = #这是上面的搜索id GITHUB_REPO = #fork的仓库名 GITHUB_OWNER = #你的github名 +NEXT_PUBLIC_DOMAIN = #要跳转的FastGPT项目的域名,默认海外版 ``` 你可以在FastGPT项目根目录下执行以下命令来运行文档。 @@ -51,7 +52,7 @@ import { Alert } from '@/components/docs/Alert'; #高亮块组件 快速开始体验 -- 海外版:[https://tryfastgpt.ai](https://tryfastgpt.ai) +- 海外版:[https://fastgpt.io](https://fastgpt.io) - 国内版:[https://fastgpt.cn](https://fastgpt.cn) @@ -62,6 +63,11 @@ import {Redirect} from '@/components/docs/Redirect' #重定向组件,如果你 #tabs组件用法,渲染效果参考`introduction`下`development`的`faq`文档 Javascript is weird Rust is fast + + +import FastGPTLink from '@/components/docs/linkFastGPT'; #FastGPT跳转链接组件,通过接收一个域名环境变量,来实现跳转到海外或者国内 + +本文档介绍了如何设置开发环境以构建和测试 FastGPT ``` diff --git a/document/components/docs/linkFastGPT.tsx b/document/components/docs/linkFastGPT.tsx new file mode 100644 index 000000000000..8c01cdce645c --- /dev/null +++ b/document/components/docs/linkFastGPT.tsx @@ -0,0 +1,58 @@ +'use client'; + +import React, { useMemo } from 'react'; + +type FastGPTLinkProps = { + children: React.ReactNode; + className?: string; + style?: React.CSSProperties; + onClick?: (e: React.MouseEvent) => void; +}; + +const defaultStyles: React.CSSProperties = { + color: '#3370ff', + textDecoration: 'none', + transition: 'all 0.2s ease-in-out' +}; + +const hoverStyles: React.CSSProperties = { + color: '#2152d9', + textDecoration: 'underline' +}; + +const FastGPTLink = ({ children, className, style, onClick, ...props }: FastGPTLinkProps) => { + const href = useMemo(() => { + return process.env.NEXT_PUBLIC_DOMAIN ?? 'https://fastgpt.io'; + }, []); + + const [isHovered, setIsHovered] = React.useState(false); + + const combinedStyles = { + ...defaultStyles, + ...(isHovered ? hoverStyles : {}), + ...style + }; + + return ( + setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} + onClick={(e) => { + if (onClick) { + e.preventDefault(); + onClick(e); + } + }} + {...props} + > + {children} + + ); +}; + +export default React.memo(FastGPTLink); diff --git a/document/content/docs/introduction/development/intro.mdx b/document/content/docs/introduction/development/intro.mdx index b30a5606b3ed..d7f0460e9dad 100644 --- a/document/content/docs/introduction/development/intro.mdx +++ b/document/content/docs/introduction/development/intro.mdx @@ -4,12 +4,13 @@ description: 对 FastGPT 进行开发调试 --- import { Alert } from '@/components/docs/Alert'; +import FastGPTLink from '@/components/docs/linkFastGPT'; -本文档介绍了如何设置开发环境以构建和测试 [FastGPT](https://tryfastgpt.ai),。 +本文档介绍了如何设置开发环境以构建和测试 FastGPT。 ## 前置依赖项 -您需要在计算机上安装和配置以下依赖项才能构建 [FastGPT](https://tryfastgpt.ai): +您需要在计算机上安装和配置以下依赖项才能构建 FastGPT: - [Git](http://git-scm.com/) - [Docker](https://www.docker.com/)(构建镜像) diff --git a/document/content/docs/introduction/guide/dashboard/workflow/http.mdx b/document/content/docs/introduction/guide/dashboard/workflow/http.mdx index 624350dec418..bb39cd2d7cc8 100644 --- a/document/content/docs/introduction/guide/dashboard/workflow/http.mdx +++ b/document/content/docs/introduction/guide/dashboard/workflow/http.mdx @@ -68,7 +68,7 @@ HTTP 模块会向对应的地址发送一个 `HTTP` 请求,实际操作与 Pos "array": [1, 2, 3], "obj": { "name": "FastGPT", - "url": "https://tryfastgpt.ai" + "url": "https://fastgpt.io" } } ``` @@ -107,7 +107,7 @@ HTTP 模块会向对应的地址发送一个 `HTTP` 请求,实际操作与 Pos "array2": [1, 2, 3], "object": { "name": "FastGPT", - "url": "https://tryfastgpt.ai" + "url": "https://fastgpt.io" } } ``` diff --git a/document/content/docs/introduction/index.en.mdx b/document/content/docs/introduction/index.en.mdx index fa61d1ccdfc7..28e116ced0f0 100644 --- a/document/content/docs/introduction/index.en.mdx +++ b/document/content/docs/introduction/index.en.mdx @@ -9,7 +9,7 @@ FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,将智能 快速开始体验 -- 海外版:[https://tryfastgpt.ai](https://tryfastgpt.ai) +- 海外版:[https://fastgpt.io](https://fastgpt.io) - 国内版:[https://fastgpt.cn](https://fastgpt.cn) diff --git a/document/content/docs/introduction/index.mdx b/document/content/docs/introduction/index.mdx index fa61d1ccdfc7..28e116ced0f0 100644 --- a/document/content/docs/introduction/index.mdx +++ b/document/content/docs/introduction/index.mdx @@ -9,7 +9,7 @@ FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,将智能 快速开始体验 -- 海外版:[https://tryfastgpt.ai](https://tryfastgpt.ai) +- 海外版:[https://fastgpt.io](https://fastgpt.io) - 国内版:[https://fastgpt.cn](https://fastgpt.cn) diff --git a/document/package-lock.json b/document/package-lock.json index 6da74b8bffb1..f1c0b08d161e 100644 --- a/document/package-lock.json +++ b/document/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@orama/orama": "^3.1.11", "@orama/tokenizers": "^3.1.11", - "algoliasearch": "^5.32.0", + "algoliasearch": "^5.34.0", "fast-glob": "^3.3.3", "fs-extra": "^11.3.0", "fumadocs-core": "15.6.3", diff --git a/document/package.json b/document/package.json index 011c95e697de..0094f89824fe 100644 --- a/document/package.json +++ b/document/package.json @@ -11,7 +11,7 @@ "dependencies": { "@orama/orama": "^3.1.11", "@orama/tokenizers": "^3.1.11", - "algoliasearch": "^5.32.0", + "algoliasearch": "^5.34.0", "fast-glob": "^3.3.3", "fs-extra": "^11.3.0", "fumadocs-core": "15.6.3", @@ -41,4 +41,4 @@ "typescript": "^5.8.3", "zod": "^4.0.5" } -} \ No newline at end of file +} diff --git a/document/update-index.mjs b/document/update-index.mjs index c31a7bb046d2..c4be3a1d73bf 100644 --- a/document/update-index.mjs +++ b/document/update-index.mjs @@ -1,17 +1,17 @@ // @ts-check import { algoliasearch } from 'algoliasearch'; -import { sync } from 'fumadocs-core/search/algolia'; +import { sync } from 'fumadocs-core/dist/search/algolia'; import * as fs from 'node:fs'; const content = fs.readFileSync('.next/server/app/static.json.body'); // now you can pass it to `sync` -/** @type {import('fumadocs-core/search/algolia').DocumentRecord[]} **/ +/** @type {import('fumadocs-core/dist/search/algolia').DocumentRecord[]} **/ const records = JSON.parse(content.toString()); const client = algoliasearch(process.env.ALGOLIA_APP_ID || '', process.env.ALGOLIA_API_KEY || ''); void sync(client, { indexName: 'document', - documents: records, -}); \ No newline at end of file + documents: records +}); From 3592eb99adfaf27d2208f668beef2275f5992935 Mon Sep 17 00:00:00 2001 From: dreamer6680 <1468683855@qq.com> Date: Tue, 22 Jul 2025 14:11:23 +0800 Subject: [PATCH 7/7] feat: update new doc --- document/.source/index.ts | 2156 +++++++++++++++++ document/.source/source.config.mjs | 19 + .../development/upgrading/4100.mdx | 8 +- .../development/upgrading/4101.mdx | 10 +- .../development/upgrading/4110.mdx | 54 + .../docs/introduction/shopping_cart/intro.mdx | 18 +- 6 files changed, 2244 insertions(+), 21 deletions(-) create mode 100644 document/.source/index.ts create mode 100644 document/.source/source.config.mjs create mode 100644 document/content/docs/introduction/development/upgrading/4110.mdx diff --git a/document/.source/index.ts b/document/.source/index.ts new file mode 100644 index 000000000000..ec648a43ef40 --- /dev/null +++ b/document/.source/index.ts @@ -0,0 +1,2156 @@ +// @ts-nocheck -- skip type checking +import * as docs_188 from '../content/docs/introduction/guide/team_permissions/team_roles_permissions.mdx?collection=docs&hash=1753149463262'; +import * as docs_187 from '../content/docs/introduction/guide/team_permissions/invitation_link.mdx?collection=docs&hash=1753149463262'; +import * as docs_186 from '../content/docs/introduction/development/upgrading/intro.mdx?collection=docs&hash=1753149463262'; +import * as docs_185 from '../content/docs/introduction/development/upgrading/499.mdx?collection=docs&hash=1753149463262'; +import * as docs_184 from '../content/docs/introduction/development/upgrading/498.mdx?collection=docs&hash=1753149463262'; +import * as docs_183 from '../content/docs/introduction/development/upgrading/497.mdx?collection=docs&hash=1753149463262'; +import * as docs_182 from '../content/docs/introduction/development/upgrading/496.mdx?collection=docs&hash=1753149463262'; +import * as docs_181 from '../content/docs/introduction/development/upgrading/495.mdx?collection=docs&hash=1753149463262'; +import * as docs_180 from '../content/docs/introduction/development/upgrading/494.mdx?collection=docs&hash=1753149463262'; +import * as docs_179 from '../content/docs/introduction/development/upgrading/493.mdx?collection=docs&hash=1753149463262'; +import * as docs_178 from '../content/docs/introduction/development/upgrading/492.mdx?collection=docs&hash=1753149463262'; +import * as docs_177 from '../content/docs/introduction/development/upgrading/4914.mdx?collection=docs&hash=1753149463262'; +import * as docs_176 from '../content/docs/introduction/development/upgrading/4913.mdx?collection=docs&hash=1753149463262'; +import * as docs_175 from '../content/docs/introduction/development/upgrading/4912.mdx?collection=docs&hash=1753149463262'; +import * as docs_174 from '../content/docs/introduction/development/upgrading/4911.mdx?collection=docs&hash=1753149463262'; +import * as docs_173 from '../content/docs/introduction/development/upgrading/4910.mdx?collection=docs&hash=1753149463262'; +import * as docs_172 from '../content/docs/introduction/development/upgrading/491.mdx?collection=docs&hash=1753149463262'; +import * as docs_171 from '../content/docs/introduction/development/upgrading/490.mdx?collection=docs&hash=1753149463262'; +import * as docs_170 from '../content/docs/introduction/development/upgrading/489.mdx?collection=docs&hash=1753149463262'; +import * as docs_169 from '../content/docs/introduction/development/upgrading/488.mdx?collection=docs&hash=1753149463262'; +import * as docs_168 from '../content/docs/introduction/development/upgrading/487.mdx?collection=docs&hash=1753149463262'; +import * as docs_167 from '../content/docs/introduction/development/upgrading/486.mdx?collection=docs&hash=1753149463262'; +import * as docs_166 from '../content/docs/introduction/development/upgrading/485.mdx?collection=docs&hash=1753149463262'; +import * as docs_165 from '../content/docs/introduction/development/upgrading/484.mdx?collection=docs&hash=1753149463262'; +import * as docs_164 from '../content/docs/introduction/development/upgrading/483.mdx?collection=docs&hash=1753149463262'; +import * as docs_163 from '../content/docs/introduction/development/upgrading/4823.mdx?collection=docs&hash=1753149463262'; +import * as docs_162 from '../content/docs/introduction/development/upgrading/4822.mdx?collection=docs&hash=1753149463262'; +import * as docs_161 from '../content/docs/introduction/development/upgrading/4821.mdx?collection=docs&hash=1753149463262'; +import * as docs_160 from '../content/docs/introduction/development/upgrading/4820.mdx?collection=docs&hash=1753149463262'; +import * as docs_159 from '../content/docs/introduction/development/upgrading/482.mdx?collection=docs&hash=1753149463262'; +import * as docs_158 from '../content/docs/introduction/development/upgrading/4819.mdx?collection=docs&hash=1753149463262'; +import * as docs_157 from '../content/docs/introduction/development/upgrading/4818.mdx?collection=docs&hash=1753149463262'; +import * as docs_156 from '../content/docs/introduction/development/upgrading/4817.mdx?collection=docs&hash=1753149463262'; +import * as docs_155 from '../content/docs/introduction/development/upgrading/4816.mdx?collection=docs&hash=1753149463262'; +import * as docs_154 from '../content/docs/introduction/development/upgrading/4815.mdx?collection=docs&hash=1753149463262'; +import * as docs_153 from '../content/docs/introduction/development/upgrading/4814.mdx?collection=docs&hash=1753149463262'; +import * as docs_152 from '../content/docs/introduction/development/upgrading/4813.mdx?collection=docs&hash=1753149463262'; +import * as docs_151 from '../content/docs/introduction/development/upgrading/4812.mdx?collection=docs&hash=1753149463262'; +import * as docs_150 from '../content/docs/introduction/development/upgrading/4811.mdx?collection=docs&hash=1753149463262'; +import * as docs_149 from '../content/docs/introduction/development/upgrading/4810.mdx?collection=docs&hash=1753149463262'; +import * as docs_148 from '../content/docs/introduction/development/upgrading/481.mdx?collection=docs&hash=1753149463262'; +import * as docs_147 from '../content/docs/introduction/development/upgrading/48.mdx?collection=docs&hash=1753149463262'; +import * as docs_146 from '../content/docs/introduction/development/upgrading/471.mdx?collection=docs&hash=1753149463262'; +import * as docs_145 from '../content/docs/introduction/development/upgrading/47.mdx?collection=docs&hash=1753149463262'; +import * as docs_144 from '../content/docs/introduction/development/upgrading/469.mdx?collection=docs&hash=1753149463262'; +import * as docs_143 from '../content/docs/introduction/development/upgrading/468.mdx?collection=docs&hash=1753149463262'; +import * as docs_142 from '../content/docs/introduction/development/upgrading/467.mdx?collection=docs&hash=1753149463262'; +import * as docs_141 from '../content/docs/introduction/development/upgrading/466.mdx?collection=docs&hash=1753149463262'; +import * as docs_140 from '../content/docs/introduction/development/upgrading/465.mdx?collection=docs&hash=1753149463262'; +import * as docs_139 from '../content/docs/introduction/development/upgrading/464.mdx?collection=docs&hash=1753149463262'; +import * as docs_138 from '../content/docs/introduction/development/upgrading/463.mdx?collection=docs&hash=1753149463262'; +import * as docs_137 from '../content/docs/introduction/development/upgrading/462.mdx?collection=docs&hash=1753149463262'; +import * as docs_136 from '../content/docs/introduction/development/upgrading/461.mdx?collection=docs&hash=1753149463262'; +import * as docs_135 from '../content/docs/introduction/development/upgrading/46.mdx?collection=docs&hash=1753149463262'; +import * as docs_134 from '../content/docs/introduction/development/upgrading/452.mdx?collection=docs&hash=1753149463262'; +import * as docs_133 from '../content/docs/introduction/development/upgrading/451.mdx?collection=docs&hash=1753149463262'; +import * as docs_132 from '../content/docs/introduction/development/upgrading/45.mdx?collection=docs&hash=1753149463262'; +import * as docs_131 from '../content/docs/introduction/development/upgrading/447.mdx?collection=docs&hash=1753149463262'; +import * as docs_130 from '../content/docs/introduction/development/upgrading/446.mdx?collection=docs&hash=1753149463262'; +import * as docs_129 from '../content/docs/introduction/development/upgrading/445.mdx?collection=docs&hash=1753149463262'; +import * as docs_128 from '../content/docs/introduction/development/upgrading/442.mdx?collection=docs&hash=1753149463262'; +import * as docs_127 from '../content/docs/introduction/development/upgrading/441.mdx?collection=docs&hash=1753149463262'; +import * as docs_126 from '../content/docs/introduction/development/upgrading/44.mdx?collection=docs&hash=1753149463262'; +import * as docs_125 from '../content/docs/introduction/development/upgrading/43.mdx?collection=docs&hash=1753149463262'; +import * as docs_124 from '../content/docs/introduction/development/upgrading/421.mdx?collection=docs&hash=1753149463262'; +import * as docs_123 from '../content/docs/introduction/development/upgrading/42.mdx?collection=docs&hash=1753149463262'; +import * as docs_122 from '../content/docs/introduction/development/upgrading/4110.mdx?collection=docs&hash=1753149463262'; +import * as docs_121 from '../content/docs/introduction/development/upgrading/4101.mdx?collection=docs&hash=1753149463262'; +import * as docs_120 from '../content/docs/introduction/development/upgrading/4100.mdx?collection=docs&hash=1753149463262'; +import * as docs_119 from '../content/docs/introduction/development/upgrading/41.mdx?collection=docs&hash=1753149463262'; +import * as docs_118 from '../content/docs/introduction/development/upgrading/40.mdx?collection=docs&hash=1753149463262'; +import * as docs_117 from '../content/docs/introduction/guide/dashboard/workflow/variable_update.mdx?collection=docs&hash=1753149463262'; +import * as docs_116 from '../content/docs/introduction/guide/dashboard/workflow/user-selection.mdx?collection=docs&hash=1753149463262'; +import * as docs_115 from '../content/docs/introduction/guide/dashboard/workflow/tool.mdx?collection=docs&hash=1753149463262'; +import * as docs_114 from '../content/docs/introduction/guide/dashboard/workflow/tfswitch.mdx?collection=docs&hash=1753149463262'; +import * as docs_113 from '../content/docs/introduction/guide/dashboard/workflow/text_editor.mdx?collection=docs&hash=1753149463262'; +import * as docs_112 from '../content/docs/introduction/guide/dashboard/workflow/sandbox.mdx?collection=docs&hash=1753149463262'; +import * as docs_111 from '../content/docs/introduction/guide/dashboard/workflow/reply.mdx?collection=docs&hash=1753149463262'; +import * as docs_110 from '../content/docs/introduction/guide/dashboard/workflow/question_classify.mdx?collection=docs&hash=1753149463262'; +import * as docs_109 from '../content/docs/introduction/guide/dashboard/workflow/loop.mdx?collection=docs&hash=1753149463262'; +import * as docs_108 from '../content/docs/introduction/guide/dashboard/workflow/laf.mdx?collection=docs&hash=1753149463262'; +import * as docs_107 from '../content/docs/introduction/guide/dashboard/workflow/knowledge_base_search_merge.mdx?collection=docs&hash=1753149463262'; +import * as docs_106 from '../content/docs/introduction/guide/dashboard/workflow/http.mdx?collection=docs&hash=1753149463262'; +import * as docs_105 from '../content/docs/introduction/guide/dashboard/workflow/form_input.mdx?collection=docs&hash=1753149463262'; +import * as docs_104 from '../content/docs/introduction/guide/dashboard/workflow/document_parsing.mdx?collection=docs&hash=1753149463262'; +import * as docs_103 from '../content/docs/introduction/guide/dashboard/workflow/dataset_search.mdx?collection=docs&hash=1753149463262'; +import * as docs_102 from '../content/docs/introduction/guide/dashboard/workflow/custom_feedback.mdx?collection=docs&hash=1753149463262'; +import * as docs_101 from '../content/docs/introduction/guide/dashboard/workflow/coreferenceResolution.mdx?collection=docs&hash=1753149463262'; +import * as docs_100 from '../content/docs/introduction/guide/dashboard/workflow/content_extract.mdx?collection=docs&hash=1753149463262'; +import * as docs_99 from '../content/docs/introduction/guide/dashboard/workflow/ai_chat.mdx?collection=docs&hash=1753149463262'; +import * as docs_98 from '../content/docs/introduction/guide/plugins/searxng_plugin_guide.mdx?collection=docs&hash=1753149463262'; +import * as docs_97 from '../content/docs/introduction/guide/plugins/how_to_submit_system_plugin.mdx?collection=docs&hash=1753149463262'; +import * as docs_96 from '../content/docs/introduction/guide/plugins/google_search_plugin_guide.mdx?collection=docs&hash=1753149463262'; +import * as docs_95 from '../content/docs/introduction/guide/plugins/doc2x_plugin_guide.mdx?collection=docs&hash=1753149463262'; +import * as docs_94 from '../content/docs/introduction/guide/plugins/dev_system_tool.mdx?collection=docs&hash=1753149463262'; +import * as docs_93 from '../content/docs/introduction/guide/plugins/bing_search_plugin.mdx?collection=docs&hash=1753149463262'; +import * as docs_92 from '../content/docs/introduction/guide/course/quick-start.mdx?collection=docs&hash=1753149463262'; +import * as docs_91 from '../content/docs/introduction/guide/course/fileInput.mdx?collection=docs&hash=1753149463262'; +import * as docs_90 from '../content/docs/introduction/guide/course/collection_tags.mdx?collection=docs&hash=1753149463262'; +import * as docs_89 from '../content/docs/introduction/guide/course/chat_input_guide.mdx?collection=docs&hash=1753149463262'; +import * as docs_88 from '../content/docs/introduction/guide/course/ai_settings.mdx?collection=docs&hash=1753149463262'; +import * as docs_87 from '../content/docs/introduction/guide/knowledge_base/yuque_dataset.mdx?collection=docs&hash=1753149463262'; +import * as docs_86 from '../content/docs/introduction/guide/knowledge_base/websync.mdx?collection=docs&hash=1753149463262'; +import * as docs_85 from '../content/docs/introduction/guide/knowledge_base/third_dataset.mdx?collection=docs&hash=1753149463262'; +import * as docs_84 from '../content/docs/introduction/guide/knowledge_base/template.mdx?collection=docs&hash=1753149463262'; +import * as docs_83 from '../content/docs/introduction/guide/knowledge_base/lark_dataset.mdx?collection=docs&hash=1753149463262'; +import * as docs_82 from '../content/docs/introduction/guide/knowledge_base/externalFile.mdx?collection=docs&hash=1753149463262'; +import * as docs_81 from '../content/docs/introduction/guide/knowledge_base/dataset_engine.mdx?collection=docs&hash=1753149463262'; +import * as docs_80 from '../content/docs/introduction/guide/knowledge_base/api_dataset.mdx?collection=docs&hash=1753149463262'; +import * as docs_79 from '../content/docs/introduction/guide/knowledge_base/RAG.mdx?collection=docs&hash=1753149463262'; +import * as docs_78 from '../content/docs/introduction/guide/dashboard/mcp_tools.mdx?collection=docs&hash=1753149463262'; +import * as docs_77 from '../content/docs/introduction/guide/dashboard/mcp_server.mdx?collection=docs&hash=1753149463262'; +import * as docs_76 from '../content/docs/introduction/guide/dashboard/intro.mdx?collection=docs&hash=1753149463262'; +import * as docs_75 from '../content/docs/introduction/guide/dashboard/gapier.mdx?collection=docs&hash=1753149463262'; +import * as docs_74 from '../content/docs/introduction/guide/dashboard/basic-mode.mdx?collection=docs&hash=1753149463262'; +import * as docs_73 from '../content/docs/introduction/development/migration/docker_mongo.mdx?collection=docs&hash=1753149463262'; +import * as docs_72 from '../content/docs/introduction/development/migration/docker_db.mdx?collection=docs&hash=1753149463262'; +import * as docs_71 from '../content/docs/introduction/guide/admin/teamMode.mdx?collection=docs&hash=1753149463262'; +import * as docs_70 from '../content/docs/introduction/guide/admin/sso.mdx?collection=docs&hash=1753149463262'; +import * as docs_69 from '../content/docs/introduction/guide/DialogBoxes/quoteList.mdx?collection=docs&hash=1753149463262'; +import * as docs_68 from '../content/docs/introduction/guide/DialogBoxes/htmlRendering.mdx?collection=docs&hash=1753149463262'; +import * as docs_67 from '../content/docs/introduction/development/openapi/share.mdx?collection=docs&hash=1753149463262'; +import * as docs_66 from '../content/docs/introduction/development/openapi/intro.mdx?collection=docs&hash=1753149463262'; +import * as docs_65 from '../content/docs/introduction/development/openapi/dataset.mdx?collection=docs&hash=1753149463262'; +import * as docs_64 from '../content/docs/introduction/development/openapi/chat.mdx?collection=docs&hash=1753149463262'; +import * as docs_63 from '../content/docs/introduction/development/proxy/nginx.mdx?collection=docs&hash=1753149463262'; +import * as docs_62 from '../content/docs/introduction/development/proxy/http_proxy.mdx?collection=docs&hash=1753149463262'; +import * as docs_61 from '../content/docs/introduction/development/proxy/cloudflare.mdx?collection=docs&hash=1753149463262'; +import * as docs_60 from '../content/docs/introduction/development/modelConfig/siliconCloud.mdx?collection=docs&hash=1753149463262'; +import * as docs_59 from '../content/docs/introduction/development/modelConfig/ppio.mdx?collection=docs&hash=1753149463262'; +import * as docs_58 from '../content/docs/introduction/development/modelConfig/one-api.mdx?collection=docs&hash=1753149463262'; +import * as docs_57 from '../content/docs/introduction/development/modelConfig/intro.mdx?collection=docs&hash=1753149463262'; +import * as docs_56 from '../content/docs/introduction/development/modelConfig/ai-proxy.mdx?collection=docs&hash=1753149463262'; +import * as docs_55 from '../content/docs/introduction/development/design/design_plugin.mdx?collection=docs&hash=1753149463262'; +import * as docs_54 from '../content/docs/introduction/development/design/dataset.mdx?collection=docs&hash=1753149463262'; +import * as docs_53 from '../content/docs/introduction/development/custom-models/xinference.mdx?collection=docs&hash=1753149463262'; +import * as docs_52 from '../content/docs/introduction/development/custom-models/ollama.mdx?collection=docs&hash=1753149463262'; +import * as docs_51 from '../content/docs/introduction/development/custom-models/marker.mdx?collection=docs&hash=1753149463262'; +import * as docs_50 from '../content/docs/introduction/development/custom-models/m3e.mdx?collection=docs&hash=1753149463262'; +import * as docs_49 from '../content/docs/introduction/development/custom-models/chatglm2.mdx?collection=docs&hash=1753149463262'; +import * as docs_48 from '../content/docs/introduction/development/custom-models/chatglm2-m3e.mdx?collection=docs&hash=1753149463262'; +import * as docs_47 from '../content/docs/introduction/development/custom-models/bge-rerank.mdx?collection=docs&hash=1753149463262'; +import * as docs_46 from '../content/docs/introduction/FAQ/privateDeploy.mdx?collection=docs&hash=1753149463262'; +import * as docs_45 from '../content/docs/introduction/FAQ/points_consumption.mdx?collection=docs&hash=1753149463262'; +import * as docs_44 from '../content/docs/introduction/FAQ/other.mdx?collection=docs&hash=1753149463262'; +import * as docs_43 from '../content/docs/introduction/FAQ/external_channel_integration.mdx?collection=docs&hash=1753149463262'; +import * as docs_42 from '../content/docs/introduction/FAQ/error.mdx?collection=docs&hash=1753149463262'; +import * as docs_41 from '../content/docs/introduction/FAQ/docker.mdx?collection=docs&hash=1753149463262'; +import * as docs_40 from '../content/docs/introduction/FAQ/dataset.mdx?collection=docs&hash=1753149463262'; +import * as docs_39 from '../content/docs/introduction/FAQ/chat.mdx?collection=docs&hash=1753149463262'; +import * as docs_38 from '../content/docs/introduction/FAQ/app.mdx?collection=docs&hash=1753149463262'; +import * as docs_37 from '../content/docs/introduction/development/sealos.mdx?collection=docs&hash=1753149463262'; +import * as docs_36 from '../content/docs/introduction/development/intro.mdx?collection=docs&hash=1753149463262'; +import * as docs_35 from '../content/docs/introduction/development/faq.mdx?collection=docs&hash=1753149463262'; +import * as docs_34 from '../content/docs/introduction/development/docker.mdx?collection=docs&hash=1753149463262'; +import * as docs_33 from '../content/docs/introduction/development/configuration.mdx?collection=docs&hash=1753149463262'; +import * as docs_32 from '../content/docs/introduction/shopping_cart/saas.mdx?collection=docs&hash=1753149463262'; +import * as docs_31 from '../content/docs/introduction/shopping_cart/intro.mdx?collection=docs&hash=1753149463262'; +import * as docs_30 from '../content/docs/protocol/terms.mdx?collection=docs&hash=1753149463262'; +import * as docs_29 from '../content/docs/protocol/terms.en.mdx?collection=docs&hash=1753149463262'; +import * as docs_28 from '../content/docs/protocol/privacy.mdx?collection=docs&hash=1753149463262'; +import * as docs_27 from '../content/docs/protocol/privacy.en.mdx?collection=docs&hash=1753149463262'; +import * as docs_26 from '../content/docs/protocol/open-source.mdx?collection=docs&hash=1753149463262'; +import * as docs_25 from '../content/docs/protocol/open-source.en.mdx?collection=docs&hash=1753149463262'; +import * as docs_24 from '../content/docs/protocol/index.mdx?collection=docs&hash=1753149463262'; +import * as docs_23 from '../content/docs/use-cases/app-cases/translate-subtitle-using-gpt.mdx?collection=docs&hash=1753149463262'; +import * as docs_22 from '../content/docs/use-cases/app-cases/submit_application_template.mdx?collection=docs&hash=1753149463262'; +import * as docs_21 from '../content/docs/use-cases/app-cases/multi_turn_translation_bot.mdx?collection=docs&hash=1753149463262'; +import * as docs_20 from '../content/docs/use-cases/app-cases/lab_appointment.mdx?collection=docs&hash=1753149463262'; +import * as docs_19 from '../content/docs/use-cases/app-cases/google_search.mdx?collection=docs&hash=1753149463262'; +import * as docs_18 from '../content/docs/use-cases/app-cases/fixingEvidence.mdx?collection=docs&hash=1753149463262'; +import * as docs_17 from '../content/docs/use-cases/app-cases/feishu_webhook.mdx?collection=docs&hash=1753149463262'; +import * as docs_16 from '../content/docs/use-cases/app-cases/english_essay_correction_bot.mdx?collection=docs&hash=1753149463262'; +import * as docs_15 from '../content/docs/use-cases/app-cases/dalle3.mdx?collection=docs&hash=1753149463262'; +import * as docs_14 from '../content/docs/use-cases/external-integration/wechat.mdx?collection=docs&hash=1753149463262'; +import * as docs_13 from '../content/docs/use-cases/external-integration/openapi.mdx?collection=docs&hash=1753149463262'; +import * as docs_12 from '../content/docs/use-cases/external-integration/onwechat.mdx?collection=docs&hash=1753149463262'; +import * as docs_11 from '../content/docs/use-cases/external-integration/official_account.mdx?collection=docs&hash=1753149463262'; +import * as docs_10 from '../content/docs/use-cases/external-integration/iframe_integration.mdx?collection=docs&hash=1753149463262'; +import * as docs_9 from '../content/docs/use-cases/external-integration/feishu.mdx?collection=docs&hash=1753149463262'; +import * as docs_8 from '../content/docs/use-cases/external-integration/dingtalk.mdx?collection=docs&hash=1753149463262'; +import * as docs_7 from '../content/docs/api/index.mdx?collection=docs&hash=1753149463262'; +import * as docs_6 from '../content/docs/api/api2.mdx?collection=docs&hash=1753149463262'; +import * as docs_5 from '../content/docs/api/api1.mdx?collection=docs&hash=1753149463262'; +import * as docs_4 from '../content/docs/introduction/index.mdx?collection=docs&hash=1753149463262'; +import * as docs_3 from '../content/docs/introduction/index.en.mdx?collection=docs&hash=1753149463262'; +import * as docs_2 from '../content/docs/introduction/community.mdx?collection=docs&hash=1753149463262'; +import * as docs_1 from '../content/docs/use-cases/index.mdx?collection=docs&hash=1753149463262'; +import * as docs_0 from '../content/docs/index.mdx?collection=docs&hash=1753149463262'; +import { _runtime } from 'fumadocs-mdx'; +import * as _source from '../source.config'; +export const docs = _runtime.docs( + [ + { + info: { + path: 'index.mdx', + absolutePath: '/Users/dreamer/work/12312/FastGPT/document/content/docs/index.mdx' + }, + data: docs_0 + }, + { + info: { + path: 'use-cases/index.mdx', + absolutePath: '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/index.mdx' + }, + data: docs_1 + }, + { + info: { + path: 'introduction/community.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/community.mdx' + }, + data: docs_2 + }, + { + info: { + path: 'introduction/index.en.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/index.en.mdx' + }, + data: docs_3 + }, + { + info: { + path: 'introduction/index.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/index.mdx' + }, + data: docs_4 + }, + { + info: { + path: 'api/api1.mdx', + absolutePath: '/Users/dreamer/work/12312/FastGPT/document/content/docs/api/api1.mdx' + }, + data: docs_5 + }, + { + info: { + path: 'api/api2.mdx', + absolutePath: '/Users/dreamer/work/12312/FastGPT/document/content/docs/api/api2.mdx' + }, + data: docs_6 + }, + { + info: { + path: 'api/index.mdx', + absolutePath: '/Users/dreamer/work/12312/FastGPT/document/content/docs/api/index.mdx' + }, + data: docs_7 + }, + { + info: { + path: 'use-cases/external-integration/dingtalk.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/external-integration/dingtalk.mdx' + }, + data: docs_8 + }, + { + info: { + path: 'use-cases/external-integration/feishu.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/external-integration/feishu.mdx' + }, + data: docs_9 + }, + { + info: { + path: 'use-cases/external-integration/iframe_integration.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/external-integration/iframe_integration.mdx' + }, + data: docs_10 + }, + { + info: { + path: 'use-cases/external-integration/official_account.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/external-integration/official_account.mdx' + }, + data: docs_11 + }, + { + info: { + path: 'use-cases/external-integration/onwechat.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/external-integration/onwechat.mdx' + }, + data: docs_12 + }, + { + info: { + path: 'use-cases/external-integration/openapi.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/external-integration/openapi.mdx' + }, + data: docs_13 + }, + { + info: { + path: 'use-cases/external-integration/wechat.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/external-integration/wechat.mdx' + }, + data: docs_14 + }, + { + info: { + path: 'use-cases/app-cases/dalle3.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/app-cases/dalle3.mdx' + }, + data: docs_15 + }, + { + info: { + path: 'use-cases/app-cases/english_essay_correction_bot.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/app-cases/english_essay_correction_bot.mdx' + }, + data: docs_16 + }, + { + info: { + path: 'use-cases/app-cases/feishu_webhook.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/app-cases/feishu_webhook.mdx' + }, + data: docs_17 + }, + { + info: { + path: 'use-cases/app-cases/fixingEvidence.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/app-cases/fixingEvidence.mdx' + }, + data: docs_18 + }, + { + info: { + path: 'use-cases/app-cases/google_search.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/app-cases/google_search.mdx' + }, + data: docs_19 + }, + { + info: { + path: 'use-cases/app-cases/lab_appointment.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/app-cases/lab_appointment.mdx' + }, + data: docs_20 + }, + { + info: { + path: 'use-cases/app-cases/multi_turn_translation_bot.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/app-cases/multi_turn_translation_bot.mdx' + }, + data: docs_21 + }, + { + info: { + path: 'use-cases/app-cases/submit_application_template.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/app-cases/submit_application_template.mdx' + }, + data: docs_22 + }, + { + info: { + path: 'use-cases/app-cases/translate-subtitle-using-gpt.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/app-cases/translate-subtitle-using-gpt.mdx' + }, + data: docs_23 + }, + { + info: { + path: 'protocol/index.mdx', + absolutePath: '/Users/dreamer/work/12312/FastGPT/document/content/docs/protocol/index.mdx' + }, + data: docs_24 + }, + { + info: { + path: 'protocol/open-source.en.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/protocol/open-source.en.mdx' + }, + data: docs_25 + }, + { + info: { + path: 'protocol/open-source.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/protocol/open-source.mdx' + }, + data: docs_26 + }, + { + info: { + path: 'protocol/privacy.en.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/protocol/privacy.en.mdx' + }, + data: docs_27 + }, + { + info: { + path: 'protocol/privacy.mdx', + absolutePath: '/Users/dreamer/work/12312/FastGPT/document/content/docs/protocol/privacy.mdx' + }, + data: docs_28 + }, + { + info: { + path: 'protocol/terms.en.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/protocol/terms.en.mdx' + }, + data: docs_29 + }, + { + info: { + path: 'protocol/terms.mdx', + absolutePath: '/Users/dreamer/work/12312/FastGPT/document/content/docs/protocol/terms.mdx' + }, + data: docs_30 + }, + { + info: { + path: 'introduction/shopping_cart/intro.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/shopping_cart/intro.mdx' + }, + data: docs_31 + }, + { + info: { + path: 'introduction/shopping_cart/saas.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/shopping_cart/saas.mdx' + }, + data: docs_32 + }, + { + info: { + path: 'introduction/development/configuration.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/configuration.mdx' + }, + data: docs_33 + }, + { + info: { + path: 'introduction/development/docker.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/docker.mdx' + }, + data: docs_34 + }, + { + info: { + path: 'introduction/development/faq.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/faq.mdx' + }, + data: docs_35 + }, + { + info: { + path: 'introduction/development/intro.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/intro.mdx' + }, + data: docs_36 + }, + { + info: { + path: 'introduction/development/sealos.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/sealos.mdx' + }, + data: docs_37 + }, + { + info: { + path: 'introduction/FAQ/app.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/FAQ/app.mdx' + }, + data: docs_38 + }, + { + info: { + path: 'introduction/FAQ/chat.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/FAQ/chat.mdx' + }, + data: docs_39 + }, + { + info: { + path: 'introduction/FAQ/dataset.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/FAQ/dataset.mdx' + }, + data: docs_40 + }, + { + info: { + path: 'introduction/FAQ/docker.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/FAQ/docker.mdx' + }, + data: docs_41 + }, + { + info: { + path: 'introduction/FAQ/error.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/FAQ/error.mdx' + }, + data: docs_42 + }, + { + info: { + path: 'introduction/FAQ/external_channel_integration.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/FAQ/external_channel_integration.mdx' + }, + data: docs_43 + }, + { + info: { + path: 'introduction/FAQ/other.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/FAQ/other.mdx' + }, + data: docs_44 + }, + { + info: { + path: 'introduction/FAQ/points_consumption.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/FAQ/points_consumption.mdx' + }, + data: docs_45 + }, + { + info: { + path: 'introduction/FAQ/privateDeploy.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/FAQ/privateDeploy.mdx' + }, + data: docs_46 + }, + { + info: { + path: 'introduction/development/custom-models/bge-rerank.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/custom-models/bge-rerank.mdx' + }, + data: docs_47 + }, + { + info: { + path: 'introduction/development/custom-models/chatglm2-m3e.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/custom-models/chatglm2-m3e.mdx' + }, + data: docs_48 + }, + { + info: { + path: 'introduction/development/custom-models/chatglm2.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/custom-models/chatglm2.mdx' + }, + data: docs_49 + }, + { + info: { + path: 'introduction/development/custom-models/m3e.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/custom-models/m3e.mdx' + }, + data: docs_50 + }, + { + info: { + path: 'introduction/development/custom-models/marker.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/custom-models/marker.mdx' + }, + data: docs_51 + }, + { + info: { + path: 'introduction/development/custom-models/ollama.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/custom-models/ollama.mdx' + }, + data: docs_52 + }, + { + info: { + path: 'introduction/development/custom-models/xinference.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/custom-models/xinference.mdx' + }, + data: docs_53 + }, + { + info: { + path: 'introduction/development/design/dataset.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/design/dataset.mdx' + }, + data: docs_54 + }, + { + info: { + path: 'introduction/development/design/design_plugin.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/design/design_plugin.mdx' + }, + data: docs_55 + }, + { + info: { + path: 'introduction/development/modelConfig/ai-proxy.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/modelConfig/ai-proxy.mdx' + }, + data: docs_56 + }, + { + info: { + path: 'introduction/development/modelConfig/intro.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/modelConfig/intro.mdx' + }, + data: docs_57 + }, + { + info: { + path: 'introduction/development/modelConfig/one-api.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/modelConfig/one-api.mdx' + }, + data: docs_58 + }, + { + info: { + path: 'introduction/development/modelConfig/ppio.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/modelConfig/ppio.mdx' + }, + data: docs_59 + }, + { + info: { + path: 'introduction/development/modelConfig/siliconCloud.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/modelConfig/siliconCloud.mdx' + }, + data: docs_60 + }, + { + info: { + path: 'introduction/development/proxy/cloudflare.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/proxy/cloudflare.mdx' + }, + data: docs_61 + }, + { + info: { + path: 'introduction/development/proxy/http_proxy.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/proxy/http_proxy.mdx' + }, + data: docs_62 + }, + { + info: { + path: 'introduction/development/proxy/nginx.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/proxy/nginx.mdx' + }, + data: docs_63 + }, + { + info: { + path: 'introduction/development/openapi/chat.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/openapi/chat.mdx' + }, + data: docs_64 + }, + { + info: { + path: 'introduction/development/openapi/dataset.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/openapi/dataset.mdx' + }, + data: docs_65 + }, + { + info: { + path: 'introduction/development/openapi/intro.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/openapi/intro.mdx' + }, + data: docs_66 + }, + { + info: { + path: 'introduction/development/openapi/share.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/openapi/share.mdx' + }, + data: docs_67 + }, + { + info: { + path: 'introduction/guide/DialogBoxes/htmlRendering.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/DialogBoxes/htmlRendering.mdx' + }, + data: docs_68 + }, + { + info: { + path: 'introduction/guide/DialogBoxes/quoteList.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/DialogBoxes/quoteList.mdx' + }, + data: docs_69 + }, + { + info: { + path: 'introduction/guide/admin/sso.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/admin/sso.mdx' + }, + data: docs_70 + }, + { + info: { + path: 'introduction/guide/admin/teamMode.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/admin/teamMode.mdx' + }, + data: docs_71 + }, + { + info: { + path: 'introduction/development/migration/docker_db.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/migration/docker_db.mdx' + }, + data: docs_72 + }, + { + info: { + path: 'introduction/development/migration/docker_mongo.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/migration/docker_mongo.mdx' + }, + data: docs_73 + }, + { + info: { + path: 'introduction/guide/dashboard/basic-mode.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/basic-mode.mdx' + }, + data: docs_74 + }, + { + info: { + path: 'introduction/guide/dashboard/gapier.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/gapier.mdx' + }, + data: docs_75 + }, + { + info: { + path: 'introduction/guide/dashboard/intro.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/intro.mdx' + }, + data: docs_76 + }, + { + info: { + path: 'introduction/guide/dashboard/mcp_server.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/mcp_server.mdx' + }, + data: docs_77 + }, + { + info: { + path: 'introduction/guide/dashboard/mcp_tools.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/mcp_tools.mdx' + }, + data: docs_78 + }, + { + info: { + path: 'introduction/guide/knowledge_base/RAG.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/knowledge_base/RAG.mdx' + }, + data: docs_79 + }, + { + info: { + path: 'introduction/guide/knowledge_base/api_dataset.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/knowledge_base/api_dataset.mdx' + }, + data: docs_80 + }, + { + info: { + path: 'introduction/guide/knowledge_base/dataset_engine.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/knowledge_base/dataset_engine.mdx' + }, + data: docs_81 + }, + { + info: { + path: 'introduction/guide/knowledge_base/externalFile.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/knowledge_base/externalFile.mdx' + }, + data: docs_82 + }, + { + info: { + path: 'introduction/guide/knowledge_base/lark_dataset.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/knowledge_base/lark_dataset.mdx' + }, + data: docs_83 + }, + { + info: { + path: 'introduction/guide/knowledge_base/template.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/knowledge_base/template.mdx' + }, + data: docs_84 + }, + { + info: { + path: 'introduction/guide/knowledge_base/third_dataset.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/knowledge_base/third_dataset.mdx' + }, + data: docs_85 + }, + { + info: { + path: 'introduction/guide/knowledge_base/websync.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/knowledge_base/websync.mdx' + }, + data: docs_86 + }, + { + info: { + path: 'introduction/guide/knowledge_base/yuque_dataset.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/knowledge_base/yuque_dataset.mdx' + }, + data: docs_87 + }, + { + info: { + path: 'introduction/guide/course/ai_settings.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/course/ai_settings.mdx' + }, + data: docs_88 + }, + { + info: { + path: 'introduction/guide/course/chat_input_guide.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/course/chat_input_guide.mdx' + }, + data: docs_89 + }, + { + info: { + path: 'introduction/guide/course/collection_tags.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/course/collection_tags.mdx' + }, + data: docs_90 + }, + { + info: { + path: 'introduction/guide/course/fileInput.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/course/fileInput.mdx' + }, + data: docs_91 + }, + { + info: { + path: 'introduction/guide/course/quick-start.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/course/quick-start.mdx' + }, + data: docs_92 + }, + { + info: { + path: 'introduction/guide/plugins/bing_search_plugin.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/plugins/bing_search_plugin.mdx' + }, + data: docs_93 + }, + { + info: { + path: 'introduction/guide/plugins/dev_system_tool.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/plugins/dev_system_tool.mdx' + }, + data: docs_94 + }, + { + info: { + path: 'introduction/guide/plugins/doc2x_plugin_guide.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/plugins/doc2x_plugin_guide.mdx' + }, + data: docs_95 + }, + { + info: { + path: 'introduction/guide/plugins/google_search_plugin_guide.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/plugins/google_search_plugin_guide.mdx' + }, + data: docs_96 + }, + { + info: { + path: 'introduction/guide/plugins/how_to_submit_system_plugin.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/plugins/how_to_submit_system_plugin.mdx' + }, + data: docs_97 + }, + { + info: { + path: 'introduction/guide/plugins/searxng_plugin_guide.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/plugins/searxng_plugin_guide.mdx' + }, + data: docs_98 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/ai_chat.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/ai_chat.mdx' + }, + data: docs_99 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/content_extract.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/content_extract.mdx' + }, + data: docs_100 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/coreferenceResolution.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/coreferenceResolution.mdx' + }, + data: docs_101 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/custom_feedback.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/custom_feedback.mdx' + }, + data: docs_102 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/dataset_search.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/dataset_search.mdx' + }, + data: docs_103 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/document_parsing.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/document_parsing.mdx' + }, + data: docs_104 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/form_input.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/form_input.mdx' + }, + data: docs_105 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/http.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/http.mdx' + }, + data: docs_106 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/knowledge_base_search_merge.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/knowledge_base_search_merge.mdx' + }, + data: docs_107 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/laf.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/laf.mdx' + }, + data: docs_108 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/loop.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/loop.mdx' + }, + data: docs_109 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/question_classify.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/question_classify.mdx' + }, + data: docs_110 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/reply.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/reply.mdx' + }, + data: docs_111 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/sandbox.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/sandbox.mdx' + }, + data: docs_112 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/text_editor.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/text_editor.mdx' + }, + data: docs_113 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/tfswitch.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/tfswitch.mdx' + }, + data: docs_114 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/tool.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/tool.mdx' + }, + data: docs_115 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/user-selection.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/user-selection.mdx' + }, + data: docs_116 + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/variable_update.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/variable_update.mdx' + }, + data: docs_117 + }, + { + info: { + path: 'introduction/development/upgrading/40.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/40.mdx' + }, + data: docs_118 + }, + { + info: { + path: 'introduction/development/upgrading/41.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/41.mdx' + }, + data: docs_119 + }, + { + info: { + path: 'introduction/development/upgrading/4100.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4100.mdx' + }, + data: docs_120 + }, + { + info: { + path: 'introduction/development/upgrading/4101.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4101.mdx' + }, + data: docs_121 + }, + { + info: { + path: 'introduction/development/upgrading/4110.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4110.mdx' + }, + data: docs_122 + }, + { + info: { + path: 'introduction/development/upgrading/42.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/42.mdx' + }, + data: docs_123 + }, + { + info: { + path: 'introduction/development/upgrading/421.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/421.mdx' + }, + data: docs_124 + }, + { + info: { + path: 'introduction/development/upgrading/43.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/43.mdx' + }, + data: docs_125 + }, + { + info: { + path: 'introduction/development/upgrading/44.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/44.mdx' + }, + data: docs_126 + }, + { + info: { + path: 'introduction/development/upgrading/441.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/441.mdx' + }, + data: docs_127 + }, + { + info: { + path: 'introduction/development/upgrading/442.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/442.mdx' + }, + data: docs_128 + }, + { + info: { + path: 'introduction/development/upgrading/445.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/445.mdx' + }, + data: docs_129 + }, + { + info: { + path: 'introduction/development/upgrading/446.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/446.mdx' + }, + data: docs_130 + }, + { + info: { + path: 'introduction/development/upgrading/447.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/447.mdx' + }, + data: docs_131 + }, + { + info: { + path: 'introduction/development/upgrading/45.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/45.mdx' + }, + data: docs_132 + }, + { + info: { + path: 'introduction/development/upgrading/451.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/451.mdx' + }, + data: docs_133 + }, + { + info: { + path: 'introduction/development/upgrading/452.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/452.mdx' + }, + data: docs_134 + }, + { + info: { + path: 'introduction/development/upgrading/46.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/46.mdx' + }, + data: docs_135 + }, + { + info: { + path: 'introduction/development/upgrading/461.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/461.mdx' + }, + data: docs_136 + }, + { + info: { + path: 'introduction/development/upgrading/462.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/462.mdx' + }, + data: docs_137 + }, + { + info: { + path: 'introduction/development/upgrading/463.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/463.mdx' + }, + data: docs_138 + }, + { + info: { + path: 'introduction/development/upgrading/464.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/464.mdx' + }, + data: docs_139 + }, + { + info: { + path: 'introduction/development/upgrading/465.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/465.mdx' + }, + data: docs_140 + }, + { + info: { + path: 'introduction/development/upgrading/466.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/466.mdx' + }, + data: docs_141 + }, + { + info: { + path: 'introduction/development/upgrading/467.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/467.mdx' + }, + data: docs_142 + }, + { + info: { + path: 'introduction/development/upgrading/468.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/468.mdx' + }, + data: docs_143 + }, + { + info: { + path: 'introduction/development/upgrading/469.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/469.mdx' + }, + data: docs_144 + }, + { + info: { + path: 'introduction/development/upgrading/47.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/47.mdx' + }, + data: docs_145 + }, + { + info: { + path: 'introduction/development/upgrading/471.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/471.mdx' + }, + data: docs_146 + }, + { + info: { + path: 'introduction/development/upgrading/48.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/48.mdx' + }, + data: docs_147 + }, + { + info: { + path: 'introduction/development/upgrading/481.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/481.mdx' + }, + data: docs_148 + }, + { + info: { + path: 'introduction/development/upgrading/4810.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4810.mdx' + }, + data: docs_149 + }, + { + info: { + path: 'introduction/development/upgrading/4811.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4811.mdx' + }, + data: docs_150 + }, + { + info: { + path: 'introduction/development/upgrading/4812.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4812.mdx' + }, + data: docs_151 + }, + { + info: { + path: 'introduction/development/upgrading/4813.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4813.mdx' + }, + data: docs_152 + }, + { + info: { + path: 'introduction/development/upgrading/4814.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4814.mdx' + }, + data: docs_153 + }, + { + info: { + path: 'introduction/development/upgrading/4815.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4815.mdx' + }, + data: docs_154 + }, + { + info: { + path: 'introduction/development/upgrading/4816.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4816.mdx' + }, + data: docs_155 + }, + { + info: { + path: 'introduction/development/upgrading/4817.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4817.mdx' + }, + data: docs_156 + }, + { + info: { + path: 'introduction/development/upgrading/4818.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4818.mdx' + }, + data: docs_157 + }, + { + info: { + path: 'introduction/development/upgrading/4819.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4819.mdx' + }, + data: docs_158 + }, + { + info: { + path: 'introduction/development/upgrading/482.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/482.mdx' + }, + data: docs_159 + }, + { + info: { + path: 'introduction/development/upgrading/4820.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4820.mdx' + }, + data: docs_160 + }, + { + info: { + path: 'introduction/development/upgrading/4821.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4821.mdx' + }, + data: docs_161 + }, + { + info: { + path: 'introduction/development/upgrading/4822.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4822.mdx' + }, + data: docs_162 + }, + { + info: { + path: 'introduction/development/upgrading/4823.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4823.mdx' + }, + data: docs_163 + }, + { + info: { + path: 'introduction/development/upgrading/483.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/483.mdx' + }, + data: docs_164 + }, + { + info: { + path: 'introduction/development/upgrading/484.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/484.mdx' + }, + data: docs_165 + }, + { + info: { + path: 'introduction/development/upgrading/485.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/485.mdx' + }, + data: docs_166 + }, + { + info: { + path: 'introduction/development/upgrading/486.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/486.mdx' + }, + data: docs_167 + }, + { + info: { + path: 'introduction/development/upgrading/487.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/487.mdx' + }, + data: docs_168 + }, + { + info: { + path: 'introduction/development/upgrading/488.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/488.mdx' + }, + data: docs_169 + }, + { + info: { + path: 'introduction/development/upgrading/489.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/489.mdx' + }, + data: docs_170 + }, + { + info: { + path: 'introduction/development/upgrading/490.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/490.mdx' + }, + data: docs_171 + }, + { + info: { + path: 'introduction/development/upgrading/491.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/491.mdx' + }, + data: docs_172 + }, + { + info: { + path: 'introduction/development/upgrading/4910.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4910.mdx' + }, + data: docs_173 + }, + { + info: { + path: 'introduction/development/upgrading/4911.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4911.mdx' + }, + data: docs_174 + }, + { + info: { + path: 'introduction/development/upgrading/4912.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4912.mdx' + }, + data: docs_175 + }, + { + info: { + path: 'introduction/development/upgrading/4913.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4913.mdx' + }, + data: docs_176 + }, + { + info: { + path: 'introduction/development/upgrading/4914.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/4914.mdx' + }, + data: docs_177 + }, + { + info: { + path: 'introduction/development/upgrading/492.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/492.mdx' + }, + data: docs_178 + }, + { + info: { + path: 'introduction/development/upgrading/493.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/493.mdx' + }, + data: docs_179 + }, + { + info: { + path: 'introduction/development/upgrading/494.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/494.mdx' + }, + data: docs_180 + }, + { + info: { + path: 'introduction/development/upgrading/495.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/495.mdx' + }, + data: docs_181 + }, + { + info: { + path: 'introduction/development/upgrading/496.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/496.mdx' + }, + data: docs_182 + }, + { + info: { + path: 'introduction/development/upgrading/497.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/497.mdx' + }, + data: docs_183 + }, + { + info: { + path: 'introduction/development/upgrading/498.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/498.mdx' + }, + data: docs_184 + }, + { + info: { + path: 'introduction/development/upgrading/499.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/499.mdx' + }, + data: docs_185 + }, + { + info: { + path: 'introduction/development/upgrading/intro.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/intro.mdx' + }, + data: docs_186 + }, + { + info: { + path: 'introduction/guide/team_permissions/invitation_link.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/team_permissions/invitation_link.mdx' + }, + data: docs_187 + }, + { + info: { + path: 'introduction/guide/team_permissions/team_roles_permissions.mdx', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/team_permissions/team_roles_permissions.mdx' + }, + data: docs_188 + } + ], + [ + { + info: { + path: 'api/meta.json', + absolutePath: '/Users/dreamer/work/12312/FastGPT/document/content/docs/api/meta.json' + }, + data: { + title: 'API手册', + pages: ['api1', 'api2'], + description: 'FastGPT API手册', + root: true + } + }, + { + info: { + path: 'introduction/meta.en.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/meta.en.json' + }, + data: { + title: 'FastGPT Docs', + pages: ['guide', 'development', 'FAQ', 'shopping_cart', 'community'], + root: true + } + }, + { + info: { + path: 'introduction/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/meta.json' + }, + data: { + title: 'FastGPT Docs', + pages: [ + '[Handshake][联系我们](https://fael3z0zfze.feishu.cn/share/base/form/shrcnRxj3utrzjywsom96Px4sud)', + 'index', + 'guide', + 'development', + 'FAQ', + 'shopping_cart', + 'community' + ], + root: true + } + }, + { + info: { + path: 'protocol/meta.json', + absolutePath: '/Users/dreamer/work/12312/FastGPT/document/content/docs/protocol/meta.json' + }, + data: { + title: '协议', + pages: ['index', 'open-source', 'terms', 'privacy'], + description: '协议', + root: true + } + }, + { + info: { + path: 'use-cases/meta.json', + absolutePath: '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/meta.json' + }, + data: { + title: '使用案例', + pages: ['index', 'external-integration', 'app-cases'], + description: '有关 FastGPT 其他实践案例的更多信息', + root: true + } + }, + { + info: { + path: 'introduction/FAQ/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/FAQ/meta.json' + }, + data: { + title: 'FAQ', + pages: [ + 'docker', + 'privateDeploy', + 'chat', + 'app', + 'dataset', + 'external_channel_integration', + 'error', + 'points_consumption', + 'other' + ], + description: 'FastGPT 常见问题' + } + }, + { + info: { + path: 'introduction/development/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/meta.json' + }, + data: { + title: '开发与部署指南', + pages: [ + 'intro', + 'sealos', + 'configuration', + 'docker', + 'faq', + 'modelConfig', + 'upgrading', + 'openapi', + 'custom-models', + 'proxy', + 'migration', + 'design' + ], + description: 'FastGPT 开发与部署指南', + icon: '🔧' + } + }, + { + info: { + path: 'introduction/guide/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/meta.json' + }, + data: { + title: '功能介绍', + pages: [ + 'course', + 'dashboard', + 'plugins', + 'knowledge_base', + 'team_permissions', + 'DialogBoxes', + 'admin' + ], + description: 'FastGPT 功能介绍' + } + }, + { + info: { + path: 'introduction/shopping_cart/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/shopping_cart/meta.json' + }, + data: { title: '收费说明', pages: ['saas', 'intro'] } + }, + { + info: { + path: 'use-cases/app-cases/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/app-cases/meta.json' + }, + data: { + title: '应用搭建案例', + pages: [ + 'submit_application_template', + 'translate-subtitle-using-gpt', + 'multi_turn_translation_bot', + 'english_essay_correction_bot', + 'fixingEvidence', + 'lab_appointment', + 'dalle3', + 'google_search', + 'feishu_webhook' + ], + description: 'FastGPT 应用场景及功能实现的搭建案例' + } + }, + { + info: { + path: 'introduction/development/design/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/design/meta.json' + }, + data: { title: '设计方案', pages: ['dataset', 'design_plugin'] } + }, + { + info: { + path: 'introduction/development/migration/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/migration/meta.json' + }, + data: { title: '迁移&备份', pages: ['docker_db', 'docker_mongo'] } + }, + { + info: { + path: 'introduction/development/modelConfig/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/modelConfig/meta.json' + }, + data: { + title: '模型配置方案', + pages: ['ai-proxy', 'intro', 'one-api', 'siliconCloud', 'ppio'] + } + }, + { + info: { + path: 'introduction/development/proxy/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/proxy/meta.json' + }, + data: { + title: '代理方案', + pages: ['nginx', 'http_proxy', 'cloudflare'], + description: 'FastGPT 私有化部署代理方案' + } + }, + { + info: { + path: 'introduction/development/openapi/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/openapi/meta.json' + }, + data: { title: 'OpenAPI接口文档', pages: ['intro', 'chat', 'dataset', 'share'] } + }, + { + info: { + path: 'introduction/guide/DialogBoxes/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/DialogBoxes/meta.json' + }, + data: { + title: '对话框', + pages: ['htmlRendering', 'quoteList'], + description: '对话框组件,支持多种交互方式,提升用户在应用中的交互体验。' + } + }, + { + info: { + path: 'introduction/guide/admin/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/admin/meta.json' + }, + data: { title: '商业版后台', pages: ['sso', 'teamMode'], description: '商业版后台使用教程' } + }, + { + info: { + path: 'use-cases/external-integration/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/use-cases/external-integration/meta.json' + }, + data: { + title: '外部调用 FastGPT', + pages: [ + 'openapi', + 'feishu', + 'dingtalk', + 'official_account', + 'onwechat', + 'wechat', + 'iframe_integration' + ], + description: '外部应用通过多种方式调用 FastGPT 功能的教程' + } + }, + { + info: { + path: 'introduction/development/custom-models/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/custom-models/meta.json' + }, + data: { + title: '本地模型使用', + pages: ['marker', 'xinference', 'bge-rerank', 'chatglm2', 'm3e', 'chatglm2-m3e', 'ollama'] + } + }, + { + info: { + path: 'introduction/guide/course/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/course/meta.json' + }, + data: { + title: '基础教程', + pages: ['quick-start', 'ai_settings', 'chat_input_guide', 'collection_tags', 'fileInput'], + description: 'FastGPT 基础教程' + } + }, + { + info: { + path: 'introduction/development/upgrading/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/development/upgrading/meta.json' + }, + data: { + title: '版本更新/升级操作', + pages: [ + 'intro', + '4101', + '4100', + '4914', + '4913', + '4912', + '4911', + '4910', + '499', + '498', + '497', + '496', + '495', + '494', + '493', + '492', + '491', + '490', + '4823', + '4822', + '4821', + '4820', + '4819', + '4818', + '4817', + '4816', + '4815', + '4814', + '4813', + '4812', + '4811', + '4810', + '489', + '488', + '487', + '486', + '485', + '484', + '483', + '482', + '481', + '48', + '471', + '47', + '469', + '468', + '467', + '466', + '465', + '464', + '463', + '462', + '461', + '46', + '452', + '451', + '45', + '447', + '446', + '445', + '442', + '441', + '44', + '43', + '421', + '42', + '41', + '40' + ], + description: 'FastGPT 版本更新介绍及升级操作' + } + }, + { + info: { + path: 'introduction/guide/knowledge_base/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/knowledge_base/meta.json' + }, + data: { + title: '知识库', + pages: [ + 'RAG', + 'dataset_engine', + 'api_dataset', + 'lark_dataset', + 'yuque_dataset', + 'websync', + 'externalFile', + 'third_dataset', + 'template' + ], + description: '知识库的基础原理、搜索方案、Web站点同步和外部文件知识库的使用方法。' + } + }, + { + info: { + path: 'introduction/guide/dashboard/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/meta.json' + }, + data: { + title: '工作台', + pages: ['basic-mode', 'intro', 'workflow', 'mcp_server', 'mcp_tools', 'gapier'], + description: 'FastGPT 工作台及工作流节点的使用说明' + } + }, + { + info: { + path: 'introduction/guide/plugins/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/plugins/meta.json' + }, + data: { + title: '系统插件', + pages: [ + 'dev_system_tool', + 'how_to_submit_system_plugin', + 'searxng_plugin_guide', + 'google_search_plugin_guide', + 'bing_search_plugin', + 'doc2x_plugin_guide' + ], + description: '介绍如何使用和提交系统插件,以及各插件的填写说明' + } + }, + { + info: { + path: 'introduction/guide/team_permissions/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/team_permissions/meta.json' + }, + data: { + title: '团队与权限', + pages: ['team_roles_permissions', 'invitation_link'], + description: '团队管理、成员组与权限设置,确保团队协作中的数据安全和权限分配合理。' + } + }, + { + info: { + path: 'introduction/guide/dashboard/workflow/meta.json', + absolutePath: + '/Users/dreamer/work/12312/FastGPT/document/content/docs/introduction/guide/dashboard/workflow/meta.json' + }, + data: { + title: '工作流节点', + pages: [ + 'ai_chat', + 'dataset_search', + 'tool', + 'question_classify', + 'content_extract', + 'user-selection', + 'form_input', + 'text_editor', + 'reply', + 'document_parsing', + 'http', + 'tfswitch', + 'variable_update', + 'sandbox', + 'loop', + 'knowledge_base_search_merge', + 'coreferenceResolution', + 'laf', + 'custom_feedback' + ], + description: 'FastGPT 工作流节点设置和使用指南' + } + } + ] +); diff --git a/document/.source/source.config.mjs b/document/.source/source.config.mjs new file mode 100644 index 000000000000..20996343a0b0 --- /dev/null +++ b/document/.source/source.config.mjs @@ -0,0 +1,19 @@ +// source.config.ts +import { defineConfig, defineDocs, frontmatterSchema, metaSchema } from "fumadocs-mdx/config"; +var docs = defineDocs({ + docs: { + schema: frontmatterSchema + }, + meta: { + schema: metaSchema + } +}); +var source_config_default = defineConfig({ + mdxOptions: { + // MDX options + } +}); +export { + source_config_default as default, + docs +}; diff --git a/document/content/docs/introduction/development/upgrading/4100.mdx b/document/content/docs/introduction/development/upgrading/4100.mdx index 05b84e2efeb9..e953dd3095d2 100644 --- a/document/content/docs/introduction/development/upgrading/4100.mdx +++ b/document/content/docs/introduction/development/upgrading/4100.mdx @@ -1,6 +1,6 @@ --- -title: V4.10.0 -description: FastGPT V4.10.0 更新说明 +title: 'V4.10.0' +description: 'FastGPT V4.10.0 更新说明' --- ## 更新指南 @@ -25,7 +25,7 @@ PLUGIN_TOKEN=刚修改的 AUTH_TOKEN 值 ![](/imgs/sealos-s3.png) -- 部署`fastgpt-plugin`服务,镜像`registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-plugin:v0.1.0`,无需公网访问,设置环境变量: +- 部署`fastgpt-plugin`服务,镜像`registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-plugin:v0.1.0`,内网暴露端口3000,无需公网访问,设置环境变量: ``` AUTH_TOKEN=鉴权 token @@ -54,4 +54,4 @@ PLUGIN_TOKEN=刚修改的 AUTH_TOKEN 值 1. 独立系统工具服务,支持系统工具独立开发和调试。 2. 更新系统工具开发指南[系统工具开发指南](/docs/guide/plugins/dev_system_tool/)。 -3. 更新[系统工具设计文档](/docs/guide/plugins/design_plugin/)。 +3. 更新[系统工具设计文档](/docs/guide/plugins/design_plugin/)。 \ No newline at end of file diff --git a/document/content/docs/introduction/development/upgrading/4101.mdx b/document/content/docs/introduction/development/upgrading/4101.mdx index c66cf6c9de27..6b73e2c39b2a 100644 --- a/document/content/docs/introduction/development/upgrading/4101.mdx +++ b/document/content/docs/introduction/development/upgrading/4101.mdx @@ -1,13 +1,13 @@ --- -title: V4.10.1 -description: FastGPT V4.10.1 更新说明 +title: 'V4.10.1' +description: 'FastGPT V4.10.1 更新说明' --- ## 更新指南 ### 1. 更新镜像: -- 更新 FastGPT 镜像tag: v4.10.1-fix +- 更新 FastGPT 镜像tag: v4.10.1-fix3 - 更新 FastGPT 商业版镜像tag: v4.10.1 - 更新 fastgpt-plugin 镜像 tag: v0.1.3 - mcp_server 无需更新 @@ -18,7 +18,7 @@ description: FastGPT V4.10.1 更新说明 该脚本仅需商业版用户执行。 -从任意终端,发起 1 个 HTTP 请求。其中 `{{rootkey}}` 替换成环境变量里的 `rootkey`;`{{host}}` 替换成**FastGPT 域名**。 +从任意终端,发起 1 个 HTTP 请求。其中 {{rootkey}} 替换成环境变量里的 `rootkey`;{{host}} 替换成**FastGPT 域名**。 ```bash curl --location --request POST 'https://{{host}}/api/admin/initv4101' \ @@ -52,4 +52,4 @@ curl --location --request POST 'https://{{host}}/api/admin/initv4101' \ 1. 新增 Flux 官方绘图工具。 2. 新增 JinaAI 工具集。 3. 新增阿里百炼 Flux 和通义万相绘图。 -4. 纠正硅基流动画图工具输出值类型。 +4. 纠正硅基流动画图工具输出值类型。 \ No newline at end of file diff --git a/document/content/docs/introduction/development/upgrading/4110.mdx b/document/content/docs/introduction/development/upgrading/4110.mdx new file mode 100644 index 000000000000..4e7379c0263f --- /dev/null +++ b/document/content/docs/introduction/development/upgrading/4110.mdx @@ -0,0 +1,54 @@ +--- +title: 'V4.11.0' +description: 'FastGPT V4.11.0 更新说明' +--- + +## 升级说明 + +### 1. 修改环境变量 + +FastGPT 商业版用户,可以增加评估相关环境变量,并在更新后,在管理端点击一次保存。 + +``` +EVAL_CONCURRENCY=3 # 评估单节点并发数 +EVAL_LINE_LIMIT=1000 # 评估文件最大行数 +``` + +### 2. 更新镜像: + +- 更新 FastGPT 镜像tag: v4.11.0 +- 更新 FastGPT 商业版镜像tag: v4.11.0 +- 更新 fastgpt-plugin 镜像 tag: v0.1.5 +- mcp_server 无需更新 +- Sandbox 无需更新 +- AIProxy 无需更新 + +## 项目调整 + +1. 移除所有**开源功能**的限制,包括:应用数量和知识库数量上限。 +2. 调整 RoadMap,增加`上下文管理`,`AI 生成工作流`,`高级编排 DeBug 调试模式`等计划。 +3. 海外版域名将`tryfastgpt.ai`调整成`fastgpt.io`。 + +## 🚀 新增内容 + +1. 商业版增加**应用评测(Beta 版)**,可对应用进行有监督评分。 +2. 工作流部分节点支持报错捕获分支。 +3. 对话页独立 tab 页面UX。 +4. 支持 Signoz traces 和 logs 系统追踪。 +5. 新增 Gemini2.5, grok4, kimi 模型配置。 +6. 模型调用日志增加首字响应时长和请求 IP。 + +## ⚙️ 优化 + +1. 优化代码,避免递归造成的内存堆积,尤其在高并发连续的进行知识库预处理时,可显著降低内存消耗。 +2. 知识库训练:支持全部重试当前集合异常数据。 +3. 工作流 valueTypeFormat,避免数据类型不一致。 +4. 知识库列表搜索时,正则未进行特殊词替换。 + +## 🐛 修复 + +1. 问题分类和内容提取节点,默认模型无法通过前端校验,导致工作流无法运行和保存发布。 + +## 🔨 工具更新 + +1. Markdown 文本转 Docx 和 Xlsx 文件。 \ No newline at end of file diff --git a/document/content/docs/introduction/shopping_cart/intro.mdx b/document/content/docs/introduction/shopping_cart/intro.mdx index fe5bc62b225f..68b04cbc59a3 100644 --- a/document/content/docs/introduction/shopping_cart/intro.mdx +++ b/document/content/docs/introduction/shopping_cart/intro.mdx @@ -1,6 +1,6 @@ --- -title: 商业版 -description: FastGPT 商业版相关说明 +title: '商业版' +description: 'FastGPT 商业版相关说明' --- import { Alert } from '@/components/docs/Alert'; @@ -11,31 +11,27 @@ FastGPT 商业版是基于 FastGPT 开源版的增强版本,增加了一些独 ## 功能差异 - | | 开源版 | 商业版 | 线上版 | | ---- | ---- | ---- | ---- | | 应用管理与高级编排 | ✅ | ✅ | ✅ | | 文档知识库 | ✅ | ✅ | ✅ | | 外部使用 | ✅ | ✅ | ✅ | | API 知识库 | ✅ | ✅ | ✅ | -| 最大应用数量 | 500 | 无限制 | 由付费套餐决定 | -| 最大知识库数量(单个知识库内容无限制) | 30 | 无限制 | 由付费套餐决定 | | 自定义版权信息 | ❌ | ✅ | 设计中 | | 多租户与支付 | ❌ | ✅ | ✅ | | 团队空间 & 权限 | ❌ | ✅ | ✅ | | 应用发布安全配置 | ❌ | ✅ | ✅ | | 内容审核 | ❌ | ✅ | ✅ | +| 应用评测 | ❌ | ✅ | ✅ | | web站点同步 | ❌ | ✅ | ✅ | -| 主流文档库接入(目前支持:语雀、飞书) | ❌ | ✅ | ✅ | -| 增强训练模式 | ❌ | ✅ | ✅ | +| 图片知识库 | ❌ | ✅ | ✅ | +| 知识库索引增强 | ❌ | ✅ | ✅ | | 第三方应用快速接入(飞书、公众号) | ❌ | ✅ | ✅ | | 管理后台 | ❌ | ✅ | 不需要 | | SSO 登录(可自定义,也可使用内置:Github、公众号、钉钉、谷歌等) | ❌ | ✅ | 不需要 | -| 图片知识库 | ❌ | 设计中 | 设计中 | | 对话日志运营分析 | ❌ | 设计中 | 设计中 | | 完整商业授权 | ❌ | ✅ | ✅ | - ## 商业版软件价格 FastGPT 商业版软件根据不同的部署方式,分为 3 类收费模式。下面列举各种部署方式一些常规内容,如仍有问题,可[联系咨询](https://fael3z0zfze.feishu.cn/share/base/form/shrcnRxj3utrzjywsom96Px4sud) @@ -48,14 +44,12 @@ FastGPT 商业版软件根据不同的部署方式,分为 3 类收费模式。 **特有服务** - | 部署方式 | 特有服务 | 上线时长 | 标品价格 | | ---- | ---- | ---- | ---- | | Sealos全托管 | 1. 有效期内免费升级。
2. 免运维服务&数据库。 | 半天 | 10000元起/月(3个月起)

120000元起/年
8C32G 资源,额外资源另外收费。 | | Sealos全托管(多节点) | 1. 有效期内免费升级。
2. 免运维服务&数据库。 | 半天 | 22000元起/月(3个月起)

264000元起/年
32C128G 资源,额外资源另外收费。 | | 自有服务器部署 | 1. 6个版本免费升级支持。 | 14天内 | 具体价格和优惠可[联系咨询](https://fael3z0zfze.feishu.cn/share/base/form/shrcnRxj3utrzjywsom96Px4sud) | - - 6个版本的升级服务不是指只能用 6 个版本,而是指依赖 FastGPT 团队提供的升级服务。大部分时候,建议自行升级,也不麻烦。 - 全托管版本适合技术人员紧缺的团队,仅需关注业务推动,无需关心服务是否正常运行。 @@ -108,4 +102,4 @@ Sealos 云服务属于按量计费,下面是它的价格表: | | | | | ---- | ---- | ---- | -| ![alt text](/imgs/image-55.png) | ![alt text](/imgs/image-56.png) | ![alt text](/imgs/image-57.png) | +| ![alt text](/imgs/image-55.png) | ![alt text](/imgs/image-56.png) | ![alt text](/imgs/image-57.png) | \ No newline at end of file