From 6b64641042342fafe9da6026c6391bc8280fd4f7 Mon Sep 17 00:00:00 2001 From: Scott Davidson <49713135+sd109@users.noreply.github.com> Date: Mon, 17 Nov 2025 06:21:27 +0000 Subject: [PATCH 01/13] Fix: default model base url extraction logic (#11263) ### What problem does this PR solve? Fixes an issue where default models which used the same factory but different base URLs would all be initialised with the default chat model's base URL and would ignore e.g. the embedding model's base URL config. For example, with the following service config, the embedding and reranker models would end up using the base URL for the default chat model (i.e. `llm1.example.com`): ```yaml ragflow: service_conf: user_default_llm: factory: OpenAI-API-Compatible api_key: not-used default_models: chat_model: name: llm1 base_url: https://llm1.example.com/v1 embedding_model: name: llm2 base_url: https://llm2.example.com/v1 rerank_model: name: llm3 base_url: https://llm3.example.com/v1/rerank llm_factories: factory_llm_infos: - name: OpenAI-API-Compatible logo: "" tags: "LLM,TEXT EMBEDDING,SPEECH2TEXT,MODERATION" status: "1" llm: - llm_name: llm1 base_url: 'https://llm1.example.com/v1' api_key: not-used tags: "LLM,CHAT,IMAGE2TEXT" max_tokens: 100000 model_type: chat is_tools: false - llm_name: llm2 base_url: https://llm2.example.com/v1 api_key: not-used tags: "TEXT EMBEDDING" max_tokens: 10000 model_type: embedding - llm_name: llm3 base_url: https://llm3.example.com/v1/rerank api_key: not-used tags: "RERANK,1k" max_tokens: 10000 model_type: rerank ``` ### Type of change - [X] Bug Fix (non-breaking change which fixes an issue) --- api/db/services/llm_service.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/api/db/services/llm_service.py b/api/db/services/llm_service.py index 6ccbf5a94..4d4ccaa57 100644 --- a/api/db/services/llm_service.py +++ b/api/db/services/llm_service.py @@ -19,6 +19,7 @@ import re from common.token_utils import num_tokens_from_string from functools import partial from typing import Generator +from common.constants import LLMType from api.db.db_models import LLM from api.db.services.common_service import CommonService from api.db.services.tenant_llm_service import LLM4Tenant, TenantLLMService @@ -32,6 +33,14 @@ def get_init_tenant_llm(user_id): from common import settings tenant_llm = [] + model_configs = { + LLMType.CHAT: settings.CHAT_CFG, + LLMType.EMBEDDING: settings.EMBEDDING_CFG, + LLMType.SPEECH2TEXT: settings.ASR_CFG, + LLMType.IMAGE2TEXT: settings.IMAGE2TEXT_CFG, + LLMType.RERANK: settings.RERANK_CFG, + } + seen = set() factory_configs = [] for factory_config in [ @@ -54,8 +63,8 @@ def get_init_tenant_llm(user_id): "llm_factory": factory_config["factory"], "llm_name": llm.llm_name, "model_type": llm.model_type, - "api_key": factory_config["api_key"], - "api_base": factory_config["base_url"], + "api_key": model_configs.get(llm.model_type, {}).get("api_key", factory_config["api_key"]), + "api_base": model_configs.get(llm.model_type, {}).get("base_url", factory_config["base_url"]), "max_tokens": llm.max_tokens if llm.max_tokens else 8192, } ) @@ -80,8 +89,8 @@ class LLMBundle(LLM4Tenant): def encode(self, texts: list): if self.langfuse: - generation = self.langfuse.start_generation(trace_context=self.trace_context, name="encode", model=self.llm_name, input={"texts": texts}) - + generation = self.langfuse.start_generation(trace_context=self.trace_context, name="encode", model=self.llm_name, input={"texts": texts}) + safe_texts = [] for text in texts: token_size = num_tokens_from_string(text) @@ -90,7 +99,7 @@ class LLMBundle(LLM4Tenant): safe_texts.append(text[:target_len]) else: safe_texts.append(text) - + embeddings, used_tokens = self.mdl.encode(safe_texts) llm_name = getattr(self, "llm_name", None) From 0569b50fed95ee702db62e128a1e2820c01ca210 Mon Sep 17 00:00:00 2001 From: Billy Bao Date: Mon, 17 Nov 2025 15:27:19 +0800 Subject: [PATCH 02/13] Fix: create dataset return type inconsistent (#11272) ### What problem does this PR solve? Fix: create dataset return type inconsistent #11167 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- api/apps/kb_app.py | 4 ++++ api/db/services/knowledgebase_service.py | 18 +++++++++--------- .../test/test_frontend_api/test_dataset.py | 4 ++-- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/api/apps/kb_app.py b/api/apps/kb_app.py index b7cf58a20..f173b56a0 100644 --- a/api/apps/kb_app.py +++ b/api/apps/kb_app.py @@ -55,6 +55,10 @@ def create(): **req ) + code = req.get("code") + if code: + return get_data_error_result(code=code, message=req.get("message")) + try: if not KnowledgebaseService.save(**req): return get_data_error_result() diff --git a/api/db/services/knowledgebase_service.py b/api/db/services/knowledgebase_service.py index ca30ca074..28936576d 100644 --- a/api/db/services/knowledgebase_service.py +++ b/api/db/services/knowledgebase_service.py @@ -24,9 +24,9 @@ from common.time_utils import current_timestamp, datetime_format from api.db.services import duplicate_name from api.db.services.user_service import TenantService from common.misc_utils import get_uuid -from common.constants import StatusEnum +from common.constants import StatusEnum, RetCode from api.constants import DATASET_NAME_LIMIT -from api.utils.api_utils import get_parser_config, get_data_error_result +from api.utils.api_utils import get_parser_config class KnowledgebaseService(CommonService): """Service class for managing knowledge base operations. @@ -391,12 +391,12 @@ class KnowledgebaseService(CommonService): """ # Validate name if not isinstance(name, str): - return get_data_error_result(message="Dataset name must be string.") + return {"code": RetCode.DATA_ERROR, "message": "Dataset name must be string."} dataset_name = name.strip() - if dataset_name == "": - return get_data_error_result(message="Dataset name can't be empty.") + if len(dataset_name) == 0: + return {"code": RetCode.DATA_ERROR, "message": "Dataset name can't be empty."} if len(dataset_name.encode("utf-8")) > DATASET_NAME_LIMIT: - return get_data_error_result(message=f"Dataset name length is {len(dataset_name)} which is larger than {DATASET_NAME_LIMIT}") + return {"code": RetCode.DATA_ERROR, "message": f"Dataset name length is {len(dataset_name)} which is larger than {DATASET_NAME_LIMIT}"} # Deduplicate name within tenant dataset_name = duplicate_name( @@ -409,7 +409,7 @@ class KnowledgebaseService(CommonService): # Verify tenant exists ok, _t = TenantService.get_by_id(tenant_id) if not ok: - return False, "Tenant not found." + return {"code": RetCode.DATA_ERROR, "message": "Tenant does not exist."} # Build payload kb_id = get_uuid() @@ -419,10 +419,10 @@ class KnowledgebaseService(CommonService): "tenant_id": tenant_id, "created_by": tenant_id, "parser_id": (parser_id or "naive"), - **kwargs + **kwargs # Includes optional fields such as description, language, permission, avatar, parser_config, etc. } - # Default parser_config (align with kb_app.create) — do not accept external overrides + # Update parser_config (always override with validated default/merged config) payload["parser_config"] = get_parser_config(parser_id, kwargs.get("parser_config")) return payload diff --git a/sdk/python/test/test_frontend_api/test_dataset.py b/sdk/python/test/test_frontend_api/test_dataset.py index b57a3543b..3fb3e93ff 100644 --- a/sdk/python/test/test_frontend_api/test_dataset.py +++ b/sdk/python/test/test_frontend_api/test_dataset.py @@ -104,7 +104,7 @@ def test_invalid_name_dataset(get_auth): assert res['code'] == 100 res = create_dataset(get_auth, "") - assert res['code'] == 100 + assert res['code'] == 102 long_string = "" @@ -112,7 +112,7 @@ def test_invalid_name_dataset(get_auth): long_string += random.choice(string.ascii_letters + string.digits) res = create_dataset(get_auth, long_string) - assert res['code'] == 100 + assert res['code'] == 102 print(res) From bd4bc57009fe2990b3be1000564a4d5559477cfc Mon Sep 17 00:00:00 2001 From: Jin Hai Date: Mon, 17 Nov 2025 15:34:17 +0800 Subject: [PATCH 03/13] Refactor: move mcp connection utilities to common (#11304) ### What problem does this PR solve? As title ### Type of change - [x] Refactoring --------- Signed-off-by: Jin Hai --- agent/component/agent_with_tools.py | 2 +- agent/tools/base.py | 3 +-- api/apps/mcp_server_app.py | 2 +- api/apps/sdk/agents.py | 4 ++-- api/ragflow_server.py | 2 +- api/utils/api_utils.py | 2 +- common/data_source/interfaces.py | 4 ++-- {rag/utils => common}/mcp_tool_call_conn.py | 18 ++++++++++++------ rag/llm/chat_model.py | 5 ----- rag/nlp/__init__.py | 12 ++++++------ 10 files changed, 27 insertions(+), 27 deletions(-) rename {rag/utils => common}/mcp_tool_call_conn.py (94%) diff --git a/agent/component/agent_with_tools.py b/agent/component/agent_with_tools.py index a27504139..906a9eca3 100644 --- a/agent/component/agent_with_tools.py +++ b/agent/component/agent_with_tools.py @@ -30,7 +30,7 @@ from api.db.services.mcp_server_service import MCPServerService from common.connection_utils import timeout from rag.prompts.generator import next_step, COMPLETE_TASK, analyze_task, \ citation_prompt, reflect, rank_memories, kb_prompt, citation_plus, full_question, message_fit_in -from rag.utils.mcp_tool_call_conn import MCPToolCallSession, mcp_tool_metadata_to_openai_tool +from common.mcp_tool_call_conn import MCPToolCallSession, mcp_tool_metadata_to_openai_tool from agent.component.llm import LLMParam, LLM diff --git a/agent/tools/base.py b/agent/tools/base.py index a3d569694..791242d59 100644 --- a/agent/tools/base.py +++ b/agent/tools/base.py @@ -21,9 +21,8 @@ from functools import partial from typing import TypedDict, List, Any from agent.component.base import ComponentParamBase, ComponentBase from common.misc_utils import hash_str2int -from rag.llm.chat_model import ToolCallSession from rag.prompts.generator import kb_prompt -from rag.utils.mcp_tool_call_conn import MCPToolCallSession +from common.mcp_tool_call_conn import MCPToolCallSession, ToolCallSession from timeit import default_timer as timer diff --git a/api/apps/mcp_server_app.py b/api/apps/mcp_server_app.py index 66d447491..a8ac2aef1 100644 --- a/api/apps/mcp_server_app.py +++ b/api/apps/mcp_server_app.py @@ -25,7 +25,7 @@ from common.misc_utils import get_uuid from api.utils.api_utils import get_data_error_result, get_json_result, server_error_response, validate_request, \ get_mcp_tools from api.utils.web_utils import get_float, safe_json_parse -from rag.utils.mcp_tool_call_conn import MCPToolCallSession, close_multiple_mcp_toolcall_sessions +from common.mcp_tool_call_conn import MCPToolCallSession, close_multiple_mcp_toolcall_sessions @manager.route("/list", methods=["POST"]) # noqa: F821 diff --git a/api/apps/sdk/agents.py b/api/apps/sdk/agents.py index 208b7a1be..14ea97fb6 100644 --- a/api/apps/sdk/agents.py +++ b/api/apps/sdk/agents.py @@ -41,12 +41,12 @@ def list_agents(tenant_id): return get_error_data_result("The agent doesn't exist.") page_number = int(request.args.get("page", 1)) items_per_page = int(request.args.get("page_size", 30)) - orderby = request.args.get("orderby", "update_time") + order_by = request.args.get("orderby", "update_time") if request.args.get("desc") == "False" or request.args.get("desc") == "false": desc = False else: desc = True - canvas = UserCanvasService.get_list(tenant_id, page_number, items_per_page, orderby, desc, id, title) + canvas = UserCanvasService.get_list(tenant_id, page_number, items_per_page, order_by, desc, id, title) return get_result(data=canvas) diff --git a/api/ragflow_server.py b/api/ragflow_server.py index 868e054ae..c340255e7 100644 --- a/api/ragflow_server.py +++ b/api/ragflow_server.py @@ -41,7 +41,7 @@ from api.db.db_models import init_database_tables as init_web_db from api.db.init_data import init_web_data from common.versions import get_ragflow_version from common.config_utils import show_configs -from rag.utils.mcp_tool_call_conn import shutdown_all_mcp_sessions +from common.mcp_tool_call_conn import shutdown_all_mcp_sessions from rag.utils.redis_conn import RedisDistributedLock stop_event = threading.Event() diff --git a/api/utils/api_utils.py b/api/utils/api_utils.py index 4cace9eca..1bd3f3e3c 100644 --- a/api/utils/api_utils.py +++ b/api/utils/api_utils.py @@ -37,7 +37,7 @@ from peewee import OperationalError from common.constants import ActiveEnum from api.db.db_models import APIToken from api.utils.json_encode import CustomJSONEncoder -from rag.utils.mcp_tool_call_conn import MCPToolCallSession, close_multiple_mcp_toolcall_sessions +from common.mcp_tool_call_conn import MCPToolCallSession, close_multiple_mcp_toolcall_sessions from api.db.services.tenant_llm_service import LLMFactoriesService from common.connection_utils import timeout from common.constants import RetCode diff --git a/common/data_source/interfaces.py b/common/data_source/interfaces.py index 9c5f00141..5e5d3aa2e 100644 --- a/common/data_source/interfaces.py +++ b/common/data_source/interfaces.py @@ -69,7 +69,7 @@ class SlimConnectorWithPermSync(ABC): class CheckpointedConnectorWithPermSync(ABC): - """Checkpointed connector interface (with permission sync)""" + """Checkpoint connector interface (with permission sync)""" @abstractmethod def load_from_checkpoint( @@ -143,7 +143,7 @@ class CredentialsProviderInterface(abc.ABC, Generic[T]): @abc.abstractmethod def is_dynamic(self) -> bool: - """If dynamic, the credentials may change during usage ... maening the client + """If dynamic, the credentials may change during usage ... meaning the client needs to use the locking features of the credentials provider to operate correctly. diff --git a/rag/utils/mcp_tool_call_conn.py b/common/mcp_tool_call_conn.py similarity index 94% rename from rag/utils/mcp_tool_call_conn.py rename to common/mcp_tool_call_conn.py index 2093f7bc8..b19f063e1 100644 --- a/rag/utils/mcp_tool_call_conn.py +++ b/common/mcp_tool_call_conn.py @@ -21,7 +21,7 @@ import weakref from concurrent.futures import ThreadPoolExecutor from concurrent.futures import TimeoutError as FuturesTimeoutError from string import Template -from typing import Any, Literal +from typing import Any, Literal, Protocol from typing_extensions import override @@ -30,12 +30,15 @@ from mcp.client.session import ClientSession from mcp.client.sse import sse_client from mcp.client.streamable_http import streamablehttp_client from mcp.types import CallToolResult, ListToolsResult, TextContent, Tool -from rag.llm.chat_model import ToolCallSession MCPTaskType = Literal["list_tools", "tool_call"] MCPTask = tuple[MCPTaskType, dict[str, Any], asyncio.Queue[Any]] +class ToolCallSession(Protocol): + def tool_call(self, name: str, arguments: dict[str, Any]) -> str: ... + + class MCPToolCallSession(ToolCallSession): _ALL_INSTANCES: weakref.WeakSet["MCPToolCallSession"] = weakref.WeakSet() @@ -106,7 +109,8 @@ class MCPToolCallSession(ToolCallSession): await self._process_mcp_tasks(None, msg) else: - await self._process_mcp_tasks(None, f"Unsupported MCP server type: {self._mcp_server.server_type}, id: {self._mcp_server.id}") + await self._process_mcp_tasks(None, + f"Unsupported MCP server type: {self._mcp_server.server_type}, id: {self._mcp_server.id}") async def _process_mcp_tasks(self, client_session: ClientSession | None, error_message: str | None = None) -> None: while not self._close: @@ -164,7 +168,8 @@ class MCPToolCallSession(ToolCallSession): raise async def _call_mcp_tool(self, name: str, arguments: dict[str, Any], timeout: float | int = 10) -> str: - result: CallToolResult = await self._call_mcp_server("tool_call", name=name, arguments=arguments, timeout=timeout) + result: CallToolResult = await self._call_mcp_server("tool_call", name=name, arguments=arguments, + timeout=timeout) if result.isError: return f"MCP server error: {result.content}" @@ -283,7 +288,8 @@ def close_multiple_mcp_toolcall_sessions(sessions: list[MCPToolCallSession]) -> except Exception: logging.exception("Exception during MCP session cleanup thread management") - logging.info(f"{len(sessions)} MCP sessions has been cleaned up. {len(list(MCPToolCallSession._ALL_INSTANCES))} in global context.") + logging.info( + f"{len(sessions)} MCP sessions has been cleaned up. {len(list(MCPToolCallSession._ALL_INSTANCES))} in global context.") def shutdown_all_mcp_sessions(): @@ -298,7 +304,7 @@ def shutdown_all_mcp_sessions(): logging.info("All MCPToolCallSession instances have been closed.") -def mcp_tool_metadata_to_openai_tool(mcp_tool: Tool|dict) -> dict[str, Any]: +def mcp_tool_metadata_to_openai_tool(mcp_tool: Tool | dict) -> dict[str, Any]: if isinstance(mcp_tool, dict): return { "type": "function", diff --git a/rag/llm/chat_model.py b/rag/llm/chat_model.py index 17ddbc138..c9e3b29f7 100644 --- a/rag/llm/chat_model.py +++ b/rag/llm/chat_model.py @@ -22,7 +22,6 @@ import re import time from abc import ABC from copy import deepcopy -from typing import Any, Protocol from urllib.parse import urljoin import json_repair @@ -65,10 +64,6 @@ LENGTH_NOTIFICATION_CN = "······\n由于大模型的上下文窗口大小 LENGTH_NOTIFICATION_EN = "...\nThe answer is truncated by your chosen LLM due to its limitation on context length." -class ToolCallSession(Protocol): - def tool_call(self, name: str, arguments: dict[str, Any]) -> str: ... - - class Base(ABC): def __init__(self, key, model_name, base_url, **kwargs): timeout = int(os.environ.get("LM_TIMEOUT_SECONDS", 600)) diff --git a/rag/nlp/__init__.py b/rag/nlp/__init__.py index 80acf1d8f..de7c2ce60 100644 --- a/rag/nlp/__init__.py +++ b/rag/nlp/__init__.py @@ -155,13 +155,13 @@ def qbullets_category(sections): if re.match(pro, sec) and not not_bullet(sec): hits[i] += 1 break - maxium = 0 + maximum = 0 res = -1 for i, h in enumerate(hits): - if h <= maxium: + if h <= maximum: continue res = i - maxium = h + maximum = h return res, QUESTION_PATTERN[res] @@ -222,13 +222,13 @@ def bullets_category(sections): if re.match(p, sec) and not not_bullet(sec): hits[i] += 1 break - maxium = 0 + maximum = 0 res = -1 for i, h in enumerate(hits): - if h <= maxium: + if h <= maximum: continue res = i - maxium = h + maximum = h return res From 7264fb6978815c0153d71b2dae0cacc981260421 Mon Sep 17 00:00:00 2001 From: Billy Bao Date: Mon, 17 Nov 2025 19:38:26 +0800 Subject: [PATCH 04/13] Fix: concat images in word document. (#11310) ### What problem does this PR solve? Fix: concat images in word document. Partially solved issues in #11063 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- rag/nlp/__init__.py | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/rag/nlp/__init__.py b/rag/nlp/__init__.py index de7c2ce60..f61019377 100644 --- a/rag/nlp/__init__.py +++ b/rag/nlp/__init__.py @@ -723,47 +723,40 @@ def naive_merge_docx(sections, chunk_token_num=128, delimiter="\n。;!?"): if not sections: return [], [] - cks = [""] - images = [None] - tk_nums = [0] + cks = [] + images = [] + tk_nums = [] def add_chunk(t, image, pos=""): - nonlocal cks, tk_nums, delimiter + nonlocal cks, images, tk_nums tnum = num_tokens_from_string(t) if tnum < 8: pos = "" - if cks[-1] == "" or tk_nums[-1] > chunk_token_num: - if t.find(pos) < 0: + + if not cks or tk_nums[-1] > chunk_token_num: + # new chunk + if pos and t.find(pos) < 0: t += pos cks.append(t) images.append(image) tk_nums.append(tnum) else: - if cks[-1].find(pos) < 0: + # add to last chunk + if pos and cks[-1].find(pos) < 0: t += pos cks[-1] += t images[-1] = concat_img(images[-1], image) tk_nums[-1] += tnum dels = get_delimiters(delimiter) - line = "" - for sec, image in sections: - if not image: - line += sec + "\n" - continue - split_sec = re.split(r"(%s)" % dels, line + sec) - for sub_sec in split_sec: - if re.match(f"^{dels}$", sub_sec): - continue - add_chunk("\n"+sub_sec, image,"") - line = "" + pattern = r"(%s)" % dels - if line: - split_sec = re.split(r"(%s)" % dels, line) + for sec, image in sections: + split_sec = re.split(pattern, sec) for sub_sec in split_sec: - if re.match(f"^{dels}$", sub_sec): + if not sub_sec or re.match(f"^{dels}$", sub_sec): continue - add_chunk("\n"+sub_sec, image,"") + add_chunk("\n" + sub_sec, image, "") return cks, images From d8f413a8855764e56bd53f0416eea8d882e06467 Mon Sep 17 00:00:00 2001 From: balibabu Date: Mon, 17 Nov 2025 19:45:58 +0800 Subject: [PATCH 05/13] Feat: Construct a dynamic variable assignment form #10427 (#11316) ### What problem does this PR solve? Feat: Construct a dynamic variable assignment form #10427 ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- web/package-lock.json | 1077 +++++++++++++---- web/package.json | 1 + .../use-build-operator-options.tsx | 2 +- .../node/dropdown/accordion-operators.tsx | 3 +- .../agent/canvas/node/retrieval-node.tsx | 4 +- web/src/pages/agent/constant/index.tsx | 25 + .../agent/form/components/query-variable.tsx | 37 +- .../structured-output-secondary-menu.tsx | 10 +- .../dynamic-variables.tsx | 290 +++++ .../form/variable-assigner-form/index.tsx | 83 +- .../use-build-logical-options.ts | 28 + .../hooks/use-build-structured-output.ts | 11 +- .../pages/agent/hooks/use-get-begin-query.tsx | 7 +- .../utils/filter-agent-structured-output.ts | 10 +- 14 files changed, 1275 insertions(+), 313 deletions(-) create mode 100644 web/src/pages/agent/form/variable-assigner-form/dynamic-variables.tsx create mode 100644 web/src/pages/agent/form/variable-assigner-form/use-build-logical-options.ts diff --git a/web/package-lock.json b/web/package-lock.json index d473b51b2..e8d87301b 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -106,6 +106,7 @@ "zustand": "^4.5.2" }, "devDependencies": { + "@hookform/devtools": "^4.4.0", "@react-dev-inspector/umi4-plugin": "^2.0.1", "@redux-devtools/extension": "^3.3.0", "@storybook/addon-docs": "^9.1.4", @@ -161,6 +162,7 @@ "version": "1.2.6", "resolved": "https://registry.npmmirror.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -938,7 +940,6 @@ "version": "7.24.6", "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.24.6.tgz", "integrity": "sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==", - "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.6", @@ -1665,7 +1666,6 @@ "version": "6.1.0", "resolved": "https://registry.npmmirror.com/@dnd-kit/core/-/core-6.1.0.tgz", "integrity": "sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==", - "peer": true, "dependencies": { "@dnd-kit/accessibility": "^3.1.0", "@dnd-kit/utilities": "^3.2.2", @@ -1713,31 +1713,226 @@ "react": ">=16.8.0" } }, + "node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "resolved": "https://registry.npmmirror.com/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.3.3", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emotion/cache": { + "version": "11.14.0", + "resolved": "https://registry.npmmirror.com/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/cache/node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "dev": true, + "license": "MIT" + }, "node_modules/@emotion/hash": { "version": "0.8.0", "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.8.0.tgz", "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" }, "node_modules/@emotion/is-prop-valid": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", - "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz", + "integrity": "sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==", "dev": true, + "license": "MIT", "dependencies": { - "@emotion/memoize": "^0.8.1" + "@emotion/memoize": "^0.9.0" } }, "node_modules/@emotion/memoize": { - "version": "0.8.1", - "resolved": "https://registry.npmmirror.com/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", - "dev": true + "version": "0.9.0", + "resolved": "https://registry.npmmirror.com/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emotion/react": { + "version": "11.14.0", + "resolved": "https://registry.npmmirror.com/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/serialize/node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emotion/serialize/node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emotion/styled": { + "version": "11.14.1", + "resolved": "https://registry.npmmirror.com/@emotion/styled/-/styled-11.14.1.tgz", + "integrity": "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, "node_modules/@emotion/unitless": { "version": "0.7.5", "resolved": "https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.7.5.tgz", "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "dev": true, + "license": "MIT" + }, "node_modules/@esbuild-kit/cjs-loader": { "version": "2.4.4", "resolved": "https://registry.npmmirror.com/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.4.tgz", @@ -2567,6 +2762,7 @@ "version": "2.1.4", "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -2587,6 +2783,7 @@ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2601,12 +2798,14 @@ "node_modules/@eslint/eslintrc/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "peer": true }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "peer": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -2618,6 +2817,7 @@ "version": "4.1.0", "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -2629,12 +2829,14 @@ "version": "0.4.1", "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "peer": true, "engines": { "node": ">=10" } @@ -2643,6 +2845,7 @@ "version": "8.56.0", "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.56.0.tgz", "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -2735,6 +2938,37 @@ "deprecated": "the package is rather renamed to @formatjs/ecma-abstract with some changes in functionality (primarily selectUnit is removed and we don't plan to make any further changes to this package", "dev": true }, + "node_modules/@hookform/devtools": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/@hookform/devtools/-/devtools-4.4.0.tgz", + "integrity": "sha512-Mtlic+uigoYBPXlfvPBfiYYUZuyMrD3pTjDpVIhL6eCZTvQkHsKBSKeZCvXWUZr8fqrkzDg27N+ZuazLKq6Vmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emotion/react": "^11.1.5", + "@emotion/styled": "^11.3.0", + "@types/lodash": "^4.14.168", + "little-state-machine": "^4.1.0", + "lodash": "^4.17.21", + "react-simple-animate": "^3.3.12", + "use-deep-compare-effect": "^1.8.1", + "uuid": "^8.3.2" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19", + "react-dom": "^16.8.0 || ^17 || ^18 || ^19" + } + }, + "node_modules/@hookform/devtools/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@hookform/resolvers": { "version": "3.9.1", "resolved": "https://registry.npmmirror.com/@hookform/resolvers/-/resolvers-3.9.1.tgz", @@ -2747,6 +2981,7 @@ "version": "0.11.13", "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "peer": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", @@ -2760,6 +2995,7 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "peer": true, "engines": { "node": ">=12.22" } @@ -2767,7 +3003,8 @@ "node_modules/@humanwhocodes/object-schema": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==" + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "peer": true }, "node_modules/@iconify/types": { "version": "2.0.0", @@ -8409,9 +8646,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.0.tgz", - "integrity": "sha512-lVgpeQyy4fWN5QYebtW4buT/4kn4p4IJ+kDNB4uYNT5b8c8DLJDg6titg20NIg7E8RWwdWZORW6vUFfrLyG3KQ==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz", + "integrity": "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==", "cpu": [ "arm" ], @@ -8420,12 +8657,13 @@ "optional": true, "os": [ "android" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.0.tgz", - "integrity": "sha512-2O73dR4Dc9bp+wSYhviP6sDziurB5/HCym7xILKifWdE9UsOe2FtNcM+I4xZjKrfLJnq5UR8k9riB87gauiQtw==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz", + "integrity": "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==", "cpu": [ "arm64" ], @@ -8434,12 +8672,13 @@ "optional": true, "os": [ "android" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.0.tgz", - "integrity": "sha512-vwSXQN8T4sKf1RHr1F0s98Pf8UPz7pS6P3LG9NSmuw0TVh7EmaE+5Ny7hJOZ0M2yuTctEsHHRTMi2wuHkdS6Hg==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz", + "integrity": "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==", "cpu": [ "arm64" ], @@ -8448,12 +8687,13 @@ "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.0.tgz", - "integrity": "sha512-cQp/WG8HE7BCGyFVuzUg0FNmupxC+EPZEwWu2FCGGw5WDT1o2/YlENbm5e9SMvfDFR6FRhVCBePLqj0o8MN7Vw==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz", + "integrity": "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==", "cpu": [ "x64" ], @@ -8462,12 +8702,13 @@ "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.0.tgz", - "integrity": "sha512-UR1uTJFU/p801DvvBbtDD7z9mQL8J80xB0bR7DqW7UGQHRm/OaKzp4is7sQSdbt2pjjSS72eAtRh43hNduTnnQ==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz", + "integrity": "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==", "cpu": [ "arm64" ], @@ -8476,12 +8717,13 @@ "optional": true, "os": [ "freebsd" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.0.tgz", - "integrity": "sha512-G/DKyS6PK0dD0+VEzH/6n/hWDNPDZSMBmqsElWnCRGrYOb2jC0VSupp7UAHHQ4+QILwkxSMaYIbQ72dktp8pKA==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz", + "integrity": "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==", "cpu": [ "x64" ], @@ -8490,12 +8732,13 @@ "optional": true, "os": [ "freebsd" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.0.tgz", - "integrity": "sha512-u72Mzc6jyJwKjJbZZcIYmd9bumJu7KNmHYdue43vT1rXPm2rITwmPWF0mmPzLm9/vJWxIRbao/jrQmxTO0Sm9w==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz", + "integrity": "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==", "cpu": [ "arm" ], @@ -8504,12 +8747,13 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.0.tgz", - "integrity": "sha512-S4UefYdV0tnynDJV1mdkNawp0E5Qm2MtSs330IyHgaccOFrwqsvgigUD29uT+B/70PDY1eQ3t40+xf6wIvXJyg==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz", + "integrity": "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==", "cpu": [ "arm" ], @@ -8518,12 +8762,13 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.0.tgz", - "integrity": "sha512-1EhkSvUQXJsIhk4msxP5nNAUWoB4MFDHhtc4gAYvnqoHlaL9V3F37pNHabndawsfy/Tp7BPiy/aSa6XBYbaD1g==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz", + "integrity": "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==", "cpu": [ "arm64" ], @@ -8532,12 +8777,13 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.0.tgz", - "integrity": "sha512-EtBDIZuDtVg75xIPIK1l5vCXNNCIRM0OBPUG+tbApDuJAy9mKago6QxX+tfMzbCI6tXEhMuZuN1+CU8iDW+0UQ==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz", + "integrity": "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==", "cpu": [ "arm64" ], @@ -8546,12 +8792,13 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.0.tgz", - "integrity": "sha512-BGYSwJdMP0hT5CCmljuSNx7+k+0upweM2M4YGfFBjnFSZMHOLYR0gEEj/dxyYJ6Zc6AiSeaBY8dWOa11GF/ppQ==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz", + "integrity": "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==", "cpu": [ "loong64" ], @@ -8560,12 +8807,13 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.0.tgz", - "integrity": "sha512-I1gSMzkVe1KzAxKAroCJL30hA4DqSi+wGc5gviD0y3IL/VkvcnAqwBf4RHXHyvH66YVHxpKO8ojrgc4SrWAnLg==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz", + "integrity": "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==", "cpu": [ "ppc64" ], @@ -8574,12 +8822,13 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.0.tgz", - "integrity": "sha512-bSbWlY3jZo7molh4tc5dKfeSxkqnf48UsLqYbUhnkdnfgZjgufLS/NTA8PcP/dnvct5CCdNkABJ56CbclMRYCA==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz", + "integrity": "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==", "cpu": [ "riscv64" ], @@ -8588,12 +8837,13 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.0.tgz", - "integrity": "sha512-LSXSGumSURzEQLT2e4sFqFOv3LWZsEF8FK7AAv9zHZNDdMnUPYH3t8ZlaeYYZyTXnsob3htwTKeWtBIkPV27iQ==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz", + "integrity": "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==", "cpu": [ "riscv64" ], @@ -8602,12 +8852,13 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.0.tgz", - "integrity": "sha512-CxRKyakfDrsLXiCyucVfVWVoaPA4oFSpPpDwlMcDFQvrv3XY6KEzMtMZrA+e/goC8xxp2WSOxHQubP8fPmmjOQ==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz", + "integrity": "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==", "cpu": [ "s390x" ], @@ -8616,12 +8867,13 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.0.tgz", - "integrity": "sha512-8PrJJA7/VU8ToHVEPu14FzuSAqVKyo5gg/J8xUerMbyNkWkO9j2ExBho/68RnJsMGNJq4zH114iAttgm7BZVkA==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz", + "integrity": "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==", "cpu": [ "x64" ], @@ -8630,12 +8882,13 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.0.tgz", - "integrity": "sha512-SkE6YQp+CzpyOrbw7Oc4MgXFvTw2UIBElvAvLCo230pyxOLmYwRPwZ/L5lBe/VW/qT1ZgND9wJfOsdy0XptRvw==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz", + "integrity": "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==", "cpu": [ "x64" ], @@ -8644,12 +8897,13 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.0.tgz", - "integrity": "sha512-PZkNLPfvXeIOgJWA804zjSFH7fARBBCpCXxgkGDRjjAhRLOR8o0IGS01ykh5GYfod4c2yiiREuDM8iZ+pVsT+Q==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz", + "integrity": "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==", "cpu": [ "arm64" ], @@ -8658,12 +8912,13 @@ "optional": true, "os": [ "openharmony" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.0.tgz", - "integrity": "sha512-q7cIIdFvWQoaCbLDUyUc8YfR3Jh2xx3unO8Dn6/TTogKjfwrax9SyfmGGK6cQhKtjePI7jRfd7iRYcxYs93esg==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz", + "integrity": "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==", "cpu": [ "arm64" ], @@ -8672,12 +8927,13 @@ "optional": true, "os": [ "win32" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.0.tgz", - "integrity": "sha512-XzNOVg/YnDOmFdDKcxxK410PrcbcqZkBmz+0FicpW5jtjKQxcW1BZJEQOF0NJa6JO7CZhett8GEtRN/wYLYJuw==", + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz", + "integrity": "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==", "cpu": [ "ia32" ], @@ -8686,12 +8942,13 @@ "optional": true, "os": [ "win32" - ] + ], + "peer": true }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.0.tgz", - "integrity": "sha512-xMmiWRR8sp72Zqwjgtf3QbZfF1wdh8X2ABu3EaozvZcyHJeU0r+XAnXdKgs4cCAp6ORoYoCygipYP1mjmbjrsg==", + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz", + "integrity": "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==", "cpu": [ "x64" ], @@ -8700,7 +8957,23 @@ "optional": true, "os": [ "win32" - ] + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz", + "integrity": "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true }, "node_modules/@sinclair/typebox": { "version": "0.27.8", @@ -8797,7 +9070,6 @@ "dev": true, "hasInstallScript": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@swc/counter": "^0.1.3", "@swc/types": "^0.1.24" @@ -8830,6 +9102,18 @@ } } }, + "node_modules/@storybook/addon-webpack5-compiler-swc/node_modules/@swc/helpers": { + "version": "0.5.17", + "resolved": "https://registry.npmmirror.com/@swc/helpers/-/helpers-0.5.17.tgz", + "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.8.0" + } + }, "node_modules/@storybook/addon-webpack5-compiler-swc/node_modules/swc-loader": { "version": "0.2.6", "resolved": "https://registry.npmmirror.com/swc-loader/-/swc-loader-0.2.6.tgz", @@ -9315,7 +9599,6 @@ "version": "6.5.1", "resolved": "https://registry.npmmirror.com/@svgr/core/-/core-6.5.1.tgz", "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", - "peer": true, "dependencies": { "@babel/core": "^7.19.6", "@svgr/babel-preset": "^6.5.1", @@ -10139,6 +10422,7 @@ "integrity": "sha512-hy8b7Y1J8OGe6LbAjj3xniQrj3v6lsivCcrmf4TzSgPzLkhIeKgc5IZnT7ReIqmEuodjfO8EYAuoFvIrHi/+jQ==", "deprecated": "This is a stub types definition. history provides its own type definitions, so you do not need this installed.", "dev": true, + "peer": true, "dependencies": { "history": "*" } @@ -10168,7 +10452,8 @@ "version": "0.0.34", "resolved": "https://registry.npmmirror.com/@types/isomorphic-fetch/-/isomorphic-fetch-0.0.34.tgz", "integrity": "sha512-BmJKuPCZCR6pbYYgi5nKFJrPC4pLoBgsi/B1nFN64Ba+hLLGUcKPIh7eVlR2xG763Ap08hgQafq/Wx4RFb0omQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", @@ -10252,7 +10537,8 @@ "node_modules/@types/minimist": { "version": "1.2.5", "resolved": "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==" + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "peer": true }, "node_modules/@types/ms": { "version": "0.7.34", @@ -10264,7 +10550,6 @@ "resolved": "https://registry.npmmirror.com/@types/node/-/node-24.3.0.tgz", "integrity": "sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==", "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.10.0" } @@ -10272,7 +10557,8 @@ "node_modules/@types/normalize-package-data": { "version": "2.4.4", "resolved": "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "peer": true }, "node_modules/@types/parse-json": { "version": "4.0.2", @@ -10299,7 +10585,6 @@ "version": "18.2.46", "resolved": "https://registry.npmmirror.com/@types/react/-/react-18.2.46.tgz", "integrity": "sha512-nNCvVBcZlvX4NU1nRRNV/mFl1nNRuTuslAJglQsq+8ldXe5Xv0Wd2f7WTE3jOxhLH2BFfiZGC6GCp+kHQbgG+w==", - "peer": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -10320,7 +10605,6 @@ "resolved": "https://registry.npmmirror.com/@types/react-dom/-/react-dom-18.2.18.tgz", "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", "devOptional": true, - "peer": true, "dependencies": { "@types/react": "*" } @@ -10339,6 +10623,7 @@ "resolved": "https://registry.npmmirror.com/@types/react-router/-/react-router-5.1.20.tgz", "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", "dev": true, + "peer": true, "dependencies": { "@types/history": "^4.7.11", "@types/react": "*" @@ -10349,6 +10634,7 @@ "resolved": "https://registry.npmmirror.com/@types/react-router-dom/-/react-router-dom-4.3.5.tgz", "integrity": "sha512-eFajSUASYbPHg2BDM1G8Btx+YqGgvROPIg6sBhl3O4kbDdYXdFdfrgQFf/pcBuQVObjfT9AL/dd15jilR5DIEA==", "dev": true, + "peer": true, "dependencies": { "@types/history": "*", "@types/react": "*", @@ -10360,6 +10646,7 @@ "resolved": "https://registry.npmmirror.com/@types/react-router-redux/-/react-router-redux-5.0.27.tgz", "integrity": "sha512-qC5lbuP2K/kMR/HE3e5ltCJptyiQhmfV0wbklqcqWDbNdpJBDwUsBGP4f/0RDYJf09+OTbz43u6iG+8E0Zcwqw==", "dev": true, + "peer": true, "dependencies": { "@types/history": "^4.7.11", "@types/react": "*", @@ -10371,13 +10658,15 @@ "version": "4.7.11", "resolved": "https://registry.npmmirror.com/@types/history/-/history-4.7.11.tgz", "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@types/react-router/node_modules/@types/history": { "version": "4.7.11", "resolved": "https://registry.npmmirror.com/@types/history/-/history-4.7.11.tgz", "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@types/react-syntax-highlighter": { "version": "15.5.11", @@ -10539,7 +10828,6 @@ "version": "5.62.0", "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -11645,7 +11933,6 @@ "resolved": "https://registry.npmmirror.com/@tanstack/react-query/-/react-query-4.36.1.tgz", "integrity": "sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==", "dev": true, - "peer": true, "dependencies": { "@tanstack/query-core": "4.36.1", "use-sync-external-store": "^1.2.0" @@ -11711,6 +11998,7 @@ "resolved": "https://registry.npmmirror.com/dva/-/dva-2.5.0-beta.2.tgz", "integrity": "sha512-kc2+CHhF1cNIU3Rg1miMhHgOKJ/VDrq9d6ynVBZf1EN2YKWU3MVFq/uTTBqMr2qkR0m9f8VKHOFmfKLtfMI93Q==", "dev": true, + "peer": true, "dependencies": { "@babel/runtime": "^7.0.0", "@types/isomorphic-fetch": "^0.0.34", @@ -11776,6 +12064,7 @@ "resolved": "https://registry.npmmirror.com/dva-core/-/dva-core-1.5.0-beta.2.tgz", "integrity": "sha512-xmtr/J63EZXBdVXNBW+QCD7p9CaE8kAo2U1faRyv3PIGcy0G3Y6IBDNtoBB/Cj3nzk/jvX0dv96Hnh1kpSnI7Q==", "dev": true, + "peer": true, "dependencies": { "@babel/runtime": "^7.0.0", "flatten": "^1.0.2", @@ -11794,13 +12083,15 @@ "version": "16.13.1", "resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@umijs/plugins/node_modules/dva/node_modules/react-redux": { "version": "5.1.2", "resolved": "https://registry.npmmirror.com/react-redux/-/react-redux-5.1.2.tgz", "integrity": "sha512-Ns1G0XXc8hDyH/OcBHOxNgQx9ayH3SPxBnFCOidGKSle8pKihysQw2rG/PmciUQRoclhVBO8HMhiRmGXnDja9Q==", "dev": true, + "peer": true, "dependencies": { "@babel/runtime": "^7.1.2", "hoist-non-react-statics": "^3.3.0", @@ -11833,6 +12124,7 @@ "resolved": "https://registry.npmmirror.com/warning/-/warning-3.0.0.tgz", "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", "dev": true, + "peer": true, "dependencies": { "loose-envify": "^1.0.0" } @@ -11842,6 +12134,7 @@ "resolved": "https://registry.npmmirror.com/history/-/history-4.10.1.tgz", "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", "dev": true, + "peer": true, "dependencies": { "@babel/runtime": "^7.1.2", "loose-envify": "^1.2.0", @@ -11865,13 +12158,15 @@ "version": "0.0.1", "resolved": "https://registry.npmmirror.com/isarray/-/isarray-0.0.1.tgz", "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@umijs/plugins/node_modules/path-to-regexp": { "version": "1.8.0", "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz", "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", "dev": true, + "peer": true, "dependencies": { "isarray": "0.0.1" } @@ -11974,6 +12269,7 @@ "resolved": "https://registry.npmmirror.com/react-router/-/react-router-4.3.1.tgz", "integrity": "sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==", "dev": true, + "peer": true, "dependencies": { "history": "^4.7.2", "hoist-non-react-statics": "^2.5.0", @@ -11992,6 +12288,7 @@ "resolved": "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-4.3.1.tgz", "integrity": "sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==", "dev": true, + "peer": true, "dependencies": { "history": "^4.7.2", "invariant": "^2.2.4", @@ -12008,13 +12305,15 @@ "version": "2.5.5", "resolved": "https://registry.npmmirror.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@umijs/plugins/node_modules/scheduler": { "version": "0.19.1", "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.19.1.tgz", "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", "dev": true, + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -12025,7 +12324,6 @@ "resolved": "https://registry.npmmirror.com/styled-components/-/styled-components-6.1.1.tgz", "integrity": "sha512-cpZZP5RrKRIClBW5Eby4JM1wElLVP4NQrJbJ0h10TidTyJf4SIIwa3zLXOoPb4gJi8MsJ8mjq5mu2IrEhZIAcQ==", "dev": true, - "peer": true, "dependencies": { "@emotion/is-prop-valid": "^1.2.1", "@emotion/unitless": "^0.8.0", @@ -12126,7 +12424,6 @@ "version": "18.1.0", "resolved": "https://registry.npmmirror.com/react/-/react-18.1.0.tgz", "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -12277,7 +12574,6 @@ "version": "18.1.0", "resolved": "https://registry.npmmirror.com/react/-/react-18.1.0.tgz", "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -12671,7 +12967,6 @@ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -12701,6 +12996,7 @@ "version": "5.3.2", "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peer": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -12791,7 +13087,6 @@ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -12910,7 +13205,6 @@ "version": "5.12.7", "resolved": "https://registry.npmmirror.com/antd/-/antd-5.12.7.tgz", "integrity": "sha512-+SnWLO0kwXFnP15PAzvczZG3/yGu1PoYJa1mcYajqi248gaFA6HjY0s/kXVyXEIzY8dO3MT+RenYweU+s47Fwg==", - "peer": true, "dependencies": { "@ant-design/colors": "^7.0.2", "@ant-design/cssinjs": "^1.18.2", @@ -13193,6 +13487,7 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz", "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -13292,6 +13587,7 @@ "version": "2.0.0", "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "peer": true, "engines": { "node": ">=8" } @@ -13540,6 +13836,43 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-macros/node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/babel-preset-current-node-syntax": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", @@ -13912,7 +14245,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001737", "electron-to-chromium": "^1.5.211", @@ -14094,6 +14426,7 @@ "version": "6.2.2", "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz", "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "peer": true, "dependencies": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", @@ -14107,6 +14440,7 @@ "version": "5.3.1", "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "peer": true, "engines": { "node": ">=6" } @@ -14654,7 +14988,8 @@ "node_modules/colord": { "version": "2.9.3", "resolved": "https://registry.npmmirror.com/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "peer": true }, "node_modules/colorette": { "version": "2.0.20", @@ -15463,6 +15798,7 @@ "version": "3.2.1", "resolved": "https://registry.npmmirror.com/css-functions-list/-/css-functions-list-3.2.1.tgz", "integrity": "sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==", + "peer": true, "engines": { "node": ">=12 || >=16" } @@ -15890,7 +16226,6 @@ "version": "3.0.0", "resolved": "https://registry.npmmirror.com/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "peer": true, "engines": { "node": ">=12" } @@ -16069,8 +16404,7 @@ "node_modules/dayjs": { "version": "1.11.10", "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", - "peer": true + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" }, "node_modules/debug": { "version": "4.3.4", @@ -16100,6 +16434,7 @@ "version": "1.1.1", "resolved": "https://registry.npmmirror.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz", "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "peer": true, "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -16112,6 +16447,7 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -16189,7 +16525,8 @@ "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "peer": true }, "node_modules/deepmerge": { "version": "4.3.1", @@ -16730,6 +17067,7 @@ "resolved": "https://registry.npmmirror.com/dva-core/-/dva-core-1.6.0-beta.7.tgz", "integrity": "sha512-e+0yOEWUK+XbnqflX+KXoLZDGxn+kLKgcT6XYT8GyRe0xcbmLEbwDZO0DXUkdsbxfqSOlLkIprMUoYJ3D5B4Gg==", "dev": true, + "peer": true, "dependencies": { "@babel/runtime": "^7.0.0", "flatten": "^1.0.2", @@ -16748,6 +17086,7 @@ "resolved": "https://registry.npmmirror.com/warning/-/warning-3.0.0.tgz", "integrity": "sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==", "dev": true, + "peer": true, "dependencies": { "loose-envify": "^1.0.0" } @@ -17428,7 +17767,6 @@ "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.17.19.tgz", "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", "hasInstallScript": true, - "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -18025,6 +18363,7 @@ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -18040,6 +18379,7 @@ "version": "4.3.0", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -18050,12 +18390,14 @@ "node_modules/eslint/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "peer": true }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -18068,6 +18410,7 @@ "version": "2.0.1", "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -18078,12 +18421,14 @@ "node_modules/eslint/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "peer": true }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "peer": true, "engines": { "node": ">=10" } @@ -18092,6 +18437,7 @@ "version": "7.2.2", "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -18104,6 +18450,7 @@ "version": "3.4.3", "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -18112,6 +18459,7 @@ "version": "6.0.2", "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "peer": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -18123,6 +18471,7 @@ "version": "13.24.0", "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "peer": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -18134,6 +18483,7 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true, "engines": { "node": ">=8" } @@ -18142,6 +18492,7 @@ "version": "4.1.0", "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -18153,12 +18504,14 @@ "version": "0.4.1", "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -18170,6 +18523,7 @@ "version": "0.20.2", "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "peer": true, "engines": { "node": ">=10" } @@ -18178,6 +18532,7 @@ "version": "9.6.1", "resolved": "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "peer": true, "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -18191,6 +18546,7 @@ "version": "3.4.3", "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -18211,6 +18567,7 @@ "version": "1.5.0", "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz", "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "peer": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -18637,7 +18994,8 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "peer": true }, "node_modules/fast-memoize": { "version": "2.5.2", @@ -18672,6 +19030,7 @@ "version": "1.0.16", "resolved": "https://registry.npmmirror.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "peer": true, "engines": { "node": ">= 4.9.1" } @@ -18721,6 +19080,7 @@ "version": "6.0.1", "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "peer": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -18831,6 +19191,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true, + "license": "MIT" + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", @@ -19548,7 +19915,8 @@ "node_modules/globjoin": { "version": "0.1.4", "resolved": "https://registry.npmmirror.com/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==" + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", + "peer": true }, "node_modules/gopd": { "version": "1.2.0", @@ -19601,6 +19969,7 @@ "version": "2.1.0", "resolved": "https://registry.npmmirror.com/hard-rejection/-/hard-rejection-2.1.0.tgz", "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "peer": true, "engines": { "node": ">=6" } @@ -20189,6 +20558,7 @@ "version": "4.1.0", "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "peer": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -20200,6 +20570,7 @@ "version": "6.0.0", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "peer": true, "dependencies": { "yallist": "^4.0.0" }, @@ -20210,7 +20581,8 @@ "node_modules/hosted-git-info/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "peer": true }, "node_modules/hotkeys-js": { "version": "3.13.5", @@ -20371,6 +20743,7 @@ "version": "3.3.1", "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz", "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "peer": true, "engines": { "node": ">=8" } @@ -20516,7 +20889,6 @@ "version": "23.7.16", "resolved": "https://registry.npmmirror.com/i18next/-/i18next-23.7.16.tgz", "integrity": "sha512-SrqFkMn9W6Wb43ZJ9qrO6U2U4S80RsFMA7VYFSqp7oc7RllQOYDCdRfsse6A7Cq/V8MnpxKvJCYgM8++27n4Fw==", - "peer": true, "dependencies": { "@babel/runtime": "^7.23.2" } @@ -20596,7 +20968,6 @@ "version": "10.1.1", "resolved": "https://registry.npmmirror.com/immer/-/immer-10.1.1.tgz", "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -20641,6 +21012,7 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/import-lazy/-/import-lazy-4.0.0.tgz", "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "peer": true, "engines": { "node": ">=8" } @@ -21158,6 +21530,7 @@ "version": "3.0.3", "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "peer": true, "engines": { "node": ">=8" } @@ -21371,6 +21744,7 @@ "version": "0.2.5", "resolved": "https://registry.npmmirror.com/isomorphic.js/-/isomorphic.js-0.2.5.tgz", "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==", + "peer": true, "funding": { "type": "GitHub Sponsors ❤", "url": "https://github.com/sponsors/dmonad" @@ -21530,7 +21904,6 @@ "resolved": "https://registry.npmmirror.com/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "devOptional": true, - "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -23876,7 +24249,6 @@ "version": "1.21.6", "resolved": "https://registry.npmmirror.com/jiti/-/jiti-1.21.6.tgz", "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", - "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -23988,7 +24360,8 @@ "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "peer": true }, "node_modules/json2module": { "version": "0.0.3", @@ -24140,7 +24513,8 @@ "node_modules/known-css-properties": { "version": "0.26.0", "resolved": "https://registry.npmmirror.com/known-css-properties/-/known-css-properties-0.26.0.tgz", - "integrity": "sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==" + "integrity": "sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==", + "peer": true }, "node_modules/kolorist": { "version": "1.8.0", @@ -24159,7 +24533,6 @@ "version": "4.1.3", "resolved": "https://registry.npmmirror.com/less/-/less-4.1.3.tgz", "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", - "peer": true, "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -24223,6 +24596,7 @@ "version": "0.4.1", "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "peer": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -24240,6 +24614,7 @@ "version": "0.2.99", "resolved": "https://registry.npmmirror.com/lib0/-/lib0-0.2.99.tgz", "integrity": "sha512-vwztYuUf1uf/1zQxfzRfO5yzfNKhTtgOByCruuiQQxWQXnPb8Itaube5ylofcV0oM0aKal9Mv+S1s1Ky0UYP1w==", + "peer": true, "dependencies": { "isomorphic.js": "^0.2.4" }, @@ -24268,7 +24643,6 @@ "version": "1.22.1", "resolved": "https://registry.npmmirror.com/lightningcss/-/lightningcss-1.22.1.tgz", "integrity": "sha512-Fy45PhibiNXkm0cK5FJCbfO8Y6jUpD/YcHf/BtuI+jvYYqSXKF4muk61jjE8YxCR9y+hDYIWSzHTc+bwhDE6rQ==", - "peer": true, "dependencies": { "detect-libc": "^1.0.3" }, @@ -24734,6 +25108,16 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/little-state-machine": { + "version": "4.8.1", + "resolved": "https://registry.npmmirror.com/little-state-machine/-/little-state-machine-4.8.1.tgz", + "integrity": "sha512-liPHqaWMQ7rzZryQUDnbZ1Gclnnai3dIyaJ0nAgwZRXMzqbYrydrlCI0NDojRUbE5VYh5vu6hygEUZiH77nQkQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-4.3.0.tgz", @@ -24783,7 +25167,8 @@ "version": "4.17.21", "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true + "dev": true, + "peer": true }, "node_modules/lodash._reinterpolate": { "version": "3.0.0", @@ -24840,7 +25225,8 @@ "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "peer": true }, "node_modules/lodash.upperfirst": { "version": "4.3.1", @@ -25155,6 +25541,7 @@ "version": "4.3.0", "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-4.3.0.tgz", "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "peer": true, "engines": { "node": ">=8" } @@ -25188,7 +25575,8 @@ "node_modules/mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmmirror.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==" + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "peer": true }, "node_modules/md5.js": { "version": "1.3.5", @@ -25449,6 +25837,7 @@ "version": "9.0.0", "resolved": "https://registry.npmmirror.com/meow/-/meow-9.0.0.tgz", "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "peer": true, "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -25923,6 +26312,7 @@ "version": "4.1.0", "resolved": "https://registry.npmmirror.com/minimist-options/-/minimist-options-4.1.0.tgz", "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "peer": true, "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -25936,6 +26326,7 @@ "version": "1.1.0", "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -26032,7 +26423,6 @@ "resolved": "https://registry.npmmirror.com/moment/-/moment-2.30.1.tgz", "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "devOptional": true, - "peer": true, "engines": { "node": "*" } @@ -26048,6 +26438,7 @@ "resolved": "https://registry.npmmirror.com/mri/-/mri-1.2.0.tgz", "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -26342,6 +26733,7 @@ "version": "3.0.3", "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "peer": true, "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -26356,6 +26748,7 @@ "version": "6.0.0", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "peer": true, "dependencies": { "yallist": "^4.0.0" }, @@ -26367,6 +26760,7 @@ "version": "7.5.4", "resolved": "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "peer": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -26380,7 +26774,8 @@ "node_modules/normalize-package-data/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "peer": true }, "node_modules/normalize-path": { "version": "3.0.0", @@ -26721,6 +27116,7 @@ "version": "0.9.3", "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.3.tgz", "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "peer": true, "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", @@ -27342,7 +27738,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -27821,7 +28216,8 @@ "node_modules/postcss-media-query-parser": { "version": "0.2.3", "resolved": "https://registry.npmmirror.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "peer": true }, "node_modules/postcss-modules-extract-imports": { "version": "3.1.0", @@ -28055,12 +28451,14 @@ "node_modules/postcss-resolve-nested-selector": { "version": "0.1.1", "resolved": "https://registry.npmmirror.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==" + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", + "peer": true }, "node_modules/postcss-safe-parser": { "version": "6.0.0", "resolved": "https://registry.npmmirror.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "peer": true, "engines": { "node": ">=12.0" }, @@ -28083,7 +28481,6 @@ "version": "6.1.2", "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -28096,7 +28493,6 @@ "version": "0.36.2", "resolved": "https://registry.npmmirror.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz", "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", - "peer": true, "peerDependencies": { "postcss": ">=5.0.0" } @@ -28142,6 +28538,7 @@ "version": "1.2.1", "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "peer": true, "engines": { "node": ">= 0.8.0" } @@ -28150,7 +28547,6 @@ "version": "3.2.4", "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.2.4.tgz", "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -28446,6 +28842,7 @@ "version": "4.0.1", "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-4.0.1.tgz", "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "peer": true, "engines": { "node": ">=8" } @@ -28632,7 +29029,6 @@ "version": "1.41.0", "resolved": "https://registry.npmmirror.com/rc-field-form/-/rc-field-form-1.41.0.tgz", "integrity": "sha512-k9AS0wmxfJfusWDP/YXWTpteDNaQ4isJx9UKxx4/e8Dub4spFeZ54/EuN2sYrMRID/+hUznPgVZeg+Gf7XSYCw==", - "peer": true, "dependencies": { "@babel/runtime": "^7.18.0", "async-validator": "^4.1.0", @@ -29139,7 +29535,6 @@ "version": "18.2.0", "resolved": "https://registry.npmmirror.com/react/-/react-18.2.0.tgz", "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -29244,7 +29639,6 @@ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -29566,7 +29960,6 @@ "version": "18.2.0", "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-18.2.0.tgz", "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" @@ -29654,7 +30047,6 @@ "resolved": "https://registry.npmmirror.com/react-hook-form/-/react-hook-form-7.56.4.tgz", "integrity": "sha512-Rob7Ftz2vyZ/ZGsQZPaRdIefkgOSrQSPXfqBdvOPwJfoGnjwRJUs7EM7Kc1mcoDv3NOtqBzPGbcMB8CGn9CKgw==", "license": "MIT", - "peer": true, "engines": { "node": ">=18.0.0" }, @@ -29777,7 +30169,6 @@ "version": "0.14.0", "resolved": "https://registry.npmmirror.com/react-refresh/-/react-refresh-0.14.0.tgz", "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -29877,6 +30268,7 @@ "integrity": "sha512-euSgNIANnRXr4GydIuwA7RZCefrLQzIw5WdXspS8NPYbV+FxrKSS9MKG7U9vb6vsKHONnA4VxrVNWfnMUnUQAw==", "deprecated": "This project is no longer maintained.", "dev": true, + "peer": true, "dependencies": { "history": "^4.7.2", "prop-types": "^15.6.0", @@ -29891,6 +30283,7 @@ "resolved": "https://registry.npmmirror.com/history/-/history-4.10.1.tgz", "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", "dev": true, + "peer": true, "dependencies": { "@babel/runtime": "^7.1.2", "loose-envify": "^1.2.0", @@ -29904,19 +30297,22 @@ "version": "2.5.5", "resolved": "https://registry.npmmirror.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==", - "dev": true + "dev": true, + "peer": true }, "node_modules/react-router-redux/node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmmirror.com/isarray/-/isarray-0.0.1.tgz", "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/react-router-redux/node_modules/path-to-regexp": { "version": "1.8.0", "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz", "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", "dev": true, + "peer": true, "dependencies": { "isarray": "0.0.1" } @@ -29926,6 +30322,7 @@ "resolved": "https://registry.npmmirror.com/react-router/-/react-router-4.3.1.tgz", "integrity": "sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==", "dev": true, + "peer": true, "dependencies": { "history": "^4.7.2", "hoist-non-react-statics": "^2.5.0", @@ -29939,6 +30336,16 @@ "react": ">=15" } }, + "node_modules/react-simple-animate": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/react-simple-animate/-/react-simple-animate-3.5.3.tgz", + "integrity": "sha512-Ob+SmB5J1tXDEZyOe2Hf950K4M8VaWBBmQ3cS2BUnTORqHjhK0iKG8fB+bo47ZL15t8d3g/Y0roiqH05UBjG7A==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react-dom": "^16.8.0 || ^17 || ^18 || ^19" + } + }, "node_modules/react-smooth": { "version": "4.0.1", "resolved": "https://registry.npmmirror.com/react-smooth/-/react-smooth-4.0.1.tgz", @@ -30048,6 +30455,7 @@ "version": "5.2.0", "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz", "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "peer": true, "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -30062,6 +30470,7 @@ "version": "7.0.1", "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz", "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "peer": true, "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -30075,6 +30484,7 @@ "version": "4.1.0", "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "peer": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -30087,6 +30497,7 @@ "version": "5.0.0", "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "peer": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -30098,6 +30509,7 @@ "version": "2.3.0", "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "peer": true, "dependencies": { "p-try": "^2.0.0" }, @@ -30109,6 +30521,7 @@ "version": "4.1.0", "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "peer": true, "dependencies": { "p-limit": "^2.2.0" }, @@ -30120,6 +30533,7 @@ "version": "0.8.1", "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "peer": true, "engines": { "node": ">=8" } @@ -30127,12 +30541,14 @@ "node_modules/read-pkg/node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "peer": true }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "peer": true, "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -30144,6 +30560,7 @@ "version": "1.22.8", "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "peer": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -30157,6 +30574,7 @@ "version": "5.7.2", "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "peer": true, "bin": { "semver": "bin/semver" } @@ -30165,6 +30583,7 @@ "version": "0.6.0", "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz", "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "peer": true, "engines": { "node": ">=8" } @@ -30292,7 +30711,6 @@ "resolved": "https://registry.npmmirror.com/redux/-/redux-4.2.1.tgz", "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", "dev": true, - "peer": true, "dependencies": { "@babel/runtime": "^7.9.2" } @@ -30646,6 +31064,7 @@ "resolved": "https://registry.npmmirror.com/remark/-/remark-14.0.3.tgz", "integrity": "sha512-bfmJW1dmR2LvaMJuAnE88pZP9DktIFYXazkTfOIKZzi3Knk9lT0roItIA24ydOucI3bV/g/tXBA6hzqq3FV9Ew==", "dev": true, + "peer": true, "dependencies": { "@types/mdast": "^3.0.0", "remark-parse": "^10.0.0", @@ -30757,6 +31176,7 @@ "resolved": "https://registry.npmmirror.com/@types/mdast/-/mdast-3.0.15.tgz", "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", "dev": true, + "peer": true, "dependencies": { "@types/unist": "^2" } @@ -30765,7 +31185,8 @@ "version": "2.0.11", "resolved": "https://registry.npmmirror.com/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/remark/node_modules/is-buffer": { "version": "2.0.5", @@ -30786,6 +31207,7 @@ "url": "https://feross.org/support" } ], + "peer": true, "engines": { "node": ">=4" } @@ -30795,6 +31217,7 @@ "resolved": "https://registry.npmmirror.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", "dev": true, + "peer": true, "dependencies": { "@types/mdast": "^3.0.0", "@types/unist": "^2.0.0", @@ -30819,6 +31242,7 @@ "resolved": "https://registry.npmmirror.com/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", "dev": true, + "peer": true, "dependencies": { "@types/mdast": "^3.0.0", "unist-util-is": "^5.0.0" @@ -30833,6 +31257,7 @@ "resolved": "https://registry.npmmirror.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", "dev": true, + "peer": true, "dependencies": { "@types/mdast": "^3.0.0", "@types/unist": "^2.0.0", @@ -30853,6 +31278,7 @@ "resolved": "https://registry.npmmirror.com/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", "dev": true, + "peer": true, "dependencies": { "@types/mdast": "^3.0.0" }, @@ -30876,6 +31302,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", @@ -30911,6 +31338,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-factory-destination": "^1.0.0", @@ -30945,6 +31373,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "micromark-util-character": "^1.0.0", "micromark-util-symbol": "^1.0.0", @@ -30966,6 +31395,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "micromark-util-character": "^1.0.0", "micromark-util-symbol": "^1.0.0", @@ -30988,6 +31418,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "micromark-util-character": "^1.0.0", "micromark-util-types": "^1.0.0" @@ -31008,6 +31439,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "micromark-factory-space": "^1.0.0", "micromark-util-character": "^1.0.0", @@ -31030,6 +31462,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "micromark-factory-space": "^1.0.0", "micromark-util-character": "^1.0.0", @@ -31052,6 +31485,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "micromark-util-symbol": "^1.0.0", "micromark-util-types": "^1.0.0" @@ -31072,6 +31506,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "micromark-util-symbol": "^1.0.0" } @@ -31091,6 +31526,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "micromark-util-character": "^1.0.0", "micromark-util-symbol": "^1.0.0", @@ -31112,6 +31548,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "micromark-util-chunked": "^1.0.0", "micromark-util-types": "^1.0.0" @@ -31132,6 +31569,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "micromark-util-symbol": "^1.0.0" } @@ -31151,6 +31589,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^1.0.0", @@ -31172,7 +31611,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "peer": true }, "node_modules/remark/node_modules/micromark-util-html-tag-name": { "version": "1.2.0", @@ -31188,7 +31628,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "peer": true }, "node_modules/remark/node_modules/micromark-util-normalize-identifier": { "version": "1.1.0", @@ -31205,6 +31646,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "micromark-util-symbol": "^1.0.0" } @@ -31224,6 +31666,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "micromark-util-types": "^1.0.0" } @@ -31243,6 +31686,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "micromark-util-character": "^1.0.0", "micromark-util-encode": "^1.0.0", @@ -31264,6 +31708,7 @@ "url": "https://opencollective.com/unified" } ], + "peer": true, "dependencies": { "micromark-util-chunked": "^1.0.0", "micromark-util-symbol": "^1.0.0", @@ -31285,7 +31730,8 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "peer": true }, "node_modules/remark/node_modules/micromark-util-types": { "version": "1.1.0", @@ -31301,13 +31747,15 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "peer": true }, "node_modules/remark/node_modules/remark-parse": { "version": "10.0.2", "resolved": "https://registry.npmmirror.com/remark-parse/-/remark-parse-10.0.2.tgz", "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", "dev": true, + "peer": true, "dependencies": { "@types/mdast": "^3.0.0", "mdast-util-from-markdown": "^1.0.0", @@ -31323,6 +31771,7 @@ "resolved": "https://registry.npmmirror.com/remark-stringify/-/remark-stringify-10.0.3.tgz", "integrity": "sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==", "dev": true, + "peer": true, "dependencies": { "@types/mdast": "^3.0.0", "mdast-util-to-markdown": "^1.0.0", @@ -31338,6 +31787,7 @@ "resolved": "https://registry.npmmirror.com/unified/-/unified-10.1.2.tgz", "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", "dev": true, + "peer": true, "dependencies": { "@types/unist": "^2.0.0", "bail": "^2.0.0", @@ -31357,6 +31807,7 @@ "resolved": "https://registry.npmmirror.com/unist-util-is/-/unist-util-is-5.2.1.tgz", "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", "dev": true, + "peer": true, "dependencies": { "@types/unist": "^2.0.0" }, @@ -31370,6 +31821,7 @@ "resolved": "https://registry.npmmirror.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", "dev": true, + "peer": true, "dependencies": { "@types/unist": "^2.0.0" }, @@ -31383,6 +31835,7 @@ "resolved": "https://registry.npmmirror.com/unist-util-visit/-/unist-util-visit-4.1.2.tgz", "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", "dev": true, + "peer": true, "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", @@ -31398,6 +31851,7 @@ "resolved": "https://registry.npmmirror.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", "dev": true, + "peer": true, "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" @@ -31412,6 +31866,7 @@ "resolved": "https://registry.npmmirror.com/vfile/-/vfile-5.3.7.tgz", "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", "dev": true, + "peer": true, "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", @@ -31428,6 +31883,7 @@ "resolved": "https://registry.npmmirror.com/vfile-message/-/vfile-message-3.1.4.tgz", "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", "dev": true, + "peer": true, "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^3.0.0" @@ -31536,7 +31992,8 @@ "version": "3.0.0", "resolved": "https://registry.npmmirror.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz", "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", - "dev": true + "dev": true, + "peer": true }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", @@ -31634,7 +32091,6 @@ "version": "3.29.4", "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.29.4.tgz", "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -31700,6 +32156,7 @@ "resolved": "https://registry.npmmirror.com/sade/-/sade-1.8.1.tgz", "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", "dev": true, + "peer": true, "dependencies": { "mri": "^1.1.0" }, @@ -31805,7 +32262,6 @@ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -32100,6 +32556,7 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -32113,6 +32570,7 @@ "version": "4.3.0", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -32124,6 +32582,7 @@ "version": "2.0.1", "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -32134,7 +32593,8 @@ "node_modules/slice-ansi/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "peer": true }, "node_modules/snapdragon": { "version": "0.8.2", @@ -32421,6 +32881,7 @@ "version": "3.2.0", "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "peer": true, "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -32429,12 +32890,14 @@ "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "peer": true }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "peer": true, "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -32443,7 +32906,8 @@ "node_modules/spdx-license-ids": { "version": "3.0.16", "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==" + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "peer": true }, "node_modules/spdy": { "version": "4.0.2", @@ -32618,7 +33082,6 @@ "integrity": "sha512-xMMUKQzAbVJlDUNbCyZ67fJSnomGv+SQw5PDcRWwhYvU72cwhBvGf/UYXi/ylSzMaUHudhOmmn1lZH88lcShsg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@storybook/global": "^5.0.0", "@testing-library/jest-dom": "^6.6.3", @@ -33099,6 +33562,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=12.0.0" }, @@ -33111,13 +33575,29 @@ } } }, - "node_modules/storybook/node_modules/rollup": { - "version": "4.50.0", - "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.50.0.tgz", - "integrity": "sha512-/Zl4D8zPifNmyGzJS+3kVoyXeDeT/GrsJM94sACNg9RtUE0hrHa1bNPtRSrfHTMH5HjRzce6K7rlTh3Khiw+pw==", + "node_modules/storybook/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", "optional": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/storybook/node_modules/rollup": { + "version": "4.53.2", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.53.2.tgz", + "integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -33129,27 +33609,28 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.50.0", - "@rollup/rollup-android-arm64": "4.50.0", - "@rollup/rollup-darwin-arm64": "4.50.0", - "@rollup/rollup-darwin-x64": "4.50.0", - "@rollup/rollup-freebsd-arm64": "4.50.0", - "@rollup/rollup-freebsd-x64": "4.50.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.50.0", - "@rollup/rollup-linux-arm-musleabihf": "4.50.0", - "@rollup/rollup-linux-arm64-gnu": "4.50.0", - "@rollup/rollup-linux-arm64-musl": "4.50.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.50.0", - "@rollup/rollup-linux-ppc64-gnu": "4.50.0", - "@rollup/rollup-linux-riscv64-gnu": "4.50.0", - "@rollup/rollup-linux-riscv64-musl": "4.50.0", - "@rollup/rollup-linux-s390x-gnu": "4.50.0", - "@rollup/rollup-linux-x64-gnu": "4.50.0", - "@rollup/rollup-linux-x64-musl": "4.50.0", - "@rollup/rollup-openharmony-arm64": "4.50.0", - "@rollup/rollup-win32-arm64-msvc": "4.50.0", - "@rollup/rollup-win32-ia32-msvc": "4.50.0", - "@rollup/rollup-win32-x64-msvc": "4.50.0", + "@rollup/rollup-android-arm-eabi": "4.53.2", + "@rollup/rollup-android-arm64": "4.53.2", + "@rollup/rollup-darwin-arm64": "4.53.2", + "@rollup/rollup-darwin-x64": "4.53.2", + "@rollup/rollup-freebsd-arm64": "4.53.2", + "@rollup/rollup-freebsd-x64": "4.53.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.2", + "@rollup/rollup-linux-arm-musleabihf": "4.53.2", + "@rollup/rollup-linux-arm64-gnu": "4.53.2", + "@rollup/rollup-linux-arm64-musl": "4.53.2", + "@rollup/rollup-linux-loong64-gnu": "4.53.2", + "@rollup/rollup-linux-ppc64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-gnu": "4.53.2", + "@rollup/rollup-linux-riscv64-musl": "4.53.2", + "@rollup/rollup-linux-s390x-gnu": "4.53.2", + "@rollup/rollup-linux-x64-gnu": "4.53.2", + "@rollup/rollup-linux-x64-musl": "4.53.2", + "@rollup/rollup-openharmony-arm64": "4.53.2", + "@rollup/rollup-win32-arm64-msvc": "4.53.2", + "@rollup/rollup-win32-ia32-msvc": "4.53.2", + "@rollup/rollup-win32-x64-gnu": "4.53.2", + "@rollup/rollup-win32-x64-msvc": "4.53.2", "fsevents": "~2.3.2" } }, @@ -33166,6 +33647,120 @@ "node": ">=10" } }, + "node_modules/storybook/node_modules/tsx": { + "version": "4.20.6", + "resolved": "https://registry.npmmirror.com/tsx/-/tsx-4.20.6.tgz", + "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/storybook/node_modules/vite": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/vite/-/vite-7.2.2.tgz", + "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/storybook/node_modules/yaml": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, "node_modules/stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-2.0.2.tgz", @@ -33475,7 +34070,8 @@ "node_modules/style-search": { "version": "0.1.0", "resolved": "https://registry.npmmirror.com/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==" + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", + "peer": true }, "node_modules/style-to-object": { "version": "1.0.5", @@ -33494,6 +34090,7 @@ "version": "14.16.1", "resolved": "https://registry.npmmirror.com/stylelint/-/stylelint-14.16.1.tgz", "integrity": "sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==", + "peer": true, "dependencies": { "@csstools/selector-specificity": "^2.0.2", "balanced-match": "^2.0.0", @@ -33563,12 +34160,14 @@ "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==" + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "peer": true }, "node_modules/stylelint/node_modules/is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -33710,6 +34309,7 @@ "version": "2.3.0", "resolved": "https://registry.npmmirror.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "peer": true, "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -33722,6 +34322,7 @@ "version": "4.0.0", "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true, "engines": { "node": ">=8" } @@ -33730,6 +34331,7 @@ "version": "7.2.0", "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -33763,7 +34365,8 @@ "node_modules/svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==" + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "peer": true }, "node_modules/svgo": { "version": "2.8.0", @@ -33815,6 +34418,7 @@ "resolved": "https://registry.npmmirror.com/symbol-observable/-/symbol-observable-1.2.0.tgz", "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -33847,6 +34451,7 @@ "version": "6.8.1", "resolved": "https://registry.npmmirror.com/table/-/table-6.8.1.tgz", "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "peer": true, "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -33883,7 +34488,6 @@ "version": "3.4.14", "resolved": "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-3.4.14.tgz", "integrity": "sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==", - "peer": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -34059,7 +34663,6 @@ "resolved": "https://registry.npmmirror.com/terser/-/terser-5.38.1.tgz", "integrity": "sha512-GWANVlPM/ZfYzuPHjq0nxT+EbOEDDN3Jwhwdg1D8TU8oSkktp8w64Uq4auuGLxFSoNTRDncTq2hQHX1Ld9KHkA==", "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -34266,7 +34869,8 @@ "version": "1.0.3", "resolved": "https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/tinycolor2": { "version": "1.6.0", @@ -34274,15 +34878,16 @@ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" }, "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "version": "0.2.15", + "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -34298,6 +34903,7 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=12.0.0" }, @@ -34310,6 +34916,21 @@ } } }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tinyrainbow": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/tinyrainbow/-/tinyrainbow-2.0.0.tgz", @@ -34500,6 +35121,7 @@ "version": "3.0.1", "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz", "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "peer": true, "engines": { "node": ">=8" } @@ -34542,7 +35164,6 @@ "resolved": "https://registry.npmmirror.com/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "devOptional": true, - "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -34679,6 +35300,7 @@ "version": "0.4.0", "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "peer": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -34780,7 +35402,6 @@ "version": "5.3.3", "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.3.3.tgz", "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -35382,6 +36003,24 @@ } } }, + "node_modules/use-deep-compare-effect": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/use-deep-compare-effect/-/use-deep-compare-effect-1.8.1.tgz", + "integrity": "sha512-kbeNVZ9Zkc0RFGpfMN3MNfaKNvcLNyxOAAd9O4CBZ+kCBXXscn9s/4I+8ytUER4RDpEYs5+O6Rs4PqiZ+rHr5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "dequal": "^2.0.2" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "peerDependencies": { + "react": ">=16.13" + } + }, "node_modules/use-isomorphic-layout-effect": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", @@ -35494,6 +36133,7 @@ "resolved": "https://registry.npmmirror.com/uvu/-/uvu-0.5.6.tgz", "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", "dev": true, + "peer": true, "dependencies": { "dequal": "^2.0.0", "diff": "^5.0.0", @@ -35512,6 +36152,7 @@ "resolved": "https://registry.npmmirror.com/diff/-/diff-5.2.0.tgz", "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, + "peer": true, "engines": { "node": ">=0.3.1" } @@ -35521,6 +36162,7 @@ "resolved": "https://registry.npmmirror.com/kleur/-/kleur-4.1.5.tgz", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true, + "peer": true, "engines": { "node": ">=6" } @@ -35528,7 +36170,8 @@ "node_modules/v8-compile-cache": { "version": "2.4.0", "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==" + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", + "peer": true }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", @@ -35554,6 +36197,7 @@ "version": "3.0.4", "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "peer": true, "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -35588,7 +36232,8 @@ "version": "1.0.1", "resolved": "https://registry.npmmirror.com/value-equal/-/value-equal-1.0.1.tgz", "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", - "dev": true + "dev": true, + "peer": true }, "node_modules/vary": { "version": "1.1.2", @@ -35666,7 +36311,6 @@ "version": "4.5.2", "resolved": "https://registry.npmmirror.com/vite/-/vite-4.5.2.tgz", "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", - "peer": true, "dependencies": { "esbuild": "^0.18.10", "postcss": "^8.4.27", @@ -36171,7 +36815,6 @@ "version": "5.89.0", "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.89.0.tgz", "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -36316,7 +36959,6 @@ "integrity": "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-html-community": "0.0.8", "html-entities": "^2.1.0", @@ -36727,6 +37369,7 @@ "version": "20.2.9", "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "peer": true, "engines": { "node": ">=10" } diff --git a/web/package.json b/web/package.json index acd309a82..a9e13a117 100644 --- a/web/package.json +++ b/web/package.json @@ -119,6 +119,7 @@ "zustand": "^4.5.2" }, "devDependencies": { + "@hookform/devtools": "^4.4.0", "@react-dev-inspector/umi4-plugin": "^2.0.1", "@redux-devtools/extension": "^3.3.0", "@storybook/addon-docs": "^9.1.4", diff --git a/web/src/hooks/logic-hooks/use-build-operator-options.tsx b/web/src/hooks/logic-hooks/use-build-operator-options.tsx index 82e3ed79d..f1d2f3619 100644 --- a/web/src/hooks/logic-hooks/use-build-operator-options.tsx +++ b/web/src/hooks/logic-hooks/use-build-operator-options.tsx @@ -13,7 +13,7 @@ export const LogicalOperatorIcon = function OperatorIcon({ ', + 'rotate-180': value === ComparisonOperator.GreatThan, })} > ); diff --git a/web/src/pages/agent/canvas/node/dropdown/accordion-operators.tsx b/web/src/pages/agent/canvas/node/dropdown/accordion-operators.tsx index 8fd96f55f..dd458279c 100644 --- a/web/src/pages/agent/canvas/node/dropdown/accordion-operators.tsx +++ b/web/src/pages/agent/canvas/node/dropdown/accordion-operators.tsx @@ -79,8 +79,9 @@ export function AccordionOperators({ Operator.Code, Operator.StringTransform, Operator.DataOperations, + Operator.VariableAssigner, Operator.ListOperations, - // Operator.VariableAssigner, + Operator.VariableAssigner, Operator.VariableAggregator, ]} isCustomDropdown={isCustomDropdown} diff --git a/web/src/pages/agent/canvas/node/retrieval-node.tsx b/web/src/pages/agent/canvas/node/retrieval-node.tsx index 07e84965f..068c81735 100644 --- a/web/src/pages/agent/canvas/node/retrieval-node.tsx +++ b/web/src/pages/agent/canvas/node/retrieval-node.tsx @@ -55,8 +55,8 @@ function InnerRetrievalNode({
{label || item?.name}
diff --git a/web/src/pages/agent/constant/index.tsx b/web/src/pages/agent/constant/index.tsx index 3a161d87d..27969e643 100644 --- a/web/src/pages/agent/constant/index.tsx +++ b/web/src/pages/agent/constant/index.tsx @@ -847,6 +847,31 @@ export enum JsonSchemaDataType { Object = 'object', } +export enum VariableAssignerLogicalOperator { + Overwrite = 'overwrite', + Clear = 'clear', + Set = 'set', +} + +export enum VariableAssignerLogicalNumberOperator { + Overwrite = VariableAssignerLogicalOperator.Overwrite, + Clear = VariableAssignerLogicalOperator.Clear, + Set = VariableAssignerLogicalOperator.Set, + Add = '+=', + Subtract = '-=', + Multiply = '*=', + Divide = '/=', +} + +export enum VariableAssignerLogicalArrayOperator { + Overwrite = VariableAssignerLogicalOperator.Overwrite, + Clear = VariableAssignerLogicalOperator.Clear, + Append = 'append', + Extend = 'extend', + RemoveFirst = 'remove_first', + RemoveLast = 'remove_last', +} + export enum ExportFileType { PDF = 'pdf', HTML = 'html', diff --git a/web/src/pages/agent/form/components/query-variable.tsx b/web/src/pages/agent/form/components/query-variable.tsx index 92b1c82d4..fc76c2554 100644 --- a/web/src/pages/agent/form/components/query-variable.tsx +++ b/web/src/pages/agent/form/components/query-variable.tsx @@ -19,6 +19,8 @@ type QueryVariableProps = { hideLabel?: boolean; className?: string; onChange?: (value: string) => void; + pureQuery?: boolean; + value?: string; }; export function QueryVariable({ @@ -28,12 +30,34 @@ export function QueryVariable({ hideLabel = false, className, onChange, + pureQuery = false, + value, }: QueryVariableProps) { const { t } = useTranslation(); const form = useFormContext(); const finalOptions = useFilterQueryVariableOptionsByTypes(types); + const renderWidget = ( + value?: string, + handleChange?: (value: string) => void, + ) => ( + { + handleChange?.(val); + onChange?.(val); + }} + // allowClear + types={types} + > + ); + + if (pureQuery) { + renderWidget(value, onChange); + } + return ( )} - - { - field.onChange(val); - onChange?.(val); - }} - // allowClear - types={types} - > - + {renderWidget(field.value, field.onChange)} )} diff --git a/web/src/pages/agent/form/components/structured-output-secondary-menu.tsx b/web/src/pages/agent/form/components/structured-output-secondary-menu.tsx index f2ecd9191..2e7a34390 100644 --- a/web/src/pages/agent/form/components/structured-output-secondary-menu.tsx +++ b/web/src/pages/agent/form/components/structured-output-secondary-menu.tsx @@ -10,10 +10,7 @@ import { PropsWithChildren, ReactNode, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { JsonSchemaDataType } from '../../constant'; import { useGetStructuredOutputByValue } from '../../hooks/use-build-structured-output'; -import { - hasJsonSchemaChild, - hasSpecificTypeChild, -} from '../../utils/filter-agent-structured-output'; +import { hasSpecificTypeChild } from '../../utils/filter-agent-structured-output'; type DataItem = { label: ReactNode; value: string; parentLabel?: ReactNode }; @@ -101,8 +98,9 @@ export function StructuredOutputSecondaryMenu({ ); if ( - !hasJsonSchemaChild(structuredOutput) || - (!isEmpty(types) && !hasSpecificTypeChild(structuredOutput, types)) + !isEmpty(types) && + !hasSpecificTypeChild(structuredOutput, types) && + !types.some((x) => x === JsonSchemaDataType.Object) ) { return null; } diff --git a/web/src/pages/agent/form/variable-assigner-form/dynamic-variables.tsx b/web/src/pages/agent/form/variable-assigner-form/dynamic-variables.tsx new file mode 100644 index 000000000..e17aaccbc --- /dev/null +++ b/web/src/pages/agent/form/variable-assigner-form/dynamic-variables.tsx @@ -0,0 +1,290 @@ +import { SelectWithSearch } from '@/components/originui/select-with-search'; +import { RAGFlowFormItem } from '@/components/ragflow-form'; +import { useIsDarkTheme } from '@/components/theme-provider'; +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; +import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group'; +import { Separator } from '@/components/ui/separator'; +import { Textarea } from '@/components/ui/textarea'; +import { Editor } from '@monaco-editor/react'; +import * as RadioGroupPrimitive from '@radix-ui/react-radio-group'; +import { X } from 'lucide-react'; +import { ReactNode, useCallback } from 'react'; +import { useFieldArray, useFormContext } from 'react-hook-form'; +import { + JsonSchemaDataType, + VariableAssignerLogicalArrayOperator, + VariableAssignerLogicalNumberOperator, + VariableAssignerLogicalOperator, +} from '../../constant'; +import { useGetVariableLabelOrTypeByValue } from '../../hooks/use-get-begin-query'; +import { DynamicFormHeader } from '../components/dynamic-fom-header'; +import { QueryVariable } from '../components/query-variable'; +import { useBuildLogicalOptions } from './use-build-logical-options'; + +type SelectKeysProps = { + name: string; + label: ReactNode; + tooltip?: string; + keyField?: string; + valueField?: string; + operatorField?: string; +}; + +type RadioGroupProps = React.ComponentProps; + +type RadioButtonProps = Partial< + Omit & { + onChange: RadioGroupProps['onValueChange']; + } +>; + +function RadioButton({ value, onChange }: RadioButtonProps) { + return ( + +
+ + +
+
+ + +
+
+ ); +} + +const EmptyFields = [ + VariableAssignerLogicalOperator.Clear, + VariableAssignerLogicalArrayOperator.RemoveFirst, + VariableAssignerLogicalArrayOperator.RemoveLast, +]; + +const EmptyValueMap = { + [JsonSchemaDataType.String]: '', + [JsonSchemaDataType.Number]: 0, + [JsonSchemaDataType.Boolean]: 'yes', + [JsonSchemaDataType.Object]: {}, + [JsonSchemaDataType.Array]: [], +}; + +export function DynamicVariables({ + name, + label, + tooltip, + keyField = 'variable', + valueField = 'parameter', + operatorField = 'operator', +}: SelectKeysProps) { + const form = useFormContext(); + const { getType } = useGetVariableLabelOrTypeByValue(); + const isDarkTheme = useIsDarkTheme(); + + const { fields, remove, append, update } = useFieldArray({ + name: name, + control: form.control, + }); + + const { buildLogicalOptions } = useBuildLogicalOptions(); + + const getVariableType = useCallback( + (keyFieldName: string) => { + const key = form.getValues(keyFieldName); + return getType(key); + }, + [form, getType], + ); + + const renderParameter = useCallback( + ( + keyFieldName: string, + operatorFieldName: string, + valueFieldAlias: string, + ) => { + console.log( + '🚀 ~ DynamicVariables ~ valueFieldAlias:', + form.getValues(valueFieldAlias), + ); + const logicalOperator = form.getValues(operatorFieldName); + const type = getVariableType(keyFieldName); + + if (EmptyFields.includes(logicalOperator)) { + return null; + } else if ( + logicalOperator === VariableAssignerLogicalOperator.Overwrite || + VariableAssignerLogicalArrayOperator.Extend === logicalOperator + ) { + return ( + + ); + } else if (logicalOperator === VariableAssignerLogicalOperator.Set) { + if (type === JsonSchemaDataType.Boolean) { + return ; + } + + if (type === JsonSchemaDataType.Number) { + return ; + } + + if (type === JsonSchemaDataType.Object) { + return ( + + ); + } + + if (type === JsonSchemaDataType.String) { + return ; + } + } else if ( + Object.values(VariableAssignerLogicalNumberOperator).some( + (x) => logicalOperator === x, + ) + ) { + return ; + } else if ( + logicalOperator === VariableAssignerLogicalArrayOperator.Append + ) { + const subType = type.match(/<([^>]+)>/).at(1); + return ( + + ); + } + }, + [form, getVariableType, isDarkTheme], + ); + + const handleVariableChange = useCallback( + (operatorFieldAlias: string, valueFieldAlias: string) => { + console.log( + '🚀 ~ DynamicVariables ~ operatorFieldAlias:', + operatorFieldAlias, + ); + return () => { + form.setValue( + operatorFieldAlias, + VariableAssignerLogicalOperator.Overwrite, + { shouldDirty: true, shouldValidate: true }, + ); + + form.setValue(valueFieldAlias, '', { + shouldDirty: true, + shouldValidate: true, + }); + }; + }, + [form], + ); + + const handleOperatorChange = useCallback( + ( + valueFieldAlias: string, + keyFieldAlias: string, + value: string, + index: number, + ) => { + const type = getVariableType(keyFieldAlias); + console.log('🚀 ~ DynamicVariables ~ type:', type); + + let parameter = EmptyValueMap[type as keyof typeof EmptyValueMap]; + + if (value === VariableAssignerLogicalOperator.Overwrite) { + parameter = ''; + } + + if (value !== VariableAssignerLogicalOperator.Clear) { + form.setValue(valueFieldAlias, parameter, { + shouldDirty: true, + shouldValidate: true, + }); + + // form.trigger(valueFieldAlias); + + // update(index, { [valueField]: parameter }); + } + }, + [form, getVariableType], + ); + + return ( +
+ append({ [keyField]: '', [valueField]: '' })} + > + +
+ {fields.map((field, index) => { + const keyFieldAlias = `${name}.${index}.${keyField}`; + const valueFieldAlias = `${name}.${index}.${valueField}`; + const operatorFieldAlias = `${name}.${index}.${operatorField}`; + + return ( +
+
+
+ + + + + + {({ onChange, value }) => ( + { + handleOperatorChange( + valueFieldAlias, + keyFieldAlias, + val, + index, + ); + onChange(val); + }} + options={buildLogicalOptions( + getVariableType(keyFieldAlias), + )} + > + )} + +
+ + {renderParameter( + keyFieldAlias, + operatorFieldAlias, + valueFieldAlias, + )} + +
+ + +
+ ); + })} +
+
+ ); +} diff --git a/web/src/pages/agent/form/variable-assigner-form/index.tsx b/web/src/pages/agent/form/variable-assigner-form/index.tsx index 97695f877..6821cf97c 100644 --- a/web/src/pages/agent/form/variable-assigner-form/index.tsx +++ b/web/src/pages/agent/form/variable-assigner-form/index.tsx @@ -1,98 +1,51 @@ -import { SelectWithSearch } from '@/components/originui/select-with-search'; -import { RAGFlowFormItem } from '@/components/ragflow-form'; import { Form } from '@/components/ui/form'; -import { Separator } from '@/components/ui/separator'; -import { buildOptions } from '@/utils/form'; import { zodResolver } from '@hookform/resolvers/zod'; import { memo } from 'react'; import { useForm } from 'react-hook-form'; -import { useTranslation } from 'react-i18next'; import { z } from 'zod'; -import { - JsonSchemaDataType, - Operations, - initialDataOperationsValues, -} from '../../constant'; +import { initialDataOperationsValues } from '../../constant'; import { useFormValues } from '../../hooks/use-form-values'; import { useWatchFormChange } from '../../hooks/use-watch-form-change'; import { INextOperatorForm } from '../../interface'; -import { buildOutputList } from '../../utils/build-output-list'; import { FormWrapper } from '../components/form-wrapper'; -import { Output, OutputSchema } from '../components/output'; -import { QueryVariableList } from '../components/query-variable-list'; +import { DynamicVariables } from './dynamic-variables'; -export const RetrievalPartialSchema = { - query: z.array(z.object({ input: z.string().optional() })), - operations: z.string(), - select_keys: z.array(z.object({ name: z.string().optional() })).optional(), - remove_keys: z.array(z.object({ name: z.string().optional() })).optional(), - updates: z - .array( - z.object({ key: z.string().optional(), value: z.string().optional() }), - ) - .optional(), - rename_keys: z - .array( - z.object({ - old_key: z.string().optional(), - new_key: z.string().optional(), - }), - ) - .optional(), - filter_values: z - .array( - z.object({ - key: z.string().optional(), - value: z.string().optional(), - operator: z.string().optional(), - }), - ) - .optional(), - ...OutputSchema, +export const VariableAssignerSchema = { + variables: z.array( + z.object({ + variable: z.string().optional(), + operator: z.string().optional(), + parameter: z.string().or(z.number()).or(z.boolean()).optional(), + }), + ), }; -export const FormSchema = z.object(RetrievalPartialSchema); +export const FormSchema = z.object(VariableAssignerSchema); -export type DataOperationsFormSchemaType = z.infer; +export type VariableAssignerFormSchemaType = z.infer; -const outputList = buildOutputList(initialDataOperationsValues.outputs); +// const outputList = buildOutputList(initialVariableAssignerValues.outputs); function VariableAssignerForm({ node }: INextOperatorForm) { - const { t } = useTranslation(); - const defaultValues = useFormValues(initialDataOperationsValues, node); - const form = useForm({ + const form = useForm({ defaultValues: defaultValues, mode: 'onChange', resolver: zodResolver(FormSchema), shouldUnregister: true, }); - const OperationsOptions = buildOptions( - Operations, - t, - `flow.operationsOptions`, - true, - ); - useWatchFormChange(node?.id, form, true); return (
- - - - - - - + + {/* */} + {/* */} + {/* set up the dev tool */} ); } diff --git a/web/src/pages/agent/form/variable-assigner-form/use-build-logical-options.ts b/web/src/pages/agent/form/variable-assigner-form/use-build-logical-options.ts new file mode 100644 index 000000000..a27ea20d5 --- /dev/null +++ b/web/src/pages/agent/form/variable-assigner-form/use-build-logical-options.ts @@ -0,0 +1,28 @@ +import { buildOptions } from '@/utils/form'; +import { useCallback } from 'react'; +import { + JsonSchemaDataType, + VariableAssignerLogicalArrayOperator, + VariableAssignerLogicalNumberOperator, + VariableAssignerLogicalOperator, +} from '../../constant'; + +export function useBuildLogicalOptions() { + const buildLogicalOptions = useCallback((type: string) => { + if ( + type?.toLowerCase().startsWith(JsonSchemaDataType.Array.toLowerCase()) + ) { + return buildOptions(VariableAssignerLogicalArrayOperator); + } + + if (type === JsonSchemaDataType.Number) { + return buildOptions(VariableAssignerLogicalNumberOperator); + } + + return buildOptions(VariableAssignerLogicalOperator); + }, []); + + return { + buildLogicalOptions, + }; +} diff --git a/web/src/pages/agent/hooks/use-build-structured-output.ts b/web/src/pages/agent/hooks/use-build-structured-output.ts index 94597d348..891c2dfa9 100644 --- a/web/src/pages/agent/hooks/use-build-structured-output.ts +++ b/web/src/pages/agent/hooks/use-build-structured-output.ts @@ -7,8 +7,11 @@ import { } from '../constant'; import useGraphStore from '../store'; +function splitValue(value?: string) { + return typeof value === 'string' ? value?.split('@') : []; +} function getNodeId(value: string) { - return value.split('@').at(0); + return splitValue(value).at(0); } export function useShowSecondaryMenu() { @@ -63,7 +66,7 @@ export function useFindAgentStructuredOutputLabel() { }>, ) => { // agent structured output - const fields = value.split('@'); + const fields = splitValue(value); if ( getOperatorTypeFromId(fields.at(0)) === Operator.Agent && fields.at(1)?.startsWith(AgentStructuredOutputField) @@ -130,7 +133,7 @@ export function useFindAgentStructuredOutputTypeByValue() { if (!value) { return; } - const fields = value.split('@'); + const fields = splitValue(value); const nodeId = fields.at(0); const jsonSchema = filterStructuredOutput(value); @@ -163,7 +166,7 @@ export function useFindAgentStructuredOutputLabelByValue() { const operatorName = getNode(getNodeId(value ?? ''))?.data.name; if (operatorName) { - return operatorName + ' / ' + value?.split('@').at(1); + return operatorName + ' / ' + splitValue(value).at(1); } } diff --git a/web/src/pages/agent/hooks/use-get-begin-query.tsx b/web/src/pages/agent/hooks/use-get-begin-query.tsx index 9b9a6f6ba..372c87a59 100644 --- a/web/src/pages/agent/hooks/use-get-begin-query.tsx +++ b/web/src/pages/agent/hooks/use-get-begin-query.tsx @@ -232,8 +232,11 @@ export function useFilterQueryVariableOptionsByTypes( ...x, options: x.options.filter( (y) => - types?.some((x) => toLower(y.type).includes(x)) || - y.type === undefined, // agent structured output + types?.some((x) => + toLower(x).startsWith('array') + ? toLower(y.type).includes(toLower(x)) + : toLower(y.type) === toLower(x), + ) || y.type === undefined, // agent structured output ), }; }) diff --git a/web/src/pages/agent/utils/filter-agent-structured-output.ts b/web/src/pages/agent/utils/filter-agent-structured-output.ts index b83193036..40db6b4fe 100644 --- a/web/src/pages/agent/utils/filter-agent-structured-output.ts +++ b/web/src/pages/agent/utils/filter-agent-structured-output.ts @@ -1,14 +1,18 @@ import { JSONSchema } from '@/components/jsonjoy-builder'; -import { get, isPlainObject } from 'lodash'; +import { get, isPlainObject, toLower } from 'lodash'; import { JsonSchemaDataType } from '../constant'; +function predicate(types: string[], type: string) { + return types.some((x) => toLower(x) === toLower(type)); +} + export function hasSpecificTypeChild( data: Record | Array, types: string[] = [], ) { if (Array.isArray(data)) { for (const value of data) { - if (isPlainObject(value) && types.some((x) => x === value.type)) { + if (isPlainObject(value) && predicate(types, value.type)) { return true; } if (hasSpecificTypeChild(value, types)) { @@ -19,7 +23,7 @@ export function hasSpecificTypeChild( if (isPlainObject(data)) { for (const value of Object.values(data)) { - if (isPlainObject(value) && types.some((x) => x === value.type)) { + if (isPlainObject(value) && predicate(types, value.type)) { return true; } From 3fcf2ee54c47b50a84357da0dfc8323a6b67de9a Mon Sep 17 00:00:00 2001 From: cnJasonZ Date: Mon, 17 Nov 2025 19:47:46 +0800 Subject: [PATCH 06/13] feat: add new LLM provider Jiekou.AI (#11300) ### What problem does this PR solve? _Briefly describe what this PR aims to solve. Include background context that will help reviewers understand the purpose of the PR._ ### Type of change - [x] New Feature (non-breaking change which adds functionality) Co-authored-by: Jason --- conf/llm_factories.json | 633 +++++++++++++++++++++++++++ docs/references/supported_models.mdx | 1 + docs/release_notes.md | 2 +- rag/llm/__init__.py | 3 + rag/llm/chat_model.py | 1 + rag/llm/embedding_model.py | 9 + rag/llm/rerank_model.py | 9 + web/src/assets/svg/llm/jiekouai.svg | 3 + web/src/constants/llm.ts | 2 + web/src/utils/common-util.ts | 1 + 10 files changed, 663 insertions(+), 1 deletion(-) create mode 100644 web/src/assets/svg/llm/jiekouai.svg diff --git a/conf/llm_factories.json b/conf/llm_factories.json index 82eb25285..3e70e0243 100644 --- a/conf/llm_factories.json +++ b/conf/llm_factories.json @@ -4839,6 +4839,639 @@ "is_tools": false } ] + }, + { + "name": "JieKou.AI", + "logo": "", + "tags": "LLM,TEXT EMBEDDING,TEXT RE-RANK", + "status": "1", + "llm": [ + { + "llm_name": "Sao10K/L3-8B-Stheno-v3.2", + "tags": "LLM,CHAT,8K", + "max_tokens": 8192, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "baichuan/baichuan-m2-32b", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "baidu/ernie-4.5-300b-a47b-paddle", + "tags": "LLM,CHAT,123K", + "max_tokens": 123000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "baidu/ernie-4.5-vl-424b-a47b", + "tags": "LLM,CHAT,123K", + "max_tokens": 123000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "claude-3-5-haiku-20241022", + "tags": "LLM,CHAT,200K", + "max_tokens": 200000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "claude-3-5-sonnet-20241022", + "tags": "LLM,CHAT,200K", + "max_tokens": 200000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "claude-3-7-sonnet-20250219", + "tags": "LLM,CHAT,200K", + "max_tokens": 200000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "claude-3-haiku-20240307", + "tags": "LLM,CHAT,200K", + "max_tokens": 200000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "claude-haiku-4-5-20251001", + "tags": "LLM,CHAT,20K,IMAGE2TEXT", + "max_tokens": 20000, + "model_type": "image2text", + "is_tools": true + }, + { + "llm_name": "claude-opus-4-1-20250805", + "tags": "LLM,CHAT,200K", + "max_tokens": 200000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "claude-opus-4-20250514", + "tags": "LLM,CHAT,200K", + "max_tokens": 200000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "claude-sonnet-4-20250514", + "tags": "LLM,CHAT,200K", + "max_tokens": 200000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "claude-sonnet-4-5-20250929", + "tags": "LLM,CHAT,200K,IMAGE2TEXT", + "max_tokens": 200000, + "model_type": "image2text", + "is_tools": true + }, + { + "llm_name": "deepseek/deepseek-r1-0528", + "tags": "LLM,CHAT,163K", + "max_tokens": 163840, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "deepseek/deepseek-v3-0324", + "tags": "LLM,CHAT,163K", + "max_tokens": 163840, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "deepseek/deepseek-v3.1", + "tags": "LLM,CHAT,163K", + "max_tokens": 163840, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "doubao-1-5-pro-32k-250115", + "tags": "LLM,CHAT,128K", + "max_tokens": 128000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "doubao-1.5-pro-32k-character-250715", + "tags": "LLM,CHAT,200K", + "max_tokens": 200000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gemini-2.0-flash-20250609", + "tags": "LLM,CHAT,1M", + "max_tokens": 1048576, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gemini-2.0-flash-lite", + "tags": "LLM,CHAT,1M", + "max_tokens": 1048576, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gemini-2.5-flash", + "tags": "LLM,CHAT,1M", + "max_tokens": 1048576, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gemini-2.5-flash-lite", + "tags": "LLM,CHAT,1M", + "max_tokens": 1048576, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gemini-2.5-flash-lite-preview-06-17", + "tags": "LLM,CHAT,1M", + "max_tokens": 1048576, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gemini-2.5-flash-lite-preview-09-2025", + "tags": "LLM,CHAT,1M,IMAGE2TEXT", + "max_tokens": 1048576, + "model_type": "image2text", + "is_tools": true + }, + { + "llm_name": "gemini-2.5-flash-preview-05-20", + "tags": "LLM,CHAT,1M", + "max_tokens": 1048576, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gemini-2.5-pro", + "tags": "LLM,CHAT,1M", + "max_tokens": 1048576, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gemini-2.5-pro-preview-06-05", + "tags": "LLM,CHAT,1M", + "max_tokens": 1048576, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "google/gemma-3-12b-it", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "google/gemma-3-27b-it", + "tags": "LLM,CHAT,32K", + "max_tokens": 32768, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gpt-4.1", + "tags": "LLM,CHAT,1M", + "max_tokens": 1047576, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gpt-4.1-mini", + "tags": "LLM,CHAT,1M", + "max_tokens": 1047576, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gpt-4.1-nano", + "tags": "LLM,CHAT,1M", + "max_tokens": 1047576, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gpt-4o", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gpt-4o-mini", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gpt-5", + "tags": "LLM,CHAT,400K", + "max_tokens": 400000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gpt-5-chat-latest", + "tags": "LLM,CHAT,400K", + "max_tokens": 400000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gpt-5-codex", + "tags": "LLM,CHAT,400K,IMAGE2TEXT", + "max_tokens": 400000, + "model_type": "image2text", + "is_tools": true + }, + { + "llm_name": "gpt-5-mini", + "tags": "LLM,CHAT,400K", + "max_tokens": 400000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gpt-5-nano", + "tags": "LLM,CHAT,400K", + "max_tokens": 400000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gpt-5-pro", + "tags": "LLM,CHAT,400K,IMAGE2TEXT", + "max_tokens": 400000, + "model_type": "image2text", + "is_tools": true + }, + { + "llm_name": "gpt-5.1", + "tags": "LLM,CHAT,400K", + "max_tokens": 400000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gpt-5.1-chat-latest", + "tags": "LLM,CHAT,128K", + "max_tokens": 128000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gpt-5.1-codex", + "tags": "LLM,CHAT,400K", + "max_tokens": 400000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "grok-3", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "grok-3-mini", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "grok-4-0709", + "tags": "LLM,CHAT,256K", + "max_tokens": 256000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "grok-4-fast-non-reasoning", + "tags": "LLM,CHAT,2M,IMAGE2TEXT", + "max_tokens": 2000000, + "model_type": "image2text", + "is_tools": true + }, + { + "llm_name": "grok-4-fast-reasoning", + "tags": "LLM,CHAT,2M,IMAGE2TEXT", + "max_tokens": 2000000, + "model_type": "image2text", + "is_tools": true + }, + { + "llm_name": "grok-code-fast-1", + "tags": "LLM,CHAT,256K", + "max_tokens": 256000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "gryphe/mythomax-l2-13b", + "tags": "LLM,CHAT,4K", + "max_tokens": 4096, + "model_type": "chat", + "is_tools": false + }, + { + "llm_name": "meta-llama/llama-3.1-8b-instruct", + "tags": "LLM,CHAT,16K", + "max_tokens": 16384, + "model_type": "chat", + "is_tools": false + }, + { + "llm_name": "meta-llama/llama-3.2-3b-instruct", + "tags": "LLM,CHAT,32K", + "max_tokens": 32768, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "meta-llama/llama-3.3-70b-instruct", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "meta-llama/llama-4-maverick-17b-128e-instruct-fp8", + "tags": "LLM,CHAT,1M", + "max_tokens": 1048576, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "meta-llama/llama-4-scout-17b-16e-instruct", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "minimaxai/minimax-m1-80k", + "tags": "LLM,CHAT,1M", + "max_tokens": 1000000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "mistralai/mistral-7b-instruct", + "tags": "LLM,CHAT,32K", + "max_tokens": 32768, + "model_type": "chat", + "is_tools": false + }, + { + "llm_name": "mistralai/mistral-nemo", + "tags": "LLM,CHAT,60K", + "max_tokens": 60288, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "moonshotai/kimi-k2-0905", + "tags": "LLM,CHAT,262K", + "max_tokens": 262144, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "moonshotai/kimi-k2-instruct", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "o1", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "o1-mini", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "o3", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "o3-mini", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "openai/gpt-oss-120b", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "openai/gpt-oss-20b", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "qwen/qwen-2.5-72b-instruct", + "tags": "LLM,CHAT,32K", + "max_tokens": 32000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "qwen/qwen-mt-plus", + "tags": "LLM,CHAT,4K", + "max_tokens": 4096, + "model_type": "chat", + "is_tools": false + }, + { + "llm_name": "qwen/qwen2.5-7b-instruct", + "tags": "LLM,CHAT,32K", + "max_tokens": 32000, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "qwen/qwen2.5-vl-72b-instruct", + "tags": "LLM,CHAT,32K", + "max_tokens": 32768, + "model_type": "chat", + "is_tools": false + }, + { + "llm_name": "qwen/qwen3-235b-a22b-fp8", + "tags": "LLM,CHAT,40K", + "max_tokens": 40960, + "model_type": "chat", + "is_tools": false + }, + { + "llm_name": "qwen/qwen3-235b-a22b-instruct-2507", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "qwen/qwen3-235b-a22b-thinking-2507", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "qwen/qwen3-30b-a3b-fp8", + "tags": "LLM,CHAT,40K", + "max_tokens": 40960, + "model_type": "chat", + "is_tools": false + }, + { + "llm_name": "qwen/qwen3-32b-fp8", + "tags": "LLM,CHAT,40K", + "max_tokens": 40960, + "model_type": "chat", + "is_tools": false + }, + { + "llm_name": "qwen/qwen3-8b-fp8", + "tags": "LLM,CHAT,128K", + "max_tokens": 128000, + "model_type": "chat", + "is_tools": false + }, + { + "llm_name": "qwen/qwen3-coder-480b-a35b-instruct", + "tags": "LLM,CHAT,262K", + "max_tokens": 262144, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "qwen/qwen3-next-80b-a3b-instruct", + "tags": "LLM,CHAT,65K", + "max_tokens": 65536, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "qwen/qwen3-next-80b-a3b-thinking", + "tags": "LLM,CHAT,65K", + "max_tokens": 65536, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "sao10k/l3-70b-euryale-v2.1", + "tags": "LLM,CHAT,8K", + "max_tokens": 8192, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "sao10k/l3-8b-lunaris", + "tags": "LLM,CHAT,8K", + "max_tokens": 8192, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "sao10k/l31-70b-euryale-v2.2", + "tags": "LLM,CHAT,8K", + "max_tokens": 8192, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "thudm/glm-4.1v-9b-thinking", + "tags": "LLM,CHAT,65K", + "max_tokens": 65536, + "model_type": "chat", + "is_tools": false + }, + { + "llm_name": "zai-org/glm-4.5", + "tags": "LLM,CHAT,131K", + "max_tokens": 131072, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "zai-org/glm-4.5v", + "tags": "LLM,CHAT,65K", + "max_tokens": 65536, + "model_type": "chat", + "is_tools": true + }, + { + "llm_name": "baai/bge-m3", + "tags": "TEXT EMBEDDING,8K", + "max_tokens": 8192, + "model_type": "embedding" + }, + { + "llm_name": "qwen/qwen3-embedding-0.6b", + "tags": "TEXT EMBEDDING,32K", + "max_tokens": 32768, + "model_type": "embedding" + }, + { + "llm_name": "qwen/qwen3-embedding-8b", + "tags": "TEXT EMBEDDING,32K", + "max_tokens": 32768, + "model_type": "embedding" + }, + { + "llm_name": "baai/bge-reranker-v2-m3", + "tags": "RE-RANK,8K", + "max_tokens": 8000, + "model_type": "reranker" + }, + { + "llm_name": "qwen/qwen3-reranker-8b", + "tags": "RE-RANK,32K", + "max_tokens": 32768, + "model_type": "reranker" + } + ] } ] } \ No newline at end of file diff --git a/docs/references/supported_models.mdx b/docs/references/supported_models.mdx index 9c00840b4..fc88fe091 100644 --- a/docs/references/supported_models.mdx +++ b/docs/references/supported_models.mdx @@ -67,6 +67,7 @@ A complete list of models supported by RAGFlow, which will continue to expand. | 302.AI | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | | | CometAPI | :heavy_check_mark: | :heavy_check_mark: | | | | | | DeerAPI | :heavy_check_mark: | :heavy_check_mark: | | :heavy_check_mark: | | :heavy_check_mark: | +| Jiekou.AI | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | | | ```mdx-code-block diff --git a/docs/release_notes.md b/docs/release_notes.md index d465e8ee7..b4d881107 100644 --- a/docs/release_notes.md +++ b/docs/release_notes.md @@ -693,7 +693,7 @@ Released on August 26, 2024. - Incorporates monitoring for the task executor. - Introduces Agent tools **GitHub**, **DeepL**, **BaiduFanyi**, **QWeather**, and **GoogleScholar**. - Supports chunking of EML files. -- Supports more LLMs or model services: **GPT-4o-mini**, **PerfXCloud**, **TogetherAI**, **Upstage**, **Novita AI**, **01.AI**, **SiliconFlow**, **PPIO**, **XunFei Spark**, **Baidu Yiyan**, and **Tencent Hunyuan**. +- Supports more LLMs or model services: **GPT-4o-mini**, **PerfXCloud**, **TogetherAI**, **Upstage**, **Novita AI**, **01.AI**, **SiliconFlow**, **PPIO**, **XunFei Spark**, **Jiekou.AI**, **Baidu Yiyan**, and **Tencent Hunyuan**. ## v0.9.0 diff --git a/rag/llm/__init__.py b/rag/llm/__init__.py index 4d3d5fe82..897fec65f 100644 --- a/rag/llm/__init__.py +++ b/rag/llm/__init__.py @@ -49,6 +49,7 @@ class SupportedLiteLLMProvider(StrEnum): Lingyi_AI = "01.AI" GiteeAI = "GiteeAI" AI_302 = "302.AI" + JiekouAI = "Jiekou.AI" FACTORY_DEFAULT_BASE_URL = { @@ -69,6 +70,7 @@ FACTORY_DEFAULT_BASE_URL = { SupportedLiteLLMProvider.GiteeAI: "https://ai.gitee.com/v1/", SupportedLiteLLMProvider.AI_302: "https://api.302.ai/v1", SupportedLiteLLMProvider.Anthropic: "https://api.anthropic.com/", + SupportedLiteLLMProvider.JiekouAI: "https://api.jiekou.ai/openai", } @@ -99,6 +101,7 @@ LITELLM_PROVIDER_PREFIX = { SupportedLiteLLMProvider.Lingyi_AI: "openai/", SupportedLiteLLMProvider.GiteeAI: "openai/", SupportedLiteLLMProvider.AI_302: "openai/", + SupportedLiteLLMProvider.JiekouAI: "openai/", } ChatModel = globals().get("ChatModel", {}) diff --git a/rag/llm/chat_model.py b/rag/llm/chat_model.py index c9e3b29f7..856d23b01 100644 --- a/rag/llm/chat_model.py +++ b/rag/llm/chat_model.py @@ -1397,6 +1397,7 @@ class LiteLLMBase(ABC): "01.AI", "GiteeAI", "302.AI", + "Jiekou.AI", ] def __init__(self, key, model_name, base_url=None, **kwargs): diff --git a/rag/llm/embedding_model.py b/rag/llm/embedding_model.py index 3f4070af6..7f2f9ee7d 100644 --- a/rag/llm/embedding_model.py +++ b/rag/llm/embedding_model.py @@ -931,3 +931,12 @@ class DeerAPIEmbed(OpenAIEmbed): if not base_url: base_url = "https://api.deerapi.com/v1" super().__init__(key, model_name, base_url) + + +class JiekouAIEmbed(OpenAIEmbed): + _FACTORY_NAME = "Jiekou.AI" + + def __init__(self, key, model_name, base_url="https://api.jiekou.ai/openai/v1/embeddings"): + if not base_url: + base_url = "https://api.jiekou.ai/openai/v1/embeddings" + super().__init__(key, model_name, base_url) diff --git a/rag/llm/rerank_model.py b/rag/llm/rerank_model.py index f295266b4..cf9834901 100644 --- a/rag/llm/rerank_model.py +++ b/rag/llm/rerank_model.py @@ -489,3 +489,12 @@ class Ai302Rerank(Base): if not base_url: base_url = "https://api.302.ai/v1/rerank" super().__init__(key, model_name, base_url) + + +class JiekouAIRerank(JinaRerank): + _FACTORY_NAME = "Jiekou.AI" + + def __init__(self, key, model_name, base_url="https://api.jiekou.ai/openai/v1/rerank"): + if not base_url: + base_url = "https://api.jiekou.ai/openai/v1/rerank" + super().__init__(key, model_name, base_url) diff --git a/web/src/assets/svg/llm/jiekouai.svg b/web/src/assets/svg/llm/jiekouai.svg new file mode 100644 index 000000000..914929ad7 --- /dev/null +++ b/web/src/assets/svg/llm/jiekouai.svg @@ -0,0 +1,3 @@ + + + diff --git a/web/src/constants/llm.ts b/web/src/constants/llm.ts index 0f85140d5..c7757f805 100644 --- a/web/src/constants/llm.ts +++ b/web/src/constants/llm.ts @@ -58,6 +58,7 @@ export enum LLMFactory { Longcat = 'LongCat', CometAPI = 'CometAPI', DeerAPI = 'DeerAPI', + JiekouAI = 'Jiekou.AI', Builtin = 'Builtin', } @@ -122,5 +123,6 @@ export const IconMap = { [LLMFactory.Longcat]: 'longcat', [LLMFactory.CometAPI]: 'cometapi', [LLMFactory.DeerAPI]: 'deerapi', + [LLMFactory.JiekouAI]: 'jiekouai', [LLMFactory.Builtin]: 'builtin', }; diff --git a/web/src/utils/common-util.ts b/web/src/utils/common-util.ts index b88e870fa..12b6d0d8e 100644 --- a/web/src/utils/common-util.ts +++ b/web/src/utils/common-util.ts @@ -46,6 +46,7 @@ const orderFactoryList = [ LLMFactory.Ai302, LLMFactory.CometAPI, LLMFactory.DeerAPI, + LLMFactory.JiekouAI, ]; export const sortLLmFactoryListBySpecifiedOrder = (list: IFactory[]) => { From 1dba6b5bf95735ccd51533937be7582e0d591592 Mon Sep 17 00:00:00 2001 From: chanx <1243304602@qq.com> Date: Tue, 18 Nov 2025 09:39:02 +0800 Subject: [PATCH 07/13] Fix: Fixed an issue where adding session variables multiple times would overwrite them. (#11308) ### What problem does this PR solve? Fix: Fixed an issue where adding session variables multiple times would overwrite them. ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- .../gobal-variable-sheet/hooks/use-form.tsx | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/web/src/pages/agent/gobal-variable-sheet/hooks/use-form.tsx b/web/src/pages/agent/gobal-variable-sheet/hooks/use-form.tsx index cb38012f3..54d37957a 100644 --- a/web/src/pages/agent/gobal-variable-sheet/hooks/use-form.tsx +++ b/web/src/pages/agent/gobal-variable-sheet/hooks/use-form.tsx @@ -15,27 +15,30 @@ export const useHandleForm = () => { return value; } }; - const handleSubmit = useCallback(async (fieldValue: FieldValues) => { - const param = { - ...(data.dsl?.variables || {}), - [fieldValue.name]: { - ...fieldValue, - value: - fieldValue.type === TypesWithArray.Object || - fieldValue.type === TypesWithArray.ArrayObject - ? handleObjectData(fieldValue.value) - : fieldValue.value, - }, - } as Record; + const handleSubmit = useCallback( + async (fieldValue: FieldValues) => { + const param = { + ...(data.dsl?.variables || {}), + [fieldValue.name]: { + ...fieldValue, + value: + fieldValue.type === TypesWithArray.Object || + fieldValue.type === TypesWithArray.ArrayObject + ? handleObjectData(fieldValue.value) + : fieldValue.value, + }, + } as Record; - const res = await saveGraph(undefined, { - globalVariables: param, - }); + const res = await saveGraph(undefined, { + globalVariables: param, + }); - if (res.code === 0) { - refetch(); - } - }, []); + if (res.code === 0) { + refetch(); + } + }, + [data.dsl?.variables, refetch, saveGraph], + ); return { handleSubmit, loading }; }; From 89e8818dda92b8aef24e9ad1b50cbe07f429852e Mon Sep 17 00:00:00 2001 From: Jonah Hartmann Date: Tue, 18 Nov 2025 02:39:25 +0100 Subject: [PATCH 08/13] Feat: add s3-compatible storage boxes (#11313) ### What problem does this PR solve? PR for implementing s3 compatible storage units #11240 ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- common/data_source/blob_connector.py | 7 ++++++ common/data_source/config.py | 2 ++ common/data_source/utils.py | 7 ++++++ web/src/components/dynamic-form.tsx | 22 ++++++++++++++----- web/src/locales/en.ts | 2 ++ .../user-setting/data-source/contant.tsx | 13 +++++++++++ 6 files changed, 48 insertions(+), 5 deletions(-) diff --git a/common/data_source/blob_connector.py b/common/data_source/blob_connector.py index 0bec7cbe6..9e74a5394 100644 --- a/common/data_source/blob_connector.py +++ b/common/data_source/blob_connector.py @@ -87,6 +87,13 @@ class BlobStorageConnector(LoadConnector, PollConnector): ): raise ConnectorMissingCredentialError("Oracle Cloud Infrastructure") + elif self.bucket_type == BlobType.S3_COMPATIBLE: + if not all( + credentials.get(key) + for key in ["endpoint_url", "aws_access_key_id", "aws_secret_access_key"] + ): + raise ConnectorMissingCredentialError("S3 Compatible Storage") + else: raise ValueError(f"Unsupported bucket type: {self.bucket_type}") diff --git a/common/data_source/config.py b/common/data_source/config.py index e4040f85e..6cd497527 100644 --- a/common/data_source/config.py +++ b/common/data_source/config.py @@ -32,6 +32,7 @@ class BlobType(str, Enum): R2 = "r2" GOOGLE_CLOUD_STORAGE = "google_cloud_storage" OCI_STORAGE = "oci_storage" + S3_COMPATIBLE = "s3_compatible" class DocumentSource(str, Enum): @@ -47,6 +48,7 @@ class DocumentSource(str, Enum): GOOGLE_DRIVE = "google_drive" GMAIL = "gmail" DISCORD = "discord" + S3_COMPATIBLE = "s3_compatible" class FileOrigin(str, Enum): diff --git a/common/data_source/utils.py b/common/data_source/utils.py index b42c3833b..c079b2b9a 100644 --- a/common/data_source/utils.py +++ b/common/data_source/utils.py @@ -311,6 +311,13 @@ def create_s3_client(bucket_type: BlobType, credentials: dict[str, Any], europea aws_secret_access_key=credentials["secret_access_key"], region_name=credentials["region"], ) + elif bucket_type == BlobType.S3_COMPATIBLE: + return boto3.client( + "s3", + endpoint_url=credentials["endpoint_url"], + aws_access_key_id=credentials["aws_access_key_id"], + aws_secret_access_key=credentials["aws_secret_access_key"], + ) else: raise ValueError(f"Unsupported bucket type: {bucket_type}") diff --git a/web/src/components/dynamic-form.tsx b/web/src/components/dynamic-form.tsx index a90afe287..5c78a1dcb 100644 --- a/web/src/components/dynamic-form.tsx +++ b/web/src/components/dynamic-form.tsx @@ -67,6 +67,7 @@ export interface FormFieldConfig { ) => string | boolean | Promise; dependencies?: string[]; schema?: ZodSchema; + shouldRender?: (formValues: any) => boolean; } // Component props interface @@ -654,6 +655,9 @@ const DynamicForm = { } }; + // Watch all form values to re-render when they change (for shouldRender checks) + const formValues = form.watch(); + return (
<> - {fields.map((field) => ( -
- {renderField(field)} -
- ))} + {fields.map((field) => { + const shouldShow = field.shouldRender + ? field.shouldRender(formValues) + : true; + return ( +
+ {renderField(field)} +
+ ); + })} {children}
diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts index 350a64db8..47a8b8351 100644 --- a/web/src/locales/en.ts +++ b/web/src/locales/en.ts @@ -705,6 +705,8 @@ This auto-tagging feature enhances retrieval by adding another layer of domain-s 'The base URL of your Confluence instance (e.g., https://your-domain.atlassian.net/wiki)', s3PrefixTip: `Specify the folder path within your S3 bucket to fetch files from. Example: general/v2/`, + S3CompatibleEndpointUrlTip: `Required for S3 compatible Storage Box. Specify the S3-compatible endpoint URL. +Example: https://fsn1.your-objectstorage.com`, addDataSourceModalTital: 'Create your {{name}} connector', deleteSourceModalTitle: 'Delete data source', deleteSourceModalContent: ` diff --git a/web/src/pages/user-setting/data-source/contant.tsx b/web/src/pages/user-setting/data-source/contant.tsx index 3c8c55826..65788464c 100644 --- a/web/src/pages/user-setting/data-source/contant.tsx +++ b/web/src/pages/user-setting/data-source/contant.tsx @@ -105,9 +105,21 @@ export const DataSourceFormFields = { { label: 'R2', value: 'r2' }, { label: 'Google Cloud Storage', value: 'google_cloud_storage' }, { label: 'OCI Storage', value: 'oci_storage' }, + { label: 'S3 Compatible', value: 's3_compatible' }, ], required: true, }, + { + label: 'Endpoint URL', + name: 'config.credentials.endpoint_url', + type: FormFieldType.Text, + required: false, + placeholder: 'https://fsn1.your-objectstorage.com', + tooltip: t('setting.S3CompatibleEndpointUrlTip'), + shouldRender: (formValues) => { + return formValues?.config?.bucket_type === 's3_compatible'; + }, + }, { label: 'Prefix', name: 'config.prefix', @@ -483,6 +495,7 @@ export const DataSourceFormDefaultValues = { credentials: { aws_access_key_id: '', aws_secret_access_key: '', + endpoint_url: '', }, }, }, From 912b6b023e999ca725fb55bd4e181bd65742aa7e Mon Sep 17 00:00:00 2001 From: buua436 <66937541+buua436@users.noreply.github.com> Date: Tue, 18 Nov 2025 09:39:45 +0800 Subject: [PATCH 09/13] fix: update check_embedding failed info (#11321) ### What problem does this PR solve? change: update check_embedding failed info ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- api/apps/kb_app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/apps/kb_app.py b/api/apps/kb_app.py index f173b56a0..53e42303f 100644 --- a/api/apps/kb_app.py +++ b/api/apps/kb_app.py @@ -918,6 +918,6 @@ def check_embedding(): } if summary["avg_cos_sim"] > 0.9: return get_json_result(data={"summary": summary, "results": results}) - return get_json_result(code=RetCode.NOT_EFFECTIVE, message="failed", data={"summary": summary, "results": results}) + return get_json_result(code=RetCode.NOT_EFFECTIVE, message="Embedding model switch failed: the average similarity between old and new vectors is below 0.9, indicating incompatible vector spaces.", data={"summary": summary, "results": results}) From 8a6d205df08f637b61e7ab8596fc51fda2ee301d Mon Sep 17 00:00:00 2001 From: 0xlucasliao <177768160+0xlucasliao@users.noreply.github.com> Date: Tue, 18 Nov 2025 10:28:00 +0800 Subject: [PATCH 10/13] fix: entrypoint.sh typo for disable datasync command (#11326) ### What problem does this PR solve? There's a typo in `entrypoint.sh` on line 74: the case statement uses `--disable-datasyn)` (missing the 'c'), while the usage function and documentation correctly show `--disable-datasync` (with the 'c'). This mismatch causes the `--disable-datasync` flag to be unrecognized, triggering the usage message and causing containers to restart in a loop when this flag is used. **Background:** - Users following the documentation use `--disable-datasync` in their docker-compose.yml - The entrypoint script doesn't recognize this flag due to the typo - The script calls `usage()` and exits, causing Docker containers to restart continuously - This makes it impossible to disable the data sync service as intended **Example scenario:** When a user adds `--disable-datasync` to their docker-compose command (as shown in examples), the container fails to start properly because the argument isn't recognized. ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) ### Proposed Solution Fix the typo on line 74 of `entrypoint.sh` by changing: ```bash --disable-datasyn) ``` to: ```bash --disable-datasync) ``` This matches the spelling used in the usage function (line 9 and 13) and allows the flag to work as documented. ### Changes Made - Fixed typo in `entrypoint.sh` line 74: changed `--disable-datasyn)` to `--disable-datasync)` - This ensures the argument matches the documented flag name and usage function --- **Code change:** ```bash # Line 74 in entrypoint.sh # Before: --disable-datasyn) ENABLE_DATASYNC=0 shift ;; # After: --disable-datasync) ENABLE_DATASYNC=0 shift ;; ``` This is a simple one-character fix that resolves the argument parsing issue. --- docker/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index f24d5baac..cfde08d0c 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -71,7 +71,7 @@ for arg in "$@"; do ENABLE_TASKEXECUTOR=0 shift ;; - --disable-datasyn) + --disable-datasync) ENABLE_DATASYNC=0 shift ;; From 2993fc666bec5be830c25a51d207c26717af67e3 Mon Sep 17 00:00:00 2001 From: Lynn Date: Tue, 18 Nov 2025 10:49:36 +0800 Subject: [PATCH 11/13] Feat: update version to 0.22.1 (#11331) ### What problem does this PR solve? Update version to 0.22.1 ### Type of change - [x] Documentation Update --- admin/client/admin_client.py | 2 +- admin/client/pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/admin/client/admin_client.py b/admin/client/admin_client.py index 0d04cb3b2..4b210d2b5 100644 --- a/admin/client/admin_client.py +++ b/admin/client/admin_client.py @@ -378,7 +378,7 @@ class AdminCLI(Cmd): self.session.headers.update({ 'Content-Type': 'application/json', 'Authorization': response.headers['Authorization'], - 'User-Agent': 'RAGFlow-CLI/0.22.0' + 'User-Agent': 'RAGFlow-CLI/0.22.1' }) print("Authentication successful.") return True diff --git a/admin/client/pyproject.toml b/admin/client/pyproject.toml index 6dad77a2b..447067ebc 100644 --- a/admin/client/pyproject.toml +++ b/admin/client/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "ragflow-cli" -version = "0.22.0" +version = "0.22.1" description = "Admin Service's client of [RAGFlow](https://github.com/infiniflow/ragflow). The Admin Service provides user management and system monitoring. " authors = [{ name = "Lynn", email = "lynn_inf@hotmail.com" }] license = { text = "Apache License, Version 2.0" } From 701761d1198b9fe8f76023b3dbe168891642aaa9 Mon Sep 17 00:00:00 2001 From: balibabu Date: Tue, 18 Nov 2025 13:07:52 +0800 Subject: [PATCH 12/13] Feat: Fixed the issue where form data assigned by variables was not updated in real time. #10427 (#11333) ### What problem does this PR solve? Feat: Fixed the issue where form data assigned by variables was not updated in real time. #10427 ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- web/src/constants/agent.tsx | 10 +++++ web/src/pages/agent/constant/index.tsx | 17 +++----- .../dynamic-variables.tsx | 41 ++++--------------- .../form/variable-assigner-form/index.tsx | 1 - .../pages/agent/hooks/use-get-begin-query.tsx | 10 +++-- web/src/utils/canvas-util.tsx | 16 +++++++- 6 files changed, 46 insertions(+), 49 deletions(-) diff --git a/web/src/constants/agent.tsx b/web/src/constants/agent.tsx index 3a8411ce3..0ba1d927c 100644 --- a/web/src/constants/agent.tsx +++ b/web/src/constants/agent.tsx @@ -169,3 +169,13 @@ export const SwitchOperatorOptions = [ icon: , }, ]; + +export const AgentStructuredOutputField = 'structured'; + +export enum JsonSchemaDataType { + String = 'string', + Number = 'number', + Boolean = 'boolean', + Array = 'array', + Object = 'object', +} diff --git a/web/src/pages/agent/constant/index.tsx b/web/src/pages/agent/constant/index.tsx index 27969e643..87217a999 100644 --- a/web/src/pages/agent/constant/index.tsx +++ b/web/src/pages/agent/constant/index.tsx @@ -5,6 +5,7 @@ import { import { AgentGlobals, AgentGlobalsSysQueryWithBrace, + AgentStructuredOutputField, CodeTemplateStrMap, ComparisonOperator, Operator, @@ -12,7 +13,11 @@ import { SwitchOperatorOptions, initialLlmBaseValues, } from '@/constants/agent'; -export { Operator } from '@/constants/agent'; +export { + AgentStructuredOutputField, + JsonSchemaDataType, + Operator, +} from '@/constants/agent'; export * from './pipeline'; @@ -441,8 +446,6 @@ export const initialCodeValues = { export const initialWaitingDialogueValues = {}; -export const AgentStructuredOutputField = 'structured'; - export const initialAgentValues = { ...initialLlmBaseValues, description: '', @@ -839,14 +842,6 @@ export const DROPDOWN_HORIZONTAL_OFFSET = 28; export const DROPDOWN_VERTICAL_OFFSET = 74; export const PREVENT_CLOSE_DELAY = 300; -export enum JsonSchemaDataType { - String = 'string', - Number = 'number', - Boolean = 'boolean', - Array = 'array', - Object = 'object', -} - export enum VariableAssignerLogicalOperator { Overwrite = 'overwrite', Clear = 'clear', diff --git a/web/src/pages/agent/form/variable-assigner-form/dynamic-variables.tsx b/web/src/pages/agent/form/variable-assigner-form/dynamic-variables.tsx index e17aaccbc..8a01a7c07 100644 --- a/web/src/pages/agent/form/variable-assigner-form/dynamic-variables.tsx +++ b/web/src/pages/agent/form/variable-assigner-form/dynamic-variables.tsx @@ -7,7 +7,7 @@ import { Label } from '@/components/ui/label'; import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group'; import { Separator } from '@/components/ui/separator'; import { Textarea } from '@/components/ui/textarea'; -import { Editor } from '@monaco-editor/react'; +import Editor, { loader } from '@monaco-editor/react'; import * as RadioGroupPrimitive from '@radix-ui/react-radio-group'; import { X } from 'lucide-react'; import { ReactNode, useCallback } from 'react'; @@ -23,6 +23,8 @@ import { DynamicFormHeader } from '../components/dynamic-fom-header'; import { QueryVariable } from '../components/query-variable'; import { useBuildLogicalOptions } from './use-build-logical-options'; +loader.config({ paths: { vs: '/vs' } }); + type SelectKeysProps = { name: string; label: ReactNode; @@ -70,7 +72,7 @@ const EmptyValueMap = { [JsonSchemaDataType.String]: '', [JsonSchemaDataType.Number]: 0, [JsonSchemaDataType.Boolean]: 'yes', - [JsonSchemaDataType.Object]: {}, + [JsonSchemaDataType.Object]: '{}', [JsonSchemaDataType.Array]: [], }; @@ -86,7 +88,7 @@ export function DynamicVariables({ const { getType } = useGetVariableLabelOrTypeByValue(); const isDarkTheme = useIsDarkTheme(); - const { fields, remove, append, update } = useFieldArray({ + const { fields, remove, append } = useFieldArray({ name: name, control: form.control, }); @@ -102,15 +104,7 @@ export function DynamicVariables({ ); const renderParameter = useCallback( - ( - keyFieldName: string, - operatorFieldName: string, - valueFieldAlias: string, - ) => { - console.log( - '🚀 ~ DynamicVariables ~ valueFieldAlias:', - form.getValues(valueFieldAlias), - ); + (keyFieldName: string, operatorFieldName: string) => { const logicalOperator = form.getValues(operatorFieldName); const type = getVariableType(keyFieldName); @@ -169,10 +163,6 @@ export function DynamicVariables({ const handleVariableChange = useCallback( (operatorFieldAlias: string, valueFieldAlias: string) => { - console.log( - '🚀 ~ DynamicVariables ~ operatorFieldAlias:', - operatorFieldAlias, - ); return () => { form.setValue( operatorFieldAlias, @@ -190,14 +180,8 @@ export function DynamicVariables({ ); const handleOperatorChange = useCallback( - ( - valueFieldAlias: string, - keyFieldAlias: string, - value: string, - index: number, - ) => { + (valueFieldAlias: string, keyFieldAlias: string, value: string) => { const type = getVariableType(keyFieldAlias); - console.log('🚀 ~ DynamicVariables ~ type:', type); let parameter = EmptyValueMap[type as keyof typeof EmptyValueMap]; @@ -210,10 +194,6 @@ export function DynamicVariables({ shouldDirty: true, shouldValidate: true, }); - - // form.trigger(valueFieldAlias); - - // update(index, { [valueField]: parameter }); } }, [form, getVariableType], @@ -258,7 +238,6 @@ export function DynamicVariables({ valueFieldAlias, keyFieldAlias, val, - index, ); onChange(val); }} @@ -270,11 +249,7 @@ export function DynamicVariables({
- {renderParameter( - keyFieldAlias, - operatorFieldAlias, - valueFieldAlias, - )} + {renderParameter(keyFieldAlias, operatorFieldAlias)} diff --git a/web/src/pages/agent/form/variable-assigner-form/index.tsx b/web/src/pages/agent/form/variable-assigner-form/index.tsx index 6821cf97c..6d717ebc7 100644 --- a/web/src/pages/agent/form/variable-assigner-form/index.tsx +++ b/web/src/pages/agent/form/variable-assigner-form/index.tsx @@ -33,7 +33,6 @@ function VariableAssignerForm({ node }: INextOperatorForm) { defaultValues: defaultValues, mode: 'onChange', resolver: zodResolver(FormSchema), - shouldUnregister: true, }); useWatchFormChange(node?.id, form, true); diff --git a/web/src/pages/agent/hooks/use-get-begin-query.tsx b/web/src/pages/agent/hooks/use-get-begin-query.tsx index 372c87a59..d3a0953c8 100644 --- a/web/src/pages/agent/hooks/use-get-begin-query.tsx +++ b/web/src/pages/agent/hooks/use-get-begin-query.tsx @@ -1,7 +1,7 @@ -import { AgentGlobals } from '@/constants/agent'; +import { AgentGlobals, AgentStructuredOutputField } from '@/constants/agent'; import { useFetchAgent } from '@/hooks/use-agent-request'; import { RAGFlowNodeType } from '@/interfaces/database/flow'; -import { buildNodeOutputOptions } from '@/utils/canvas-util'; +import { buildNodeOutputOptions, isAgentStructured } from '@/utils/canvas-util'; import { DefaultOptionType } from 'antd/es/select'; import { t } from 'i18next'; import { isEmpty, toLower } from 'lodash'; @@ -236,7 +236,11 @@ export function useFilterQueryVariableOptionsByTypes( toLower(x).startsWith('array') ? toLower(y.type).includes(toLower(x)) : toLower(y.type) === toLower(x), - ) || y.type === undefined, // agent structured output + ) || + isAgentStructured( + y.value, + y.value.slice(-AgentStructuredOutputField.length), + ), // agent structured output ), }; }) diff --git a/web/src/utils/canvas-util.tsx b/web/src/utils/canvas-util.tsx index bfe6165b1..f59c4c195 100644 --- a/web/src/utils/canvas-util.tsx +++ b/web/src/utils/canvas-util.tsx @@ -1,4 +1,10 @@ +import { + AgentStructuredOutputField, + JsonSchemaDataType, + Operator, +} from '@/constants/agent'; import { BaseNode } from '@/interfaces/database/agent'; + import { Edge } from '@xyflow/react'; import { isEmpty } from 'lodash'; import { ComponentType, ReactNode } from 'react'; @@ -23,6 +29,12 @@ export function filterAllUpstreamNodeIds(edges: Edge[], nodeIds: string[]) { }, []); } +export function isAgentStructured(id?: string, label?: string) { + return ( + label === AgentStructuredOutputField && id?.startsWith(`${Operator.Agent}:`) + ); +} + export function buildOutputOptions( outputs: Record = {}, nodeId?: string, @@ -34,7 +46,9 @@ export function buildOutputOptions( value: `${nodeId}@${x}`, parentLabel, icon, - type: outputs[x]?.type, + type: isAgentStructured(nodeId, x) + ? JsonSchemaDataType.Object + : outputs[x]?.type, })); } From 0db00f70b2c8e40c2331a8f85ecd11ca784e35ea Mon Sep 17 00:00:00 2001 From: Billy Bao Date: Tue, 18 Nov 2025 13:09:39 +0800 Subject: [PATCH 13/13] Fix: add describe_image_with_prompt for ZHIPU AI (#11317) ### What problem does this PR solve? Fix: add describe_image_with_prompt for ZHIPU AI #11289 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- rag/llm/cv_model.py | 119 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 118 insertions(+), 1 deletion(-) diff --git a/rag/llm/cv_model.py b/rag/llm/cv_model.py index b37028428..15c8943d8 100644 --- a/rag/llm/cv_model.py +++ b/rag/llm/cv_model.py @@ -14,6 +14,7 @@ # limitations under the License. # +import re import base64 import json import os @@ -32,7 +33,6 @@ from rag.nlp import is_english from rag.prompts.generator import vision_llm_describe_prompt from common.token_utils import num_tokens_from_string, total_token_count_from_response - class Base(ABC): def __init__(self, **kwargs): # Configure retry parameters @@ -208,6 +208,7 @@ class GptV4(Base): model=self.model_name, messages=self.prompt(b64), extra_body=self.extra_body, + unused = None, ) return res.choices[0].message.content.strip(), total_token_count_from_response(res) @@ -324,6 +325,122 @@ class Zhipu4V(GptV4): Base.__init__(self, **kwargs) + def _clean_conf(self, gen_conf): + if "max_tokens" in gen_conf: + del gen_conf["max_tokens"] + gen_conf = self._clean_conf_plealty(gen_conf) + return gen_conf + + + def _clean_conf_plealty(self, gen_conf): + if "presence_penalty" in gen_conf: + del gen_conf["presence_penalty"] + if "frequency_penalty" in gen_conf: + del gen_conf["frequency_penalty"] + return gen_conf + + + def _request(self, msg, stream, gen_conf={}): + response = requests.post( + self.base_url, + json={ + "model": self.model_name, + "messages": msg, + "stream": stream, + **gen_conf + }, + headers= { + "Authorization": f"Bearer {self.api_key}", + "Content-Type": "application/json", + } + ) + return response.json() + + + def chat(self, system, history, gen_conf, images=None, stream=False, **kwargs): + if system and history and history[0].get("role") != "system": + history.insert(0, {"role": "system", "content": system}) + + gen_conf = self._clean_conf(gen_conf) + + logging.info(json.dumps(history, ensure_ascii=False, indent=2)) + response = self.client.chat.completions.create(model=self.model_name, messages=self._form_history(system, history, images), stream=False, **gen_conf) + content = response.choices[0].message.content.strip() + + cleaned = re.sub(r"<\|(begin_of_box|end_of_box)\|>", "", content).strip() + return cleaned, total_token_count_from_response(response) + + + def chat_streamly(self, system, history, gen_conf, images=None, **kwargs): + from rag.llm.chat_model import LENGTH_NOTIFICATION_CN, LENGTH_NOTIFICATION_EN + from rag.nlp import is_chinese + + if system and history and history[0].get("role") != "system": + history.insert(0, {"role": "system", "content": system}) + gen_conf = self._clean_conf(gen_conf) + ans = "" + tk_count = 0 + try: + logging.info(json.dumps(history, ensure_ascii=False, indent=2)) + response = self.client.chat.completions.create(model=self.model_name, messages=self._form_history(system, history, images), stream=True, **gen_conf) + for resp in response: + if not resp.choices[0].delta.content: + continue + delta = resp.choices[0].delta.content + ans = delta + if resp.choices[0].finish_reason == "length": + if is_chinese(ans): + ans += LENGTH_NOTIFICATION_CN + else: + ans += LENGTH_NOTIFICATION_EN + tk_count = total_token_count_from_response(resp) + if resp.choices[0].finish_reason == "stop": + tk_count = total_token_count_from_response(resp) + yield ans + except Exception as e: + yield ans + "\n**ERROR**: " + str(e) + + yield tk_count + + + def describe(self, image): + return self.describe_with_prompt(image) + + + def describe_with_prompt(self, image, prompt=None): + b64 = self.image2base64(image) + if prompt is None: + prompt = "Describe this image." + + # Chat messages + messages = [ + { + "role": "user", + "content": [ + { + "type": "image_url", + "image_url": { "url": b64 } + }, + { + "type": "text", + "text": prompt + } + ] + } + ] + + resp = self.client.chat.completions.create( + model=self.model_name, + messages=messages, + stream=False + ) + + content = resp.choices[0].message.content.strip() + cleaned = re.sub(r"<\|(begin_of_box|end_of_box)\|>", "", content).strip() + + return cleaned, num_tokens_from_string(cleaned) + + class StepFunCV(GptV4): _FACTORY_NAME = "StepFun"