mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
Merge 9508463bef into 4fade39c90
This commit is contained in:
commit
f465212f98
4 changed files with 2050 additions and 594 deletions
436
README_CN.md
Normal file
436
README_CN.md
Normal file
|
|
@ -0,0 +1,436 @@
|
|||
# Hermes Agent - 自进化 AI 代理
|
||||
|
||||
<p align="center">
|
||||
<img src="assets/banner.png" alt="Hermes Agent" width="100%">
|
||||
</p>
|
||||
|
||||
## 简介
|
||||
|
||||
**Hermes Agent** 是由 [Nous Research](https://nousresearch.com) 开发的自进化 AI 代理工具。它是唯一内置学习循环的代理系统——能够从经验中创建技能、在使用过程中改进技能、自主保留知识、搜索历史对话,并在多会话中建立对用户的深度理解模型。
|
||||
|
||||
你可以在 $5 VPS、GPU 集群或几乎无空闲成本的无服务器基础设施上运行它。它不局限于你的笔记本电脑——你可以在云端 VM 上运行它,同时通过 Telegram 与它对话。
|
||||
|
||||
## 核心特性
|
||||
|
||||
### 🔄 闭环学习系统
|
||||
- **自主技能创建**:完成复杂任务后自动创建技能
|
||||
- **技能自改进**:在使用过程中持续优化技能
|
||||
- **智能记忆管理**:定期提示保存知识
|
||||
- **跨会话搜索**:FTS5 会话搜索 + LLM 摘要,实现跨会话回忆
|
||||
- **用户建模**:兼容 [Honcho](https://github.com/plastic-labs/honcho) 辩证用户建模
|
||||
- **开放标准**:支持 [agentskills.io](https://agentskills.io) 开放技能标准
|
||||
|
||||
### 💬 多平台支持
|
||||
- **CLI 交互**:完整的 TUI(终端 UI),支持多行编辑、斜杠命令自动补全、对话历史、中断重定向、流式工具输出
|
||||
- **消息平台**:Telegram、Discord、Slack、WhatsApp、Signal、Email、Home Assistant 等——所有平台共享同一网关进程
|
||||
- **语音支持**:语音备忘录转录、跨平台对话连续性
|
||||
|
||||
### ⏰ 定时自动化
|
||||
- **内置 Cron 调度器**:支持任何平台的任务投递
|
||||
- **自然语言任务**:每日报告、夜间备份、每周审计——全部用自然语言配置,无人值守运行
|
||||
|
||||
### 🤖 代理委派与并行
|
||||
- **子代理委派**:生成独立的子代理处理并行工作流
|
||||
- **RPC 脚本调用**:编写通过 RPC 调用工具的 Python 脚本,将多步骤流水线压缩为零上下文成本的轮次
|
||||
|
||||
### 🌍 无处不在的运行环境
|
||||
- **六种终端后端**:本地、Docker、SSH、Daytona、Singularity、Modal
|
||||
- **无服务器持久化**:Daytona 和 Modal 提供无服务器持久化——代理环境在空闲时休眠,按需唤醒,会话间几乎无成本
|
||||
- **灵活部署**:在 $5 VPS 或 GPU 集群上运行
|
||||
|
||||
### 🧪 研究就绪
|
||||
- **批量轨迹生成**
|
||||
- **Atropos RL 环境**
|
||||
- **轨迹压缩**:用于训练下一代工具调用模型
|
||||
|
||||
### 🔌 模型无关
|
||||
支持任何你想用的模型:
|
||||
- [Nous Portal](https://portal.nousresearch.com)
|
||||
- [OpenRouter](https://openrouter.ai)(200+ 模型)
|
||||
- [NVIDIA NIM](https://build.nvidia.com)(Nemotron)
|
||||
- [小米 MiMo](https://platform.xiaomimimo.com)
|
||||
- [z.ai/GLM](https://z.ai)
|
||||
- [Kimi/Moonshot](https://platform.moonshot.ai)
|
||||
- [MiniMax](https://www.minimax.io)
|
||||
- [Hugging Face](https://huggingface.co)
|
||||
- OpenAI、Anthropic
|
||||
- 或你自己的端点
|
||||
|
||||
使用 `hermes model` 切换模型——无需代码更改,无锁定。
|
||||
|
||||
---
|
||||
|
||||
## 安装指南
|
||||
|
||||
### 方式一:标准安装(网络畅通)
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
|
||||
```
|
||||
|
||||
支持 Linux、macOS、WSL2 和 Android(Termux)。
|
||||
|
||||
### 方式二:本地安装(适合中国用户或离线环境)
|
||||
|
||||
如果你在中国或网络环境无法访问 GitHub,可以使用以下方法:
|
||||
|
||||
**步骤 1:下载代码**
|
||||
- 从 GitHub 下载 ZIP 或使用镜像站下载
|
||||
- 或使用 Git 镜像克隆
|
||||
|
||||
**步骤 2:使用本地安装模式**
|
||||
|
||||
```bash
|
||||
# 进入下载的代码目录
|
||||
cd /path/to/hermes-agent
|
||||
|
||||
# 使用 --local 模式安装,指定已下载的目录
|
||||
bash install.sh --local --dir /path/to/hermes-agent
|
||||
```
|
||||
|
||||
**安装选项说明:**
|
||||
|
||||
| 选项 | 说明 |
|
||||
|------|------|
|
||||
| `--local` | 使用本地目录,跳过 git clone |
|
||||
| `--dir PATH` | 指定安装目录路径 |
|
||||
| `--no-venv` | 不创建虚拟环境 |
|
||||
| `--skip-setup` | 跳过交互式设置向导 |
|
||||
| `--hermes-home PATH` | 指定数据目录(默认:~/.hermes) |
|
||||
|
||||
**完整示例:**
|
||||
|
||||
```bash
|
||||
# 假设你已将代码下载到 /home/user/hermes-agent
|
||||
cd /home/user/hermes-agent
|
||||
|
||||
# 使用本地目录安装
|
||||
bash install.sh --local --dir /home/user/hermes-agent
|
||||
|
||||
# 或者跳过设置向导(适合自动化部署)
|
||||
bash install.sh --local --dir /home/user/hermes-agent --skip-setup
|
||||
```
|
||||
|
||||
### 方式三:开发者安装(已克隆仓库)
|
||||
|
||||
如果你是开发者,已经克隆了仓库:
|
||||
|
||||
```bash
|
||||
cd hermes-agent
|
||||
./setup-hermes.sh
|
||||
```
|
||||
|
||||
### Windows 用户
|
||||
|
||||
原生 Windows 不支持。请安装 [WSL2](https://learn.microsoft.com/zh-cn/windows/wsl/install) 然后使用上述方式。
|
||||
|
||||
---
|
||||
|
||||
## 快速入门
|
||||
|
||||
### 安装后步骤
|
||||
|
||||
```bash
|
||||
# 重新加载 shell 配置
|
||||
source ~/.bashrc # 或 source ~/.zshrc
|
||||
|
||||
# 开始对话
|
||||
hermes
|
||||
```
|
||||
|
||||
### 常用命令
|
||||
|
||||
| 命令 | 说明 |
|
||||
|------|------|
|
||||
| `hermes` | 启动交互式 CLI,开始对话 |
|
||||
| `hermes model` | 选择 LLM 提供商和模型 |
|
||||
| `hermes tools` | 配置启用哪些工具 |
|
||||
| `hermes config set` | 设置单个配置值 |
|
||||
| `hermes gateway` | 启动消息网关(Telegram、Discord 等) |
|
||||
| `hermes setup` | 运行完整设置向导(一次配置所有) |
|
||||
| `hermes update` | 更新到最新版本 |
|
||||
| `hermes doctor` | 诊断任何问题 |
|
||||
|
||||
### 斜杠命令速查
|
||||
|
||||
无论是 CLI 还是消息平台,以下斜杠命令都可用:
|
||||
|
||||
| 命令 | 说明 |
|
||||
|------|------|
|
||||
| `/new` 或 `/reset` | 开始新对话 |
|
||||
| `/model [provider:model]` | 切换模型 |
|
||||
| `/personality [name]` | 设置个性 |
|
||||
| `/retry`, `/undo` | 重试或撤销上一轮 |
|
||||
| `/compress`, `/usage`, `/insights` | 压缩上下文、查看使用情况、洞察 |
|
||||
| `/skills` 或 `/<skill-name>` | 浏览技能 |
|
||||
| `/stop` | 中断当前工作(消息平台) |
|
||||
| `/platforms` | 平台特定状态(CLI) |
|
||||
| `/status`, `/sethome` | 状态、设置主目录(消息平台) |
|
||||
|
||||
---
|
||||
|
||||
## 项目架构
|
||||
|
||||
### 项目结构
|
||||
|
||||
```
|
||||
hermes-agent/
|
||||
├── run_agent.py # AIAgent 类 — 核心对话循环
|
||||
├── model_tools.py # 工具编排,discover_builtin_tools(), handle_function_call()
|
||||
├── toolsets.py # 工具集定义,_HERMES_CORE_TOOLS 列表
|
||||
├── cli.py # HermesCLI 类 — 交互式 CLI 编排器
|
||||
├── hermes_state.py # SessionDB — SQLite 会话存储(FTS5 搜索)
|
||||
├── agent/ # 代理内部模块
|
||||
│ ├── prompt_builder.py # 系统提示词构建
|
||||
│ ├── context_compressor.py # 自动上下文压缩
|
||||
│ ├── prompt_caching.py # Anthropic 提示词缓存
|
||||
│ ├── auxiliary_client.py # 辅助 LLM 客户端(视觉、摘要)
|
||||
│ ├── model_metadata.py # 模型上下文长度、token 估算
|
||||
│ ├── display.py # KawaiiSpinner、工具预览格式化
|
||||
│ └── skill_commands.py # 技能斜杠命令(CLI/网关共享)
|
||||
├── hermes_cli/ # CLI 子命令和设置
|
||||
│ ├── main.py # 入口点 — 所有 `hermes` 子命令
|
||||
│ ├── config.py # DEFAULT_CONFIG、OPTIONAL_ENV_VARS、迁移
|
||||
│ ├── commands.py # 斜杠命令定义 + SlashCommandCompleter
|
||||
│ ├── setup.py # 交互式设置向导
|
||||
│ ├── skin_engine.py # 皮肤/主题引擎 — CLI 视觉定制
|
||||
│ ├── skills_config.py # `hermes skills` — 按平台启用/禁用技能
|
||||
│ ├── tools_config.py # `hermes tools` — 按平台启用/禁用工具
|
||||
│ └── auth.py # 提供商凭证解析
|
||||
├── tools/ # 工具实现(每个工具一个文件)
|
||||
│ ├── registry.py # 中央工具注册表(schema、handler、dispatch)
|
||||
│ ├── terminal_tool.py # 终端编排
|
||||
│ ├── file_tools.py # 文件读写/搜索/补丁
|
||||
│ ├── web_tools.py # Web 搜索/提取(Parallel + Firecrawl)
|
||||
│ ├── browser_tool.py # 浏览器自动化
|
||||
│ ├── mcp_tool.py # MCP 客户端(约 1050 行)
|
||||
│ └── environments/ # 终端后端(local、docker、ssh、modal、daytona、singularity)
|
||||
├── gateway/ # 消息平台网关
|
||||
│ ├── run.py # 主循环、斜杠命令、消息分发
|
||||
│ ├── session.py # SessionStore — 对话持久化
|
||||
│ └── platforms/ # 适配器:telegram、discord、slack、whatsapp、homeassistant、signal、qqbot
|
||||
├── ui-tui/ # Ink(React)终端 UI — `hermes --tui`
|
||||
│ ├── src/entry.tsx # TTY 入口 + render()
|
||||
│ ├── src/app.tsx # 主状态机和 UI
|
||||
│ └── src/components/ # Ink 组件(品牌、Markdown、提示、选择器等)
|
||||
├── tui_gateway/ # TUI 的 Python JSON-RPC 后端
|
||||
│ ├── entry.py # stdio 入口点
|
||||
│ ├── server.py # RPC 处理器和会话逻辑
|
||||
│ └── slash_worker.py # 斜杠命令的持久 HermesCLI 子进程
|
||||
├── acp_adapter/ # ACP 服务器(VS Code / Zed / JetBrains 集成)
|
||||
├── cron/ # 调度器(jobs.py、scheduler.py)
|
||||
├── tests/ # Pytest 测试套件(约 3000 个测试)
|
||||
└── batch_runner.py # 并行批量处理
|
||||
```
|
||||
|
||||
### 核心架构
|
||||
|
||||
#### 文件依赖链
|
||||
|
||||
```
|
||||
tools/registry.py (无依赖 — 被所有工具文件导入)
|
||||
↑
|
||||
tools/*.py (每个在导入时调用 registry.register())
|
||||
↑
|
||||
model_tools.py (导入 tools/registry + 触发工具发现)
|
||||
↑
|
||||
run_agent.py, cli.py, batch_runner.py, environments/
|
||||
```
|
||||
|
||||
#### AIAgent 核心循环
|
||||
|
||||
核心循环在 `run_conversation()` 中,完全同步:
|
||||
|
||||
```python
|
||||
while api_call_count < self.max_iterations and self.iteration_budget.remaining > 0:
|
||||
response = client.chat.completions.create(model=model, messages=messages, tools=tool_schemas)
|
||||
if response.tool_calls:
|
||||
for tool_call in response.tool_calls:
|
||||
result = handle_function_call(tool_call.name, tool_call.args, task_id)
|
||||
messages.append(tool_result_message(result))
|
||||
api_call_count += 1
|
||||
else:
|
||||
return response.content
|
||||
```
|
||||
|
||||
消息遵循 OpenAI 格式:`{"role": "system/user/assistant/tool", ...}`。推理内容存储在 `assistant_msg["reasoning"]` 中。
|
||||
|
||||
#### CLI 架构
|
||||
|
||||
- **Rich** 用于横幅/面板,**prompt_toolkit** 用于带自动补全的输入
|
||||
- **KawaiiSpinner** (`agent/display.py`) — API 调用期间的动画表情,工具结果的 `┊` 活动馈送
|
||||
- `load_cli_config()` 合并硬编码默认值 + 用户配置 YAML
|
||||
- **皮肤引擎** (`hermes_cli/skin_engine.py`) — 数据驱动的 CLI 主题化
|
||||
- `process_command()` 根据从中央注册表 `resolve_command()` 解析的规范名称调度
|
||||
|
||||
---
|
||||
|
||||
## 学习路径
|
||||
|
||||
### 新手入门
|
||||
|
||||
1. **安装并运行**
|
||||
- 按照安装指南完成安装
|
||||
- 运行 `hermes setup` 配置 API 密钥
|
||||
- 输入 `hermes` 开始第一次对话
|
||||
|
||||
2. **理解基本概念**
|
||||
- 阅读 `AGENTS.md` 了解项目结构
|
||||
- 查看 `run_agent.py` 理解核心循环
|
||||
- 了解工具系统如何工作
|
||||
|
||||
3. **尝试常用功能**
|
||||
- 使用文件工具读取和编辑文件
|
||||
- 尝试终端工具执行命令
|
||||
- 体验技能系统
|
||||
|
||||
### 进阶学习
|
||||
|
||||
1. **工具开发**
|
||||
- 学习 `tools/registry.py` 的注册机制
|
||||
- 参考现有工具(如 `tools/file_tools.py`)
|
||||
- 理解工具集(toolsets)的概念
|
||||
|
||||
2. **技能系统**
|
||||
- 了解技能如何存储在 `~/.hermes/skills/`
|
||||
- 学习如何创建和使用技能
|
||||
- 理解技能与工具的区别
|
||||
|
||||
3. **消息网关**
|
||||
- 配置 Telegram/Discord 机器人
|
||||
- 理解网关架构
|
||||
- 学习平台适配器开发
|
||||
|
||||
### 高级开发
|
||||
|
||||
1. **核心修改**
|
||||
- 修改 `run_agent.py` 的对话循环
|
||||
- 扩展 `model_tools.py` 的工具编排
|
||||
- 自定义提示词构建器
|
||||
|
||||
2. **插件开发**
|
||||
- 学习内存插件系统(`plugins/memory/`)
|
||||
- 理解 MCP 集成
|
||||
- 开发自定义工具集
|
||||
|
||||
3. **研究与训练**
|
||||
- 使用 `environments/` 进行 RL 训练
|
||||
- 轨迹压缩与模型训练
|
||||
- 批量轨迹生成
|
||||
|
||||
---
|
||||
|
||||
## 配置说明
|
||||
|
||||
### 配置文件位置
|
||||
|
||||
| 文件 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| 主配置 | `~/.hermes/config.yaml` | 所有设置 |
|
||||
| API 密钥 | `~/.hermes/.env` | 环境变量和密钥 |
|
||||
| 个性定义 | `~/.hermes/SOUL.md` | 代理个性和语气 |
|
||||
| 技能目录 | `~/.hermes/skills/` | 用户技能存储 |
|
||||
|
||||
### 常用配置项
|
||||
|
||||
```yaml
|
||||
# ~/.hermes/config.yaml 示例
|
||||
|
||||
model:
|
||||
provider: openrouter
|
||||
name: anthropic/claude-opus-4.6
|
||||
|
||||
display:
|
||||
skin: default # default, ares, mono, slate
|
||||
tool_progress: true
|
||||
|
||||
tools:
|
||||
enabled:
|
||||
- terminal
|
||||
- file
|
||||
- web
|
||||
```
|
||||
|
||||
### 环境变量
|
||||
|
||||
在 `~/.hermes/.env` 中配置:
|
||||
|
||||
```bash
|
||||
# LLM 提供商
|
||||
OPENROUTER_API_KEY=your-key
|
||||
ANTHROPIC_API_KEY=your-key
|
||||
OPENAI_API_KEY=your-key
|
||||
|
||||
# 消息平台
|
||||
TELEGRAM_BOT_TOKEN=your-token
|
||||
DISCORD_BOT_TOKEN=your-token
|
||||
SLACK_BOT_TOKEN=your-token
|
||||
|
||||
# 其他
|
||||
NOUS_PORTAL_API_KEY=your-key
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Q: 在中国无法访问 GitHub 怎么办?
|
||||
|
||||
**A:** 使用 `--local` 安装模式:
|
||||
|
||||
1. 通过镜像站或其他方式下载代码
|
||||
2. 运行:`bash install.sh --local --dir /path/to/downloaded/hermes-agent`
|
||||
|
||||
### Q: 支持哪些模型?
|
||||
|
||||
**A:** 支持任何兼容 OpenAI API 的模型提供商,包括:
|
||||
- OpenRouter(200+ 模型)
|
||||
- Anthropic
|
||||
- OpenAI
|
||||
- Nous Portal
|
||||
- 国内模型(Kimi、智谱、MiniMax 等,通过 OpenRouter 或自定义端点)
|
||||
|
||||
### Q: 如何切换模型?
|
||||
|
||||
**A:** 使用:
|
||||
```bash
|
||||
hermes model # 交互式选择
|
||||
hermes model openrouter/anthropic/claude-opus-4.6 # 直接指定
|
||||
```
|
||||
|
||||
### Q: 如何在服务器上后台运行?
|
||||
|
||||
**A:** 使用网关服务:
|
||||
```bash
|
||||
hermes gateway install # 安装为 systemd 服务
|
||||
hermes gateway start # 启动服务
|
||||
```
|
||||
|
||||
或手动后台运行:
|
||||
```bash
|
||||
nohup hermes gateway > ~/.hermes/logs/gateway.log 2>&1 &
|
||||
```
|
||||
|
||||
### Q: 技能和工具有什么区别?
|
||||
|
||||
**A:**
|
||||
- **工具 (Tools)**: 由代码实现的底层能力(文件操作、终端、Web 搜索等),40+ 内置工具
|
||||
- **技能 (Skills)**: 由代理从经验中学习或用户创建的高层流程,使用 Markdown 格式定义,可共享和改进
|
||||
|
||||
---
|
||||
|
||||
## 相关链接
|
||||
|
||||
- **官方文档**: https://hermes-agent.nousresearch.com/docs/
|
||||
- **Discord 社区**: https://discord.gg/NousResearch
|
||||
- **技能中心**: https://agentskills.io
|
||||
- **GitHub**: https://github.com/NousResearch/hermes-agent
|
||||
- **问题反馈**: https://github.com/NousResearch/hermes-agent/issues
|
||||
|
||||
---
|
||||
|
||||
## 许可证
|
||||
|
||||
MIT 许可证 — 详见 [LICENSE](LICENSE)。
|
||||
|
||||
由 [Nous Research](https://nousresearch.com) 开发。
|
||||
1481
install.sh
Normal file
1481
install.sh
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -37,6 +37,7 @@ NODE_VERSION="22"
|
|||
USE_VENV=true
|
||||
RUN_SETUP=true
|
||||
BRANCH="main"
|
||||
USE_LOCAL_DIR=false
|
||||
|
||||
# Detect non-interactive mode (e.g. curl | bash)
|
||||
# When stdin is not a terminal, read -p will fail with EOF,
|
||||
|
|
@ -66,6 +67,10 @@ while [[ $# -gt 0 ]]; do
|
|||
INSTALL_DIR="$2"
|
||||
shift 2
|
||||
;;
|
||||
--local)
|
||||
USE_LOCAL_DIR=true
|
||||
shift
|
||||
;;
|
||||
--hermes-home)
|
||||
HERMES_HOME="$2"
|
||||
shift 2
|
||||
|
|
@ -80,6 +85,7 @@ while [[ $# -gt 0 ]]; do
|
|||
echo " --skip-setup Skip interactive setup wizard"
|
||||
echo " --branch NAME Git branch to install (default: main)"
|
||||
echo " --dir PATH Installation directory (default: ~/.hermes/hermes-agent)"
|
||||
echo " --local Use existing local directory (--dir), skip git clone (for offline/China users)"
|
||||
echo " --hermes-home PATH Data directory (default: ~/.hermes, or \$HERMES_HOME)"
|
||||
echo " -h, --help Show this help"
|
||||
exit 0
|
||||
|
|
@ -717,6 +723,28 @@ show_manual_install_hint() {
|
|||
clone_repo() {
|
||||
log_info "Installing to $INSTALL_DIR..."
|
||||
|
||||
if [ "$USE_LOCAL_DIR" = true ]; then
|
||||
log_info "Using --local mode: skipping git clone, using existing directory..."
|
||||
|
||||
if [ ! -d "$INSTALL_DIR" ]; then
|
||||
log_error "Directory not found: $INSTALL_DIR"
|
||||
log_info "Please specify an existing directory with --dir PATH"
|
||||
log_info "Or download the repository first and point --dir to it"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "$INSTALL_DIR/pyproject.toml" ]; then
|
||||
log_error "Directory does not appear to be a hermes-agent repository"
|
||||
log_info "Expected to find pyproject.toml in: $INSTALL_DIR"
|
||||
log_info "Please verify the directory contains the hermes-agent source code"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd "$INSTALL_DIR"
|
||||
log_success "Using local directory: $INSTALL_DIR"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ -d "$INSTALL_DIR" ]; then
|
||||
if [ -d "$INSTALL_DIR/.git" ]; then
|
||||
log_info "Existing installation found, updating..."
|
||||
|
|
@ -768,7 +796,8 @@ clone_repo() {
|
|||
fi
|
||||
else
|
||||
log_error "Directory exists but is not a git repository: $INSTALL_DIR"
|
||||
log_info "Remove it or choose a different directory with --dir"
|
||||
log_info "To use an existing non-git directory, add --local flag"
|
||||
log_info "Example: bash install.sh --local --dir $INSTALL_DIR"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
|
|
@ -786,6 +815,9 @@ clone_repo() {
|
|||
log_success "Cloned via HTTPS"
|
||||
else
|
||||
log_error "Failed to clone repository"
|
||||
log_info "For users in China or with network issues:"
|
||||
log_info " 1. Download the repository manually (e.g., from Gitee or GitHub mirror)"
|
||||
log_info " 2. Run: bash install.sh --local --dir /path/to/downloaded/hermes-agent"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
|
@ -1417,7 +1449,11 @@ main() {
|
|||
detect_os
|
||||
install_uv
|
||||
check_python
|
||||
check_git
|
||||
if [ "$USE_LOCAL_DIR" = false ]; then
|
||||
check_git
|
||||
else
|
||||
log_info "Using --local mode: skipping Git check"
|
||||
fi
|
||||
check_node
|
||||
install_system_packages
|
||||
|
||||
|
|
|
|||
687
ui-tui/package-lock.json
generated
687
ui-tui/package-lock.json
generated
|
|
@ -989,8 +989,101 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@hermes/ink": {
|
||||
"resolved": "packages/hermes-ink",
|
||||
"link": true
|
||||
"version": "0.0.1",
|
||||
"resolved": "file:packages/hermes-ink",
|
||||
"dependencies": {
|
||||
"@alcalzone/ansi-tokenize": "^0.1.0",
|
||||
"auto-bind": "^5.0.0",
|
||||
"bidi-js": "^1.0.0",
|
||||
"chalk": "^5.4.0",
|
||||
"cli-boxes": "^3.0.0",
|
||||
"code-excerpt": "^4.0.0",
|
||||
"emoji-regex": "^10.4.0",
|
||||
"get-east-asian-width": "^1.3.0",
|
||||
"indent-string": "^5.0.0",
|
||||
"lodash-es": "^4.17.0",
|
||||
"react": ">=19.0.0",
|
||||
"react-reconciler": "0.33.0",
|
||||
"semver": "^7.6.0",
|
||||
"signal-exit": "^4.1.0",
|
||||
"stack-utils": "^2.0.0",
|
||||
"strip-ansi": "^7.1.0",
|
||||
"supports-hyperlinks": "^3.1.0",
|
||||
"type-fest": "^4.30.0",
|
||||
"usehooks-ts": "^3.1.0",
|
||||
"wrap-ansi": "^9.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ink-text-input": ">=6.0.0",
|
||||
"react": ">=19.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@hermes/ink/node_modules/@alcalzone/ansi-tokenize": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@alcalzone/ansi-tokenize/-/ansi-tokenize-0.1.3.tgz",
|
||||
"integrity": "sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==",
|
||||
"dependencies": {
|
||||
"ansi-styles": "^6.2.1",
|
||||
"is-fullwidth-code-point": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.13.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@hermes/ink/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==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/@hermes/ink/node_modules/chalk": {
|
||||
"version": "5.6.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
|
||||
"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
|
||||
"engines": {
|
||||
"node": "^12.17.0 || ^14.13 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/chalk?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/@hermes/ink/node_modules/is-fullwidth-code-point": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
|
||||
"integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@hermes/ink/node_modules/signal-exit": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
|
||||
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/@hermes/ink/node_modules/type-fest": {
|
||||
"version": "4.41.0",
|
||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
|
||||
"integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@humanfs/core": {
|
||||
"version": "0.19.1",
|
||||
|
|
@ -6666,596 +6759,6 @@
|
|||
"peerDependencies": {
|
||||
"zod": "^3.25.0 || ^4.0.0"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink": {
|
||||
"name": "@hermes/ink",
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"@alcalzone/ansi-tokenize": "^0.1.0",
|
||||
"auto-bind": "^5.0.0",
|
||||
"bidi-js": "^1.0.0",
|
||||
"chalk": "^5.4.0",
|
||||
"cli-boxes": "^3.0.0",
|
||||
"code-excerpt": "^4.0.0",
|
||||
"emoji-regex": "^10.4.0",
|
||||
"get-east-asian-width": "^1.3.0",
|
||||
"indent-string": "^5.0.0",
|
||||
"lodash-es": "^4.17.0",
|
||||
"react": ">=19.0.0",
|
||||
"react-reconciler": "0.33.0",
|
||||
"semver": "^7.6.0",
|
||||
"signal-exit": "^4.1.0",
|
||||
"stack-utils": "^2.0.0",
|
||||
"strip-ansi": "^7.1.0",
|
||||
"supports-hyperlinks": "^3.1.0",
|
||||
"type-fest": "^4.30.0",
|
||||
"usehooks-ts": "^3.1.0",
|
||||
"wrap-ansi": "^9.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"esbuild": "^0.25.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ink-text-input": ">=6.0.0",
|
||||
"react": ">=19.0.0"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@alcalzone/ansi-tokenize": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@alcalzone/ansi-tokenize/-/ansi-tokenize-0.1.3.tgz",
|
||||
"integrity": "sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ansi-styles": "^6.2.1",
|
||||
"is-fullwidth-code-point": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.13.1"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/aix-ppc64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
|
||||
"integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"aix"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/android-arm": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
|
||||
"integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"android"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/android-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"android"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/android-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"android"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/darwin-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/darwin-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/freebsd-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"freebsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/freebsd-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"freebsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/linux-arm": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
|
||||
"integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/linux-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/linux-ia32": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
|
||||
"integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/linux-loong64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
|
||||
"integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
|
||||
"cpu": [
|
||||
"loong64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/linux-mips64el": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
|
||||
"integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
|
||||
"cpu": [
|
||||
"mips64el"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/linux-ppc64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
|
||||
"integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/linux-riscv64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
|
||||
"integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/linux-s390x": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
|
||||
"integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/linux-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/netbsd-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"netbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/netbsd-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"netbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/openbsd-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"openbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/openbsd-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"openbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/openharmony-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"openharmony"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/sunos-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"sunos"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/win32-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/win32-ia32": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
|
||||
"integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/@esbuild/win32-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/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==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/chalk": {
|
||||
"version": "5.6.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
|
||||
"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "^12.17.0 || ^14.13 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/chalk?sponsor=1"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/esbuild": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
|
||||
"integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"esbuild": "bin/esbuild"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@esbuild/aix-ppc64": "0.25.12",
|
||||
"@esbuild/android-arm": "0.25.12",
|
||||
"@esbuild/android-arm64": "0.25.12",
|
||||
"@esbuild/android-x64": "0.25.12",
|
||||
"@esbuild/darwin-arm64": "0.25.12",
|
||||
"@esbuild/darwin-x64": "0.25.12",
|
||||
"@esbuild/freebsd-arm64": "0.25.12",
|
||||
"@esbuild/freebsd-x64": "0.25.12",
|
||||
"@esbuild/linux-arm": "0.25.12",
|
||||
"@esbuild/linux-arm64": "0.25.12",
|
||||
"@esbuild/linux-ia32": "0.25.12",
|
||||
"@esbuild/linux-loong64": "0.25.12",
|
||||
"@esbuild/linux-mips64el": "0.25.12",
|
||||
"@esbuild/linux-ppc64": "0.25.12",
|
||||
"@esbuild/linux-riscv64": "0.25.12",
|
||||
"@esbuild/linux-s390x": "0.25.12",
|
||||
"@esbuild/linux-x64": "0.25.12",
|
||||
"@esbuild/netbsd-arm64": "0.25.12",
|
||||
"@esbuild/netbsd-x64": "0.25.12",
|
||||
"@esbuild/openbsd-arm64": "0.25.12",
|
||||
"@esbuild/openbsd-x64": "0.25.12",
|
||||
"@esbuild/openharmony-arm64": "0.25.12",
|
||||
"@esbuild/sunos-x64": "0.25.12",
|
||||
"@esbuild/win32-arm64": "0.25.12",
|
||||
"@esbuild/win32-ia32": "0.25.12",
|
||||
"@esbuild/win32-x64": "0.25.12"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/is-fullwidth-code-point": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
|
||||
"integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/signal-exit": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
|
||||
"integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
|
||||
"license": "ISC",
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"packages/hermes-ink/node_modules/type-fest": {
|
||||
"version": "4.41.0",
|
||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
|
||||
"integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
|
||||
"license": "(MIT OR CC0-1.0)",
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue