From f8d2e19d924603f84982925904f5f2ad1a3c635f Mon Sep 17 00:00:00 2001
From: LYGreen <3098036603@qq.com>
Date: Thu, 26 Mar 2026 20:48:26 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=99=BA=E8=83=BD?=
=?UTF-8?q?=E5=AD=A6=E4=B9=A0=E5=8A=A9=E6=89=8B=E6=AF=95=E4=B8=9A=E8=AE=BE?=
=?UTF-8?q?=E8=AE=A1=E9=A1=B9=E7=9B=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../LYGreen-agent-learning-helper/README.md | 110 +
.../backend/.example.env | 3 +
.../backend/alh/agents/agent.py | 17 +
.../backend/alh/agents/check_answer_agent.py | 69 +
.../alh/agents/question_generate_agent.py | 63 +
.../alh/agents/schedule_generate_agent.py | 69 +
.../backend/alh/command/command.py | 47 +
.../backend/alh/llm/llm_model.py | 14 +
.../backend/alh/llm/openai_model.py | 46 +
.../backend/main.py | 35 +
.../backend/requirement.txt | 23 +
.../frontend/.example.env | 1 +
.../frontend/.gitignore | 39 +
.../frontend/env.d.ts | 1 +
.../frontend/index.html | 13 +
.../frontend/package-lock.json | 2886 +++++++++++++++++
.../frontend/package.json | 30 +
.../frontend/public/favicon.ico | Bin 0 -> 4286 bytes
.../frontend/src/App.vue | 702 ++++
.../frontend/src/main.ts | 5 +
.../frontend/src/style.css | 11 +
.../frontend/tsconfig.app.json | 18 +
.../frontend/tsconfig.json | 11 +
.../frontend/tsconfig.node.json | 27 +
.../frontend/vite.config.ts | 18 +
.../img/image0.png | Bin 0 -> 164137 bytes
26 files changed, 4258 insertions(+)
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/README.md
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/backend/.example.env
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/agent.py
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/check_answer_agent.py
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/question_generate_agent.py
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/schedule_generate_agent.py
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/command/command.py
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/llm/llm_model.py
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/llm/openai_model.py
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/backend/main.py
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/backend/requirement.txt
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/frontend/.example.env
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/frontend/.gitignore
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/frontend/env.d.ts
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/frontend/index.html
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/frontend/package-lock.json
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/frontend/package.json
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/frontend/public/favicon.ico
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/frontend/src/App.vue
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/frontend/src/main.ts
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/frontend/src/style.css
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/frontend/tsconfig.app.json
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/frontend/tsconfig.json
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/frontend/tsconfig.node.json
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/frontend/vite.config.ts
create mode 100644 Co-creation-projects/LYGreen-agent-learning-helper/img/image0.png
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/README.md b/Co-creation-projects/LYGreen-agent-learning-helper/README.md
new file mode 100644
index 00000000..ba23082d
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/README.md
@@ -0,0 +1,110 @@
+# AgentLearningHelper - 智能学习助手
+
+> 这是一个 Demo 项目。
+> 项目链接:
+> [前端项目](https://github.com/LYGreen/agent-learning-helper-frontend)
+> [后端项目](https://github.com/LYGreen/agent-learning-helper-backend)
+
+## 📝 项目简介
+
+AgentLearningHelper 是一个智能学习助手,能够帮助用户生成学习课程、生成练习题、答疑解惑
+
+### 核心功能
+
+- **学科导向课程生成**:根据用户输入的特定学科或知识点,利用 LLM 动态构建结构化的课程大纲。
+
+- **自适应习题库**:为每个章节实时生成配套练习题,确保题目难度与教学内容匹配。
+
+- **智能判题与反馈**:利用 AI 进行语义分析,指出用户答案中的知识盲区并给出改进建议。
+
+## 🛠️ 技术栈
+
+- FastAPI(服务端)
+- OpenAI API(调用大模型)
+- Vue(客户端)
+
+## 🚀 快速开始
+
+### 安装依赖
+
+```bash
+cd backend
+pip install -r requirements.txt
+cd ../frontend
+npm install
+```
+
+### 配置参数
+- 后端:
+```
+MODEL=
+BASE_URL=
+OPENAI_API_KEY=
+```
+
+- 前端:
+```
+VITE_BACKEND_URL=
+```
+
+### 运行项目
+
+- 运行前端:
+```bash
+cd frontend
+npm run dev
+```
+
+- 运行后端:
+```bash
+cd backend
+uvicorn main:app --reload
+```
+
+## 📖 使用示例
+
+在浏览器中输入 `http://localhost:5173` 访问
+
+## 📂 项目结构
+
+```
+agent-learning-helper/
+├── backend/
+│ ├── ...
+│ ├── main.py # 主程序
+│ ├── requirements.txt # 依赖列表
+│ └── .env.example # 环境变量示例
+├── frontend/
+│ ├── ...
+│ └── .env.example # 环境变量示例
+├── img/
+│ └── ... # README.md 图片
+├── .gitignore # Git忽略文件
+└── README.md # 项目说明文档
+```
+
+## 🔧 技术实现
+
+- **课程生成智能体**:根据用户输入的学科生成课程
+- **习题生成智能体**:根据用户当前的学习进度生成习题
+- **答疑解惑智能体**:判断用户的答案是否正确
+
+## 📊 示例输出
+
+
+
+## 🚧 未来改进
+
+- [ ] 添加知识库,使生成的课程不具有误导性,同时增加答疑解惑的正确性
+- [ ] RAG 检索知识库
+- [ ] LaTeX 渲染
+- [ ] ...
+
+## 🙏 致谢
+
+感谢 [Datawhale](https://github.com/datawhalechina) 社区和 [Hello-Agents](https://github.com/datawhalechina/hello-agents) 项目!
+
+## 📄 许可证
+
+本项目采用 MIT 许可证。
+
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/backend/.example.env b/Co-creation-projects/LYGreen-agent-learning-helper/backend/.example.env
new file mode 100644
index 00000000..ada78a02
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/backend/.example.env
@@ -0,0 +1,3 @@
+MODEL=
+BASE_URL=
+OPENAI_API_KEY=
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/agent.py b/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/agent.py
new file mode 100644
index 00000000..d6cfdd04
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/agent.py
@@ -0,0 +1,17 @@
+from abc import ABC, abstractmethod
+from alh.llm.llm_model import LLMModel
+
+class Agent(ABC):
+
+ def __init__(self, llm_model: LLMModel):
+ self.llm_model = llm_model
+
+ def run(self, data: dict = None):
+ try:
+ return self._execute(data)
+ except Exception as e:
+ raise e
+
+ @abstractmethod
+ def _execute(self, data: dict = None):
+ pass
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/check_answer_agent.py b/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/check_answer_agent.py
new file mode 100644
index 00000000..9f5e0c1f
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/check_answer_agent.py
@@ -0,0 +1,69 @@
+from alh.agents.agent import Agent
+from alh.llm.llm_model import LLMModel
+from pydantic import BaseModel
+
+CHECK_ANSWER_AGENT_PROMPT = """
+你是一个学习助手,你的任务是帮助用户进行学习辅导,根据问题和用户给出的答案,进行反馈。
+若答案基本正确,则设置 can_pass 为 True,反之为 False;content 输出解析。
+若答案不正确,则设置 can_pass 为 False;content 可以给出提示。
+你需要根据下面的 Json Schema 来生成,可以插入 \\n 表示换行:
+{json_schema}
+你必须只能输出 Json 格式,用 ```json ```包裹,不要输出任何其他内容。
+
+现在,请开始吧。
+
+问题:
+{question}
+
+用户的答案:
+{user_input}
+
+"""
+
+class FeedbackModel(BaseModel):
+ content: str
+ can_pass: bool
+
+class CheckAnswerAgent(Agent):
+ def __init__(self, llm_model: LLMModel):
+ super().__init__(llm_model)
+ self.prompt_temperate = CHECK_ANSWER_AGENT_PROMPT
+
+ def _execute(self, data: dict = None):
+ subject = data["subject"]
+ question = data["question"]
+ user_answer = data["user_answer"]
+
+ max_steps = 10
+
+ for step in range(max_steps):
+ formatted_prompt = self.prompt_temperate.format(
+ json_schema=FeedbackModel.model_json_schema(),
+ question=f"学科:{subject}\n问题:{question}",
+ user_input=user_answer
+ )
+
+ streamer = self.llm_model.stream_talk(formatted_prompt)
+
+ response = ""
+
+ for chunk in streamer:
+ response += chunk
+
+ try:
+ json_str = self._extract_json_str(response)
+ json = self._parse_json(json_str)
+ return json
+ except Exception as e:
+ print("Error: " + str(e))
+ continue
+
+ return None
+
+ def _extract_json_str(self, response: str):
+ import re
+ return re.search(r"```json(.*?)```", response, re.DOTALL).group(1)
+
+ def _parse_json(self, json_str: str):
+ import json
+ return json.loads(json_str)
\ No newline at end of file
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/question_generate_agent.py b/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/question_generate_agent.py
new file mode 100644
index 00000000..13d15f90
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/question_generate_agent.py
@@ -0,0 +1,63 @@
+from alh.agents.agent import Agent
+from alh.llm.llm_model import LLMModel
+from pydantic import BaseModel
+
+QUESTION_GENERATE_AGENT_PROMPT = """
+你是一个问题生成器,你的任务是根据用户的学习内容生成一个问题。
+你需要根据下面的 Json Sehcma 来生成(可以用 \\n 表示换行):
+{json_schema}
+你必须只能输出 Json 格式,用 ```json ```包裹,不要输出任何其他内容。
+
+现在,请开始吧。
+
+用户:
+{user_input}
+
+"""
+
+class QuestionWritingModel(BaseModel):
+ question: str
+
+class QuestionGenerateAgent(Agent):
+ def __init__(self, llm_model: LLMModel):
+ super().__init__(llm_model)
+ self.prompt_temperate = QUESTION_GENERATE_AGENT_PROMPT
+
+ def _execute(self, data: dict = None):
+ subject = data["subject"]
+ title = data["title"]
+ description = data["description"]
+ content = data["content"]
+
+ max_steps = 10
+
+ for step in range(max_steps):
+ formatted_prompt = self.prompt_temperate.format(
+ json_schema=QuestionWritingModel.model_json_schema(),
+ user_input=f"学科:{subject}\n标题:{title}\n描述:{description}\n内容:{content}\n"
+ )
+
+ streamer = self.llm_model.stream_talk(formatted_prompt)
+
+ response = ""
+
+ for chunk in streamer:
+ response += chunk
+
+ try:
+ json_str = self._extract_json_str(response)
+ json = self._parse_json(json_str)
+ return json
+ except Exception as e:
+ print("Error: " + str(e))
+ continue
+
+ return None
+
+ def _extract_json_str(self, response: str):
+ import re
+ return re.search(r"```json(.*?)```", response, re.DOTALL).group(1)
+
+ def _parse_json(self, json_str: str):
+ import json
+ return json.loads(json_str)
\ No newline at end of file
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/schedule_generate_agent.py b/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/schedule_generate_agent.py
new file mode 100644
index 00000000..8c337bda
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/agents/schedule_generate_agent.py
@@ -0,0 +1,69 @@
+from alh.agents.agent import Agent
+from alh.llm.llm_model import LLMModel
+from dataclasses import dataclass
+from typing import List
+from pydantic import BaseModel
+
+SCHEDULE_GENERATE_AGENT_PROMPT = """
+你是一个课程生成器,你的任务是根据用户的输入设计一个课程,尽量多并具体。
+你需要根据下面的 Json Schema 生成一个课程(可以用 \\n 表示换行):
+{json_schema}
+你必须只能输出 Json 格式,用 ```json ```包裹,不要输出任何其他内容。
+
+现在,请开始吧。
+
+用户输入:
+{user_input}
+
+"""
+
+@dataclass
+class Step:
+ title: str
+ description: str
+ content: str
+
+class ScheduleGenerateModel(BaseModel):
+ steps: List[Step]
+
+class ScheduleGenerateAgent(Agent):
+ def __init__(self, llm_model: LLMModel):
+ super().__init__(llm_model)
+ self.prompt_template = SCHEDULE_GENERATE_AGENT_PROMPT
+
+ def _execute(self, data: dict = None):
+ subject = data["subject"]
+
+ max_steps = 10
+
+ # 减少出错
+ for step in range(max_steps):
+ formatted_prompt = self.prompt_template.format(
+ json_schema=ScheduleGenerateModel.model_json_schema(),
+ user_input=f"生成一个 {subject} 的学习计划"
+ )
+
+ streamer = self.llm_model.stream_talk(formatted_prompt)
+
+ response = ""
+
+ for chunk in streamer:
+ response += chunk
+
+ try:
+ json_str = self._extract_json_str(response)
+ json = self._parse_json(json_str)
+ return json
+ except Exception as e:
+ print("Error: " + str(e))
+ continue
+
+ return None
+
+ def _extract_json_str(self, response: str):
+ import re
+ return re.search(r"```json(.*?)```", response, re.DOTALL).group(1)
+
+ def _parse_json(self, json_str: str):
+ import json
+ return json.loads(json_str)
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/command/command.py b/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/command/command.py
new file mode 100644
index 00000000..ee18ddc3
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/command/command.py
@@ -0,0 +1,47 @@
+import os
+from dotenv import load_dotenv
+from alh.llm.openai_model import OpenAIModel
+from alh.agents.schedule_generate_agent import ScheduleGenerateAgent
+from alh.agents.question_generate_agent import QuestionGenerateAgent
+from alh.agents.check_answer_agent import CheckAnswerAgent
+
+load_dotenv()
+
+MODEL = os.getenv("MODEL")
+BASE_URL = os.getenv("BASE_URL")
+OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
+
+class Command:
+ def __init__(self):
+ raise RuntimeError("Command is an abstract class")
+
+ def _init_command(self):
+ self.model = OpenAIModel(BASE_URL, OPENAI_API_KEY, MODEL)
+ self.schedule_generate_agent = ScheduleGenerateAgent(self.model)
+ self.question_generate_agent = QuestionGenerateAgent(self.model)
+ self.check_answer_agent = CheckAnswerAgent(self.model)
+
+ @classmethod
+ def get_instance(cls):
+ if not hasattr(cls, 'instance'):
+ cls.instance = super().__new__(cls)
+ cls._init_command(cls)
+ return cls.instance
+
+ def run(self, command: str, data: dict):
+ if command == "/generate":
+ subject = data["subject"]
+ return self.schedule_generate_agent.run({ "subject": subject })
+ elif command == "/generate_question":
+ subject = data["subject"]
+ title = data["title"]
+ description = data["description"]
+ content = data["content"]
+ return self.question_generate_agent.run({ "subject": subject, "title": title, "description": description, "content": content })
+ elif command == "/check_answer":
+ subject = data["subject"]
+ question = data["question"]
+ user_answer = data["user_answer"]
+ return self.check_answer_agent.run({ "subject": subject, "question": question, "user_answer": user_answer })
+ else:
+ pass
\ No newline at end of file
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/llm/llm_model.py b/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/llm/llm_model.py
new file mode 100644
index 00000000..c3d082bd
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/llm/llm_model.py
@@ -0,0 +1,14 @@
+from abc import ABC, abstractmethod
+
+class LLMModel(ABC):
+
+ def __init__(self, system_prompt: str = None) -> None:
+ self.system_prompt = system_prompt
+
+ @abstractmethod
+ def talk(self, prompt: str) -> str:
+ pass
+
+ @abstractmethod
+ def stream_talk(self, prompt: str):
+ pass
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/llm/openai_model.py b/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/llm/openai_model.py
new file mode 100644
index 00000000..197105c4
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/backend/alh/llm/openai_model.py
@@ -0,0 +1,46 @@
+from openai import OpenAI
+from alh.llm.llm_model import LLMModel
+
+class OpenAIModel(LLMModel):
+ def __init__(self, base_url: str, api_key: str, model_name: str, system_prompt: str = None):
+ super().__init__(system_prompt)
+ self.model_name = model_name
+ self.openai = OpenAI(
+ api_key=api_key,
+ base_url=base_url
+ )
+
+ def talk(self, prompt):
+ response = self.openai.chat.completions.create(
+ model=self.model_name,
+ messages=[
+ {"role": "system", "content": self.system_prompt if self.system_prompt else "You are a helpful assistant."},
+ {"role": "user", "content": prompt},
+ ],
+ )
+
+ return response.choices[0].message.content
+
+ def stream_talk(self, prompt):
+ response = self.openai.chat.completions.create(
+ model=self.model_name,
+ messages=[
+ {"role": "system", "content": self.system_prompt if self.system_prompt else "You are a helpful assistant."},
+ {"role": "user", "content": prompt},
+ {"role": "assistant", "content": ""}
+ ],
+ stream=True,
+ temperature=0.7,
+ top_p=0.8,
+ presence_penalty=1.5,
+ extra_body={
+ "reppen": 1.0,
+ "min_p": 0.0,
+ "top_k": 20
+ }
+ )
+
+ for chunk in response:
+ if len(chunk.choices) > 0 and chunk.choices[0].delta.content is not None:
+ yield chunk.choices[0].delta.content
+
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/backend/main.py b/Co-creation-projects/LYGreen-agent-learning-helper/backend/main.py
new file mode 100644
index 00000000..2de32321
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/backend/main.py
@@ -0,0 +1,35 @@
+# 学习资源(搜索)、学习资料(下载)、学习进度(记忆)
+
+# 用户输入:查找资料,生成习题,答疑解惑
+
+# =====================================
+import os
+from fastapi import FastAPI
+from fastapi.middleware.cors import CORSMiddleware
+from alh.command.command import Command
+from pydantic import BaseModel
+from typing import Optional
+
+app = FastAPI()
+
+class Request(BaseModel):
+ command: str
+ data: Optional[dict] = None
+
+class Response(BaseModel):
+ result: str
+ data: dict
+
+app.add_middleware(
+ CORSMiddleware,
+ allow_origins=["*"],
+ allow_credentials=True,
+ allow_methods=["*"],
+ allow_headers=["*"],
+)
+
+@app.post("/command")
+def parse_command(request: Request):
+ command = Command.get_instance()
+ data = command.run(request.command, request.data)
+ return Response(result="success", data=data)
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/backend/requirement.txt b/Co-creation-projects/LYGreen-agent-learning-helper/backend/requirement.txt
new file mode 100644
index 00000000..320eb918
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/backend/requirement.txt
@@ -0,0 +1,23 @@
+annotated-doc==0.0.4
+annotated-types==0.7.0
+anyio==4.13.0
+certifi==2026.2.25
+click==8.3.1
+colorama==0.4.6
+distro==1.9.0
+fastapi==0.135.2
+h11==0.16.0
+httpcore==1.0.9
+httpx==0.28.1
+idna==3.11
+jiter==0.13.0
+openai==2.30.0
+pydantic==2.12.5
+pydantic_core==2.41.5
+python-dotenv==1.2.2
+sniffio==1.3.1
+starlette==1.0.0
+tqdm==4.67.3
+typing-inspection==0.4.2
+typing_extensions==4.15.0
+uvicorn==0.42.0
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/frontend/.example.env b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/.example.env
new file mode 100644
index 00000000..408a3f1b
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/.example.env
@@ -0,0 +1 @@
+VITE_BACKEND_URL=
\ No newline at end of file
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/frontend/.gitignore b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/.gitignore
new file mode 100644
index 00000000..cd68f140
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/.gitignore
@@ -0,0 +1,39 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+dist-ssr
+coverage
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+*.tsbuildinfo
+
+.eslintcache
+
+# Cypress
+/cypress/videos/
+/cypress/screenshots/
+
+# Vitest
+__screenshots__/
+
+# Vite
+*.timestamp-*-*.mjs
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/frontend/env.d.ts b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/env.d.ts
new file mode 100644
index 00000000..11f02fe2
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/frontend/index.html b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/index.html
new file mode 100644
index 00000000..9e5fc8f0
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Vite App
+
+
+
+
+
+
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/frontend/package-lock.json b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/package-lock.json
new file mode 100644
index 00000000..51802306
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/package-lock.json
@@ -0,0 +1,2886 @@
+{
+ "name": "learning-helper-agent-web",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "learning-helper-agent-web",
+ "version": "0.0.0",
+ "dependencies": {
+ "vue": "^3.5.30"
+ },
+ "devDependencies": {
+ "@tsconfig/node24": "^24.0.4",
+ "@types/node": "^24.12.0",
+ "@vitejs/plugin-vue": "^6.0.4",
+ "@vue/tsconfig": "^0.9.0",
+ "npm-run-all2": "^8.0.4",
+ "typescript": "~5.9.3",
+ "vite": "^7.3.1",
+ "vite-plugin-vue-devtools": "^8.0.7",
+ "vue-tsc": "^3.2.5"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
+ "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz",
+ "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz",
+ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.29.0",
+ "@babel/generator": "^7.29.0",
+ "@babel/helper-compilation-targets": "^7.28.6",
+ "@babel/helper-module-transforms": "^7.28.6",
+ "@babel/helpers": "^7.28.6",
+ "@babel/parser": "^7.29.0",
+ "@babel/template": "^7.28.6",
+ "@babel/traverse": "^7.29.0",
+ "@babel/types": "^7.29.0",
+ "@jridgewell/remapping": "^2.3.5",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.29.1",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
+ "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.29.0",
+ "@babel/types": "^7.29.0",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
+ "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.27.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
+ "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.28.6",
+ "@babel/helper-validator-option": "^7.27.1",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz",
+ "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.27.3",
+ "@babel/helper-member-expression-to-functions": "^7.28.5",
+ "@babel/helper-optimise-call-expression": "^7.27.1",
+ "@babel/helper-replace-supers": "^7.28.6",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
+ "@babel/traverse": "^7.28.6",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-globals": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
+ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz",
+ "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.28.5",
+ "@babel/types": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
+ "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.28.6",
+ "@babel/types": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz",
+ "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.28.6",
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "@babel/traverse": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz",
+ "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
+ "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz",
+ "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-member-expression-to-functions": "^7.28.5",
+ "@babel/helper-optimise-call-expression": "^7.27.1",
+ "@babel/traverse": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz",
+ "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.29.2",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz",
+ "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.29.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.29.2",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz",
+ "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.29.0"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-decorators": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.0.tgz",
+ "integrity": "sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6",
+ "@babel/plugin-syntax-decorators": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-decorators": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.28.6.tgz",
+ "integrity": "sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz",
+ "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz",
+ "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz",
+ "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz",
+ "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.27.3",
+ "@babel/helper-create-class-features-plugin": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
+ "@babel/plugin-syntax-typescript": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
+ "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.28.6",
+ "@babel/parser": "^7.28.6",
+ "@babel/types": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
+ "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.29.0",
+ "@babel/generator": "^7.29.0",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.29.0",
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.29.0",
+ "debug": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
+ "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz",
+ "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz",
+ "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz",
+ "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz",
+ "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz",
+ "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz",
+ "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz",
+ "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz",
+ "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz",
+ "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz",
+ "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz",
+ "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz",
+ "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz",
+ "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz",
+ "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz",
+ "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz",
+ "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz",
+ "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz",
+ "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz",
+ "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz",
+ "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz",
+ "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz",
+ "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz",
+ "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz",
+ "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz",
+ "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz",
+ "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/remapping": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@polka/url": {
+ "version": "1.0.0-next.29",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz",
+ "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.0-rc.2",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.2.tgz",
+ "integrity": "sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.0.tgz",
+ "integrity": "sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.0.tgz",
+ "integrity": "sha512-u6JHLll5QKRvjciE78bQXDmqRqNs5M/3GVqZeMwvmjaNODJih/WIrJlFVEihvV0MiYFmd+ZyPr9wxOVbPAG2Iw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.0.tgz",
+ "integrity": "sha512-qEF7CsKKzSRc20Ciu2Zw1wRrBz4g56F7r/vRwY430UPp/nt1x21Q/fpJ9N5l47WWvJlkNCPJz3QRVw008fi7yA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.0.tgz",
+ "integrity": "sha512-WADYozJ4QCnXCH4wPB+3FuGmDPoFseVCUrANmA5LWwGmC6FL14BWC7pcq+FstOZv3baGX65tZ378uT6WG8ynTw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.0.tgz",
+ "integrity": "sha512-6b8wGHJlDrGeSE3aH5mGNHBjA0TTkxdoNHik5EkvPHCt351XnigA4pS7Wsj/Eo9Y8RBU6f35cjN9SYmCFBtzxw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.0.tgz",
+ "integrity": "sha512-h25Ga0t4jaylMB8M/JKAyrvvfxGRjnPQIR8lnCayyzEjEOx2EJIlIiMbhpWxDRKGKF8jbNH01NnN663dH638mA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.0.tgz",
+ "integrity": "sha512-RzeBwv0B3qtVBWtcuABtSuCzToo2IEAIQrcyB/b2zMvBWVbjo8bZDjACUpnaafaxhTw2W+imQbP2BD1usasK4g==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.0.tgz",
+ "integrity": "sha512-Sf7zusNI2CIU1HLzuu9Tc5YGAHEZs5Lu7N1ssJG4Tkw6e0MEsN7NdjUDDfGNHy2IU+ENyWT+L2obgWiguWibWQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.0.tgz",
+ "integrity": "sha512-DX2x7CMcrJzsE91q7/O02IJQ5/aLkVtYFryqCjduJhUfGKG6yJV8hxaw8pZa93lLEpPTP/ohdN4wFz7yp/ry9A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.0.tgz",
+ "integrity": "sha512-09EL+yFVbJZlhcQfShpswwRZ0Rg+z/CsSELFCnPt3iK+iqwGsI4zht3secj5vLEs957QvFFXnzAT0FFPIxSrkQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-gnu": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.0.tgz",
+ "integrity": "sha512-i9IcCMPr3EXm8EQg5jnja0Zyc1iFxJjZWlb4wr7U2Wx/GrddOuEafxRdMPRYVaXjgbhvqalp6np07hN1w9kAKw==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loong64-musl": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.0.tgz",
+ "integrity": "sha512-DGzdJK9kyJ+B78MCkWeGnpXJ91tK/iKA6HwHxF4TAlPIY7GXEvMe8hBFRgdrR9Ly4qebR/7gfUs9y2IoaVEyog==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.0.tgz",
+ "integrity": "sha512-RwpnLsqC8qbS8z1H1AxBA1H6qknR4YpPR9w2XX0vo2Sz10miu57PkNcnHVaZkbqyw/kUWfKMI73jhmfi9BRMUQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-ppc64-musl": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.0.tgz",
+ "integrity": "sha512-Z8pPf54Ly3aqtdWC3G4rFigZgNvd+qJlOE52fmko3KST9SoGfAdSRCwyoyG05q1HrrAblLbk1/PSIV+80/pxLg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.0.tgz",
+ "integrity": "sha512-3a3qQustp3COCGvnP4SvrMHnPQ9d1vzCakQVRTliaz8cIp/wULGjiGpbcqrkv0WrHTEp8bQD/B3HBjzujVWLOA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.0.tgz",
+ "integrity": "sha512-pjZDsVH/1VsghMJ2/kAaxt6dL0psT6ZexQVrijczOf+PeP2BUqTHYejk3l6TlPRydggINOeNRhvpLa0AYpCWSQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.0.tgz",
+ "integrity": "sha512-3ObQs0BhvPgiUVZrN7gqCSvmFuMWvWvsjG5ayJ3Lraqv+2KhOsp+pUbigqbeWqueGIsnn+09HBw27rJ+gYK4VQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.0.tgz",
+ "integrity": "sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.0.tgz",
+ "integrity": "sha512-k09oiRCi/bHU9UVFqD17r3eJR9bn03TyKraCrlz5ULFJGdJGi7VOmm9jl44vOJvRJ6P7WuBi/s2A97LxxHGIdw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-openbsd-x64": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.0.tgz",
+ "integrity": "sha512-1o/0/pIhozoSaDJoDcec+IVLbnRtQmHwPV730+AOD29lHEEo4F5BEUB24H0OBdhbBBDwIOSuf7vgg0Ywxdfiiw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-openharmony-arm64": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.0.tgz",
+ "integrity": "sha512-pESDkos/PDzYwtyzB5p/UoNU/8fJo68vcXM9ZW2V0kjYayj1KaaUfi1NmTUTUpMn4UhU4gTuK8gIaFO4UGuMbA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.0.tgz",
+ "integrity": "sha512-hj1wFStD7B1YBeYmvY+lWXZ7ey73YGPcViMShYikqKT1GtstIKQAtfUI6yrzPjAy/O7pO0VLXGmUVWXQMaYgTQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.0.tgz",
+ "integrity": "sha512-SyaIPFoxmUPlNDq5EHkTbiKzmSEmq/gOYFI/3HHJ8iS/v1mbugVa7dXUzcJGQfoytp9DJFLhHH4U3/eTy2Bq4w==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-gnu": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.0.tgz",
+ "integrity": "sha512-RdcryEfzZr+lAr5kRm2ucN9aVlCCa2QNq4hXelZxb8GG0NJSazq44Z3PCCc8wISRuCVnGs0lQJVX5Vp6fKA+IA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.0.tgz",
+ "integrity": "sha512-PrsWNQ8BuE00O3Xsx3ALh2Df8fAj9+cvvX9AIA6o4KpATR98c9mud4XtDWVvsEuyia5U4tVSTKygawyJkjm60w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@tsconfig/node24": {
+ "version": "24.0.4",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node24/-/node24-24.0.4.tgz",
+ "integrity": "sha512-2A933l5P5oCbv6qSxHs7ckKwobs8BDAe9SJ/Xr2Hy+nDlwmLE1GhFh/g/vXGRZWgxBg9nX/5piDtHR9Dkw/XuA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "24.12.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.0.tgz",
+ "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~7.16.0"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.5.tgz",
+ "integrity": "sha512-bL3AxKuQySfk1iGcBsQnoRVexTPJq0Z/ixFVM8OhVJAP6ZXXXLtM7NFKWhLl30Kg7uTBqIaPXbh+nuQCuBDedg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@rolldown/pluginutils": "1.0.0-rc.2"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "peerDependencies": {
+ "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@volar/language-core": {
+ "version": "2.4.28",
+ "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.28.tgz",
+ "integrity": "sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@volar/source-map": "2.4.28"
+ }
+ },
+ "node_modules/@volar/source-map": {
+ "version": "2.4.28",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.28.tgz",
+ "integrity": "sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@volar/typescript": {
+ "version": "2.4.28",
+ "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.28.tgz",
+ "integrity": "sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@volar/language-core": "2.4.28",
+ "path-browserify": "^1.0.1",
+ "vscode-uri": "^3.0.8"
+ }
+ },
+ "node_modules/@vue/babel-helper-vue-transform-on": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.5.0.tgz",
+ "integrity": "sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vue/babel-plugin-jsx": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.5.0.tgz",
+ "integrity": "sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/plugin-syntax-jsx": "^7.27.1",
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.28.0",
+ "@babel/types": "^7.28.2",
+ "@vue/babel-helper-vue-transform-on": "1.5.0",
+ "@vue/babel-plugin-resolve-type": "1.5.0",
+ "@vue/shared": "^3.5.18"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.5.0.tgz",
+ "integrity": "sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/parser": "^7.28.0",
+ "@vue/compiler-sfc": "^3.5.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sxzz"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.5.31",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.31.tgz",
+ "integrity": "sha512-k/ueL14aNIEy5Onf0OVzR8kiqF/WThgLdFhxwa4e/KF/0qe38IwIdofoSWBTvvxQOesaz6riAFAUaYjoF9fLLQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.29.2",
+ "@vue/shared": "3.5.31",
+ "entities": "^7.0.1",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.5.31",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.31.tgz",
+ "integrity": "sha512-BMY/ozS/xxjYqRFL+tKdRpATJYDTTgWSo0+AJvJNg4ig+Hgb0dOsHPXvloHQ5hmlivUqw1Yt2pPIqp4e0v1GUw==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-core": "3.5.31",
+ "@vue/shared": "3.5.31"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.5.31",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.31.tgz",
+ "integrity": "sha512-M8wpPgR9UJ8MiRGjppvx9uWJfLV7A/T+/rL8s/y3QG3u0c2/YZgff3d6SuimKRIhcYnWg5fTfDMlz2E6seUW8Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.29.2",
+ "@vue/compiler-core": "3.5.31",
+ "@vue/compiler-dom": "3.5.31",
+ "@vue/compiler-ssr": "3.5.31",
+ "@vue/shared": "3.5.31",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.21",
+ "postcss": "^8.5.8",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.5.31",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.31.tgz",
+ "integrity": "sha512-h0xIMxrt/LHOvJKMri+vdYT92BrK3HFLtDqq9Pr/lVVfE4IyKZKvWf0vJFW10Yr6nX02OR4MkJwI0c1HDa1hog==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.31",
+ "@vue/shared": "3.5.31"
+ }
+ },
+ "node_modules/@vue/devtools-core": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-8.1.1.tgz",
+ "integrity": "sha512-bCCsSABp1/ot4j8xJEycM6Mtt2wbuucfByr6hMgjbYhrtlscOJypZKvy8f1FyWLYrLTchB5Qz216Lm92wfbq0A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/devtools-kit": "^8.1.1",
+ "@vue/devtools-shared": "^8.1.1"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/@vue/devtools-kit": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-8.1.1.tgz",
+ "integrity": "sha512-gVBaBv++i+adg4JpH71k9ppl4soyR7Y2McEqO5YNgv0BI1kMZ7BDX5gnwkZ5COYgiCyhejZG+yGNrBAjj6Coqg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/devtools-shared": "^8.1.1",
+ "birpc": "^2.6.1",
+ "hookable": "^5.5.3",
+ "perfect-debounce": "^2.0.0"
+ }
+ },
+ "node_modules/@vue/devtools-shared": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-8.1.1.tgz",
+ "integrity": "sha512-+h4ttmJYl/txpxHKaoZcaKpC+pvckgLzIDiSQlaQ7kKthKh8KuwoLW2D8hPJEnqKzXOvu15UHEoGyngAXCz0EQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vue/language-core": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.2.6.tgz",
+ "integrity": "sha512-xYYYX3/aVup576tP/23sEUpgiEnujrENaoNRbaozC1/MA9I6EGFQRJb4xrt/MmUCAGlxTKL2RmT8JLTPqagCkg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@volar/language-core": "2.4.28",
+ "@vue/compiler-dom": "^3.5.0",
+ "@vue/shared": "^3.5.0",
+ "alien-signals": "^3.0.0",
+ "muggle-string": "^0.4.1",
+ "path-browserify": "^1.0.1",
+ "picomatch": "^4.0.2"
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.5.31",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.31.tgz",
+ "integrity": "sha512-DtKXxk9E/KuVvt8VxWu+6Luc9I9ETNcqR1T1oW1gf02nXaZ1kuAx58oVu7uX9XxJR0iJCro6fqBLw9oSBELo5g==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/shared": "3.5.31"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.5.31",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.31.tgz",
+ "integrity": "sha512-AZPmIHXEAyhpkmN7aWlqjSfYynmkWlluDNPHMCZKFHH+lLtxP/30UJmoVhXmbDoP1Ng0jG0fyY2zCj1PnSSA6Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.5.31",
+ "@vue/shared": "3.5.31"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.5.31",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.31.tgz",
+ "integrity": "sha512-xQJsNRmGPeDCJq/u813tyonNgWBFjzfVkBwDREdEWndBnGdHLHgkwNBQxLtg4zDrzKTEcnikUy1UUNecb3lJ6g==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/reactivity": "3.5.31",
+ "@vue/runtime-core": "3.5.31",
+ "@vue/shared": "3.5.31",
+ "csstype": "^3.2.3"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.5.31",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.31.tgz",
+ "integrity": "sha512-GJuwRvMcdZX/CriUnyIIOGkx3rMV3H6sOu0JhdKbduaeCji6zb60iOGMY7tFoN24NfsUYoFBhshZtGxGpxO4iA==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.5.31",
+ "@vue/shared": "3.5.31"
+ },
+ "peerDependencies": {
+ "vue": "3.5.31"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.5.31",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.31.tgz",
+ "integrity": "sha512-nBxuiuS9Lj5bPkPbWogPUnjxxWpkRniX7e5UBQDWl6Fsf4roq9wwV+cR7ezQ4zXswNvPIlsdj1slcLB7XCsRAw==",
+ "license": "MIT"
+ },
+ "node_modules/@vue/tsconfig": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.9.1.tgz",
+ "integrity": "sha512-buvjm+9NzLCJL29KY1j1991YYJ5e6275OiK+G4jtmfIb+z4POywbdm0wXusT9adVWqe0xqg70TbI7+mRx4uU9w==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "typescript": ">= 5.8",
+ "vue": "^3.4.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ },
+ "vue": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/alien-signals": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-3.1.2.tgz",
+ "integrity": "sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/ansis": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz",
+ "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.10.10",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.10.tgz",
+ "integrity": "sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/birpc": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz",
+ "integrity": "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
+ "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "baseline-browser-mapping": "^2.9.0",
+ "caniuse-lite": "^1.0.30001759",
+ "electron-to-chromium": "^1.5.263",
+ "node-releases": "^2.0.27",
+ "update-browserslist-db": "^1.2.0"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/bundle-name": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
+ "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "run-applescript": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001781",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001781.tgz",
+ "integrity": "sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cross-spawn/node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/cross-spawn/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
+ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/default-browser": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz",
+ "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bundle-name": "^4.1.0",
+ "default-browser-id": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz",
+ "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.323",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.323.tgz",
+ "integrity": "sha512-oQm+FxbazvN2WICCbvJgj3IYPKV8awip57+W5VP+Aatk4kFU4pDYCPHZOX22Z27zpw8uttBehEqgK+VTJAYrVw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/entities": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
+ "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/error-stack-parser-es": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz",
+ "integrity": "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.27.4",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz",
+ "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.27.4",
+ "@esbuild/android-arm": "0.27.4",
+ "@esbuild/android-arm64": "0.27.4",
+ "@esbuild/android-x64": "0.27.4",
+ "@esbuild/darwin-arm64": "0.27.4",
+ "@esbuild/darwin-x64": "0.27.4",
+ "@esbuild/freebsd-arm64": "0.27.4",
+ "@esbuild/freebsd-x64": "0.27.4",
+ "@esbuild/linux-arm": "0.27.4",
+ "@esbuild/linux-arm64": "0.27.4",
+ "@esbuild/linux-ia32": "0.27.4",
+ "@esbuild/linux-loong64": "0.27.4",
+ "@esbuild/linux-mips64el": "0.27.4",
+ "@esbuild/linux-ppc64": "0.27.4",
+ "@esbuild/linux-riscv64": "0.27.4",
+ "@esbuild/linux-s390x": "0.27.4",
+ "@esbuild/linux-x64": "0.27.4",
+ "@esbuild/netbsd-arm64": "0.27.4",
+ "@esbuild/netbsd-x64": "0.27.4",
+ "@esbuild/openbsd-arm64": "0.27.4",
+ "@esbuild/openbsd-x64": "0.27.4",
+ "@esbuild/openharmony-arm64": "0.27.4",
+ "@esbuild/sunos-x64": "0.27.4",
+ "@esbuild/win32-arm64": "0.27.4",
+ "@esbuild/win32-ia32": "0.27.4",
+ "@esbuild/win32-x64": "0.27.4"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "license": "MIT"
+ },
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/hookable": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
+ "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz",
+ "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-inside-container": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz",
+ "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz",
+ "integrity": "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/kolorist": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
+ "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/memorystream": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+ "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/mrmime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
+ "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/muggle-string": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz",
+ "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.36",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz",
+ "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/npm-normalize-package-bin": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz",
+ "integrity": "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/npm-run-all2": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-8.0.4.tgz",
+ "integrity": "sha512-wdbB5My48XKp2ZfJUlhnLVihzeuA1hgBnqB2J9ahV77wLS+/YAJAlN8I+X3DIFIPZ3m5L7nplmlbhNiFDmXRDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "cross-spawn": "^7.0.6",
+ "memorystream": "^0.3.1",
+ "picomatch": "^4.0.2",
+ "pidtree": "^0.6.0",
+ "read-package-json-fast": "^4.0.0",
+ "shell-quote": "^1.7.3",
+ "which": "^5.0.0"
+ },
+ "bin": {
+ "npm-run-all": "bin/npm-run-all/index.js",
+ "npm-run-all2": "bin/npm-run-all/index.js",
+ "run-p": "bin/run-p/index.js",
+ "run-s": "bin/run-s/index.js"
+ },
+ "engines": {
+ "node": "^20.5.0 || >=22.0.0",
+ "npm": ">= 10"
+ }
+ },
+ "node_modules/ohash": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz",
+ "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/open": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz",
+ "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "default-browser": "^5.2.1",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "wsl-utils": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/perfect-debounce": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz",
+ "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pidtree": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz",
+ "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "pidtree": "bin/pidtree.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.8",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz",
+ "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/read-package-json-fast": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-4.0.0.tgz",
+ "integrity": "sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "json-parse-even-better-errors": "^4.0.0",
+ "npm-normalize-package-bin": "^4.0.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "4.60.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.0.tgz",
+ "integrity": "sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.8"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.60.0",
+ "@rollup/rollup-android-arm64": "4.60.0",
+ "@rollup/rollup-darwin-arm64": "4.60.0",
+ "@rollup/rollup-darwin-x64": "4.60.0",
+ "@rollup/rollup-freebsd-arm64": "4.60.0",
+ "@rollup/rollup-freebsd-x64": "4.60.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.60.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.60.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.60.0",
+ "@rollup/rollup-linux-arm64-musl": "4.60.0",
+ "@rollup/rollup-linux-loong64-gnu": "4.60.0",
+ "@rollup/rollup-linux-loong64-musl": "4.60.0",
+ "@rollup/rollup-linux-ppc64-gnu": "4.60.0",
+ "@rollup/rollup-linux-ppc64-musl": "4.60.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.60.0",
+ "@rollup/rollup-linux-riscv64-musl": "4.60.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.60.0",
+ "@rollup/rollup-linux-x64-gnu": "4.60.0",
+ "@rollup/rollup-linux-x64-musl": "4.60.0",
+ "@rollup/rollup-openbsd-x64": "4.60.0",
+ "@rollup/rollup-openharmony-arm64": "4.60.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.60.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.60.0",
+ "@rollup/rollup-win32-x64-gnu": "4.60.0",
+ "@rollup/rollup-win32-x64-msvc": "4.60.0",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/run-applescript": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
+ "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shell-quote": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
+ "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/sirv": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz",
+ "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@polka/url": "^1.0.0-next.24",
+ "mrmime": "^2.0.0",
+ "totalist": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.15",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/totalist": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
+ "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "devOptional": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
+ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/unplugin-utils": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.3.1.tgz",
+ "integrity": "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pathe": "^2.0.3",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sxzz"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/vite": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz",
+ "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.27.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/vite-dev-rpc": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/vite-dev-rpc/-/vite-dev-rpc-1.1.0.tgz",
+ "integrity": "sha512-pKXZlgoXGoE8sEKiKJSng4hI1sQ4wi5YT24FCrwrLt6opmkjlqPPVmiPWWJn8M8byMxRGzp1CrFuqQs4M/Z39A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "birpc": "^2.4.0",
+ "vite-hot-client": "^2.1.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0"
+ }
+ },
+ "node_modules/vite-hot-client": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-2.1.0.tgz",
+ "integrity": "sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0"
+ }
+ },
+ "node_modules/vite-plugin-inspect": {
+ "version": "11.3.3",
+ "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-11.3.3.tgz",
+ "integrity": "sha512-u2eV5La99oHoYPHE6UvbwgEqKKOQGz86wMg40CCosP6q8BkB6e5xPneZfYagK4ojPJSj5anHCrnvC20DpwVdRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansis": "^4.1.0",
+ "debug": "^4.4.1",
+ "error-stack-parser-es": "^1.0.5",
+ "ohash": "^2.0.11",
+ "open": "^10.2.0",
+ "perfect-debounce": "^2.0.0",
+ "sirv": "^3.0.1",
+ "unplugin-utils": "^0.3.0",
+ "vite-dev-rpc": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "vite": "^6.0.0 || ^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@nuxt/kit": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-plugin-vue-devtools": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-8.1.1.tgz",
+ "integrity": "sha512-9qTpOmZ2vHpvlI9hdVXAQ1Ry4I8GcBArU7aPi0qfIaV7fQIXy0L1nb6X4mFY2Gw0dYshHuLbIl0Ulb572SCjsQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vue/devtools-core": "^8.1.1",
+ "@vue/devtools-kit": "^8.1.1",
+ "@vue/devtools-shared": "^8.1.1",
+ "sirv": "^3.0.2",
+ "vite-plugin-inspect": "^11.3.3",
+ "vite-plugin-vue-inspector": "^5.3.2"
+ },
+ "engines": {
+ "node": ">=v14.21.3"
+ },
+ "peerDependencies": {
+ "vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/vite-plugin-vue-inspector": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.4.0.tgz",
+ "integrity": "sha512-Iq/024CydcE46FZqWPU4t4lw4uYOdLnFSO1RNxJVt2qY9zxIjmnkBqhHnYaReWM82kmNnaXs7OkfgRrV2GEjyw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.23.0",
+ "@babel/plugin-proposal-decorators": "^7.23.0",
+ "@babel/plugin-syntax-import-attributes": "^7.22.5",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-transform-typescript": "^7.22.15",
+ "@vue/babel-plugin-jsx": "^1.1.5",
+ "@vue/compiler-dom": "^3.3.4",
+ "kolorist": "^1.8.0",
+ "magic-string": "^0.30.4"
+ },
+ "peerDependencies": {
+ "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/vscode-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz",
+ "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/vue": {
+ "version": "3.5.31",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.31.tgz",
+ "integrity": "sha512-iV/sU9SzOlmA/0tygSmjkEN6Jbs3nPoIPFhCMLD2STrjgOU8DX7ZtzMhg4ahVwf5Rp9KoFzcXeB1ZrVbLBp5/Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.31",
+ "@vue/compiler-sfc": "3.5.31",
+ "@vue/runtime-dom": "3.5.31",
+ "@vue/server-renderer": "3.5.31",
+ "@vue/shared": "3.5.31"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-tsc": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-3.2.6.tgz",
+ "integrity": "sha512-gYW/kWI0XrwGzd0PKc7tVB/qpdeAkIZLNZb10/InizkQjHjnT8weZ/vBarZoj4kHKbUTZT/bAVgoOr8x4NsQ/Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@volar/typescript": "2.4.28",
+ "@vue/language-core": "3.2.6"
+ },
+ "bin": {
+ "vue-tsc": "bin/vue-tsc.js"
+ },
+ "peerDependencies": {
+ "typescript": ">=5.0.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
+ "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/wsl-utils": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz",
+ "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-wsl": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true,
+ "license": "ISC"
+ }
+ }
+}
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/frontend/package.json b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/package.json
new file mode 100644
index 00000000..3d1bc88a
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "learning-helper-agent-web",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "run-p type-check \"build-only {@}\" --",
+ "preview": "vite preview",
+ "build-only": "vite build",
+ "type-check": "vue-tsc --build"
+ },
+ "dependencies": {
+ "vue": "^3.5.30"
+ },
+ "devDependencies": {
+ "@tsconfig/node24": "^24.0.4",
+ "@types/node": "^24.12.0",
+ "@vitejs/plugin-vue": "^6.0.4",
+ "@vue/tsconfig": "^0.9.0",
+ "npm-run-all2": "^8.0.4",
+ "typescript": "~5.9.3",
+ "vite": "^7.3.1",
+ "vite-plugin-vue-devtools": "^8.0.7",
+ "vue-tsc": "^3.2.5"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+}
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/frontend/public/favicon.ico b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/public/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2
GIT binary patch
literal 4286
zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj
zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56
zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy
zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei
z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX
zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm
zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp=
zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8
zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO
z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3
z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD
zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6
z={Xwx{T%b6i9IjI)Ls)S{-*mq<@~R{?$}ZKjf;^k75i_}(2MXt}^SEBVg7AI@28
zo_uPg2V)_e-`2Ois=PYoe%9u*n9({PFR)OnHJPi{dNx>KxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S
literal 0
HcmV?d00001
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/frontend/src/App.vue b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/src/App.vue
new file mode 100644
index 00000000..ada47ea6
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/src/App.vue
@@ -0,0 +1,702 @@
+
+
+
+
+
+
+
+
+
AI 专属学习路线
+
告诉我你想学什么,为你规划结构化的闯关指南
+
+
+
+
+
+
+
+
+
正在为你量身定制《{{ subject }}》...
+
{{ loadingMessage }}
+
+
+
+
+
+
+
+
第 {{ currentStepIndex + 1 }} 关
+
{{ currentStep?.title }}
+
{{ currentStep?.description }}
+
{{ currentStep?.content }}
+
+
+
🧠 随堂测试(通关条件)
+
{{ currentStep.qAndA?.question }}
+
+
+
+
+
+
+
+
+ {{ feedback.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
🏆
+
恭喜通关!
+
你已成功掌握了《{{ subject }}》的核心知识点,太棒了!
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/frontend/src/main.ts b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/src/main.ts
new file mode 100644
index 00000000..c1466c3a
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/src/main.ts
@@ -0,0 +1,5 @@
+import { createApp } from 'vue'
+import "./style.css"
+import App from './App.vue'
+
+createApp(App).mount('#app')
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/frontend/src/style.css b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/src/style.css
new file mode 100644
index 00000000..3cd320d9
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/src/style.css
@@ -0,0 +1,11 @@
+:root {
+ --primary: #6c5ce7;
+ --primary-hover: #8172f3;
+ --success: #00b894;
+ --error: #ff7675;
+ --bg-color: #f0f3f8;
+ --card-bg: #ffffff;
+ --text-main: #2d3436;
+ --text-sub: #636e72;
+ --border-radius: 16px;
+}
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/frontend/tsconfig.app.json b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/tsconfig.app.json
new file mode 100644
index 00000000..c0f2d867
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/tsconfig.app.json
@@ -0,0 +1,18 @@
+{
+ "extends": "@vue/tsconfig/tsconfig.dom.json",
+ "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
+ "exclude": ["src/**/__tests__/*"],
+ "compilerOptions": {
+ // Extra safety for array and object lookups, but may have false positives.
+ "noUncheckedIndexedAccess": true,
+
+ // Path mapping for cleaner imports.
+ "paths": {
+ "@/*": ["./src/*"]
+ },
+
+ // `vue-tsc --build` produces a .tsbuildinfo file for incremental type-checking.
+ // Specified here to keep it out of the root directory.
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo"
+ }
+}
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/frontend/tsconfig.json b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/tsconfig.json
new file mode 100644
index 00000000..66b5e570
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/tsconfig.json
@@ -0,0 +1,11 @@
+{
+ "files": [],
+ "references": [
+ {
+ "path": "./tsconfig.node.json"
+ },
+ {
+ "path": "./tsconfig.app.json"
+ }
+ ]
+}
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/frontend/tsconfig.node.json b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/tsconfig.node.json
new file mode 100644
index 00000000..c9b2badc
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/tsconfig.node.json
@@ -0,0 +1,27 @@
+// TSConfig for modules that run in Node.js environment via either transpilation or type-stripping.
+{
+ "extends": "@tsconfig/node24/tsconfig.json",
+ "include": [
+ "vite.config.*",
+ "vitest.config.*",
+ "cypress.config.*",
+ "playwright.config.*",
+ "eslint.config.*"
+ ],
+ "compilerOptions": {
+ // Most tools use transpilation instead of Node.js's native type-stripping.
+ // Bundler mode provides a smoother developer experience.
+ "module": "preserve",
+ "moduleResolution": "bundler",
+
+ // Include Node.js types and avoid accidentally including other `@types/*` packages.
+ "types": ["node"],
+
+ // Disable emitting output during `vue-tsc --build`, which is used for type-checking only.
+ "noEmit": true,
+
+ // `vue-tsc --build` produces a .tsbuildinfo file for incremental type-checking.
+ // Specified here to keep it out of the root directory.
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo"
+ }
+}
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/frontend/vite.config.ts b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/vite.config.ts
new file mode 100644
index 00000000..4217010a
--- /dev/null
+++ b/Co-creation-projects/LYGreen-agent-learning-helper/frontend/vite.config.ts
@@ -0,0 +1,18 @@
+import { fileURLToPath, URL } from 'node:url'
+
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+import vueDevTools from 'vite-plugin-vue-devtools'
+
+// https://vite.dev/config/
+export default defineConfig({
+ plugins: [
+ vue(),
+ vueDevTools(),
+ ],
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url))
+ },
+ },
+})
diff --git a/Co-creation-projects/LYGreen-agent-learning-helper/img/image0.png b/Co-creation-projects/LYGreen-agent-learning-helper/img/image0.png
new file mode 100644
index 0000000000000000000000000000000000000000..d7f255302f318cdb076d63cfeeacca43f508fb6c
GIT binary patch
literal 164137
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