arona-agent 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -5
- package/README_en.md +146 -0
- package/assets/blue-archive/arona/spine/arona_spr.json +138439 -0
- package/assets/blue-archive/hanako/spine/hanako_spr.atlas.txt +90 -0
- package/assets/blue-archive/hanako/spine/hanako_spr.json +5249 -0
- package/assets/blue-archive/hanako/spine/hanako_spr.png +0 -0
- package/assets/blue-archive/hanako/spine/hanako_spr.skel +0 -0
- package/assets/blue-archive/hanako/voice.mp3 +0 -0
- package/assets/blue-archive/hanako/voice_sovits.mp3 +0 -0
- package/assets/blue-archive/hanako/voice_text.txt +1 -0
- package/assets/blue-archive/koharu/spine/koharu_spr.atlas.txt +125 -0
- package/assets/blue-archive/koharu/spine/koharu_spr.json +8063 -0
- package/assets/blue-archive/koharu/spine/koharu_spr.png +0 -0
- package/assets/blue-archive/koharu/spine/koharu_spr.skel +0 -0
- package/assets/blue-archive/koharu/voice.mp3 +0 -0
- package/assets/blue-archive/koharu/voice_sovits.mp3 +0 -0
- package/assets/blue-archive/koharu/voice_text.txt +1 -0
- package/assets/blue-archive/plana/spine/plana_spr.json +243027 -0
- package/assets/gpt-sovits/requirements.txt +44 -0
- package/bin/arona.mjs +1 -1
- package/package.json +5 -5
- package/pet/agents.cjs +98 -7
- package/pet/main.cjs +7 -1
- package/pet/preload.cjs +2 -0
- package/pet/renderer/renderer.js +6 -1
- package/pet/renderer/spine_layer.js +64 -0
- package/pet/tools/emotion_map_editor.cjs +233 -0
- package/pet/tools/gallery_capture.cjs +18 -9
- package/pet/tools/gen_sway.cjs +23 -2
- package/pet/tools/mouth_capture.cjs +170 -0
- package/pet/tools/skel_to_json.cjs +142 -7
- package/pet/tools/spine_node.cjs +2 -5
- package/python/__pycache__/tts_say.cpython-313.pyc +0 -0
- package/python/__pycache__/tts_say.cpython-314.pyc +0 -0
- package/python/tts_say.py +194 -16
- package/src/agent.ts +86 -102
- package/src/agent_registry.ts +4 -0
- package/src/config.ts +6 -0
- package/src/gpt_sovits_local.ts +50 -3
- package/src/index.ts +6 -4
- package/src/pet.ts +5 -0
- package/src/repl.ts +4 -0
- package/src/setup.ts +1 -0
- package/src/tools/emotion_tool.ts +2 -2
- package/src/tools/memory_tool.ts +2 -2
- package/src/tools/skill_tools.ts +2 -2
- package/src/tts_provider.ts +14 -3
- package/src/tts_stream.ts +31 -8
- package/src/utils/spawn.ts +1 -1
- package/src/voices.ts +2 -0
- package/bin/postinstall-fix.mjs +0 -46
- /package/assets/blue-archive/hoshino/{hoshino_spr.atlas.txt → spine/hoshino_spr.atlas.txt} +0 -0
- /package/assets/blue-archive/hoshino/{hoshino_spr.json → spine/hoshino_spr.json} +0 -0
- /package/assets/blue-archive/hoshino/{hoshino_spr.png → spine/hoshino_spr.png} +0 -0
- /package/assets/blue-archive/hoshino/{hoshino_spr.skel → spine/hoshino_spr.skel} +0 -0
- /package/assets/blue-archive/hoshino/{robber → spine/robber}/hoshino_robber_spr.atlas.txt +0 -0
- /package/assets/blue-archive/hoshino/{robber → spine/robber}/hoshino_robber_spr.png +0 -0
- /package/assets/blue-archive/hoshino/{robber → spine/robber}/hoshino_robber_spr.skel +0 -0
- /package/assets/blue-archive/hoshino/{swimsuit → spine/swimsuit}/hoshino_swimsuit_spr.atlas.txt +0 -0
- /package/assets/blue-archive/hoshino/{swimsuit → spine/swimsuit}/hoshino_swimsuit_spr.png +0 -0
- /package/assets/blue-archive/hoshino/{swimsuit → spine/swimsuit}/hoshino_swimsuit_spr.skel +0 -0
- /package/assets/blue-archive/shiroko/{ridingsuit → spine/ridingsuit}/shiroko_ridingsuit_spr.atlas.txt +0 -0
- /package/assets/blue-archive/shiroko/{ridingsuit → spine/ridingsuit}/shiroko_ridingsuit_spr.png +0 -0
- /package/assets/blue-archive/shiroko/{ridingsuit → spine/ridingsuit}/shiroko_ridingsuit_spr.skel +0 -0
- /package/assets/blue-archive/shiroko/{robber → spine/robber}/shiroko_robber_spr.atlas.txt +0 -0
- /package/assets/blue-archive/shiroko/{robber → spine/robber}/shiroko_robber_spr.png +0 -0
- /package/assets/blue-archive/shiroko/{robber → spine/robber}/shiroko_robber_spr.skel +0 -0
- /package/assets/blue-archive/shiroko/{shiroko_spr.atlas.txt → spine/shiroko_spr.atlas.txt} +0 -0
- /package/assets/blue-archive/shiroko/{shiroko_spr.json → spine/shiroko_spr.json} +0 -0
- /package/assets/blue-archive/shiroko/{shiroko_spr.png → spine/shiroko_spr.png} +0 -0
- /package/assets/blue-archive/shiroko/{shiroko_spr.skel → spine/shiroko_spr.skel} +0 -0
package/README.md
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
> 谁不想在电脑上养一只 ~~香香软软~~ 可可爱爱的阿洛娜呢?
|
|
8
8
|
|
|
9
|
-

|
|
10
10
|
|
|
11
|
-
基于 [Pi SDK](https://www.npmjs.com/package/@earendil-works/pi-coding-agent) 构建的终端对话式 AI Agent,集成 Computer Use
|
|
11
|
+
基于 [Pi SDK](https://www.npmjs.com/package/@earendil-works/pi-coding-agent) 构建的终端对话式 AI Agent,集成 Computer Use、TTS / STT、桌面宠物与持久记忆。
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -39,7 +39,7 @@ arona voice add [<角色名>] # 不带角色名则进入 TUI 选择未补全
|
|
|
39
39
|
|
|
40
40
|
- **Computer Use**:基于 [cua](https://pypi.org/project/cua/) 。
|
|
41
41
|
- **语音**:非流式 TTS + STT。
|
|
42
|
-
- **桌宠**:透明无边框置顶 Electron 窗口 + 情绪切换 + 瞳孔跟随鼠标 + 头部摇动摸头彩蛋 +
|
|
42
|
+
- **桌宠**:透明无边框置顶 Electron 窗口 + 情绪切换 + 瞳孔跟随鼠标 + 头部摇动摸头彩蛋 + 全屏点击/拖尾特效;
|
|
43
43
|
- **多角色群聊**:主 Agent 单窗口、子 Agent 同屏;每轮主 Agent 回复完后子 Agent 依次接话。
|
|
44
44
|
|
|
45
45
|
|
|
@@ -48,7 +48,7 @@ arona voice add [<角色名>] # 不带角色名则进入 TUI 选择未补全
|
|
|
48
48
|
## 环境要求
|
|
49
49
|
|
|
50
50
|
- **Node.js >= 22.19.0**
|
|
51
|
-
- **Python 3.12 / 3.13
|
|
51
|
+
- **Python 3.9+(CUA需要 3.12 / 3.13)**
|
|
52
52
|
|
|
53
53
|
---
|
|
54
54
|
|
|
@@ -69,7 +69,7 @@ arona voice add [<角色名>] # 不带角色名则进入 TUI 选择未补全
|
|
|
69
69
|
| `ttsEnabled` | 启用 TTS | `true` |
|
|
70
70
|
| `sttEnabled` | 启用 STT | `true` |
|
|
71
71
|
| `workspaceId` | 阿里云百炼业务空间 ID | — |
|
|
72
|
-
| `ttsApiKey` | 百炼 API Key
|
|
72
|
+
| `ttsApiKey` | 百炼 API Key | — |
|
|
73
73
|
| `ttsModel` | TTS 模型 | `qwen-audio-3.0-tts-plus` |
|
|
74
74
|
| `ttsProvider` | TTS 后端(`aliyun`/`gpt-sovits`) | `aliyun` |
|
|
75
75
|
| `ttsConfig` | 各 Provider 配置 | `{}` |
|
|
@@ -80,6 +80,7 @@ arona voice add [<角色名>] # 不带角色名则进入 TUI 选择未补全
|
|
|
80
80
|
| `cuaApiKey` | Cua API Key | — |
|
|
81
81
|
| `tavilyApiKey` | Tavily API Key | — |
|
|
82
82
|
| `pythonPath` | Python 路径 | `python3` |
|
|
83
|
+
| `autoReadSkills` | 启动时自动从 `~/.agents` 补全缺失的Skill | `true` |
|
|
83
84
|
| `mcpServers` | MCP 服务器 JSON | `{}` |
|
|
84
85
|
|
|
85
86
|
模型名前缀自动检测:若 `model` 不含 `/`,按模型名前缀或 `apiBaseUrl` 域名自动补 `provider/`。
|
package/README_en.md
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# ARONA Agent
|
|
2
|
+
|
|
3
|
+
[中文](README.md) | [English](README_en.md)
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
A terminal-based conversational AI Agent built on the [Pi SDK](https://www.npmjs.com/package/@earendil-works/pi-coding-agent), featuring Computer Use, TTS / STT, desktop pets and persistent memory.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm i -g arona-agent
|
|
17
|
+
|
|
18
|
+
# Initialize configuration
|
|
19
|
+
arona setup
|
|
20
|
+
|
|
21
|
+
# Launch after setup
|
|
22
|
+
arona
|
|
23
|
+
|
|
24
|
+
# Upgrade
|
|
25
|
+
npm u -g arona-agent
|
|
26
|
+
|
|
27
|
+
# Launch with TTS/STT disabled
|
|
28
|
+
arona --no-voice
|
|
29
|
+
|
|
30
|
+
# Clone/re-clone a character's voice
|
|
31
|
+
arona voice add [<character-name>] # omit the name to enter the TUI for missing voices
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Key Features
|
|
37
|
+
|
|
38
|
+
- **Computer Use**: based on [cua](https://pypi.org/project/cua/).
|
|
39
|
+
- **Voice**: Non-streaming TTS (whole-sentence synthesis for natural prosody) + STT.
|
|
40
|
+
- **Desktop pet**: transparent frameless always-on-top Electron window + emotion switching + cursor-following pupils + head-pat easter egg + full-screen click/trail FX.
|
|
41
|
+
- **Multi-character group chat**: main agent + sub agents on the same screen. After the main agent replies, sub agents take turns in order.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Requirements
|
|
46
|
+
|
|
47
|
+
- **Node.js >= 22.19.0**
|
|
48
|
+
- **Python 3.12 / 3.13**
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Configuration
|
|
53
|
+
|
|
54
|
+
All configuration lives in the JSON file `~/.arona/settings.json`, mostly generated interactively by `arona setup`. Some advanced parameters must be entered manually.
|
|
55
|
+
|
|
56
|
+
| Field | Description | Default |
|
|
57
|
+
|---|---|---|
|
|
58
|
+
| `apiKey` | API key | — |
|
|
59
|
+
| `apiBaseUrl` | API base URL | — |
|
|
60
|
+
| `model` | Model name | `openai/gpt-4o` |
|
|
61
|
+
| `thinkingLevel` | Thinking level | `medium` |
|
|
62
|
+
| `contextWindow` | Context window | `1000000` |
|
|
63
|
+
| `language` | Interface language (`auto`/`zh`/`en`) | `auto` |
|
|
64
|
+
| `mainAgent` | Main agent (`arona`/`plana`) | `arona` |
|
|
65
|
+
| `subAgents` | Enabled sub agents array | `[]` |
|
|
66
|
+
| `ttsEnabled` | Enable TTS | `true` |
|
|
67
|
+
| `sttEnabled` | Enable STT | `true` |
|
|
68
|
+
| `workspaceId` | Alibaba Cloud Model Studio business space ID | — |
|
|
69
|
+
| `ttsApiKey` | DashScope API key | — |
|
|
70
|
+
| `ttsModel` | TTS model | `qwen-audio-3.0-tts-plus` |
|
|
71
|
+
| `ttsProvider` | TTS backend (`aliyun`/`gpt-sovits`) | `aliyun` |
|
|
72
|
+
| `ttsConfig` | Provider-specific config | `{}` |
|
|
73
|
+
| `sttApiKey` | DashScope API key | — |
|
|
74
|
+
| `sttModel` | STT model | `qwen-audio-3.0-asr-flash-streaming` |
|
|
75
|
+
| `sttFormat` | STT audio format | `pcm` |
|
|
76
|
+
| `sttSampleRate` | STT sample rate | `16000` |
|
|
77
|
+
| `cuaApiKey` | Cua API key | — |
|
|
78
|
+
| `tavilyApiKey` | Tavily API key | — |
|
|
79
|
+
| `pythonPath` | Python path | `python3` |
|
|
80
|
+
| `autoReadSkills` | Automatically load missing Skills from `~/.agents` on startup | `true` |
|
|
81
|
+
| `mcpServers` | MCP server JSON | `{}` |
|
|
82
|
+
|
|
83
|
+
Model prefix auto-detection: if `model` contains no `/`, a `provider/` prefix is added automatically based on the model name prefix or the `apiBaseUrl` domain.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Data Paths (`~/.arona/`)
|
|
88
|
+
|
|
89
|
+
| Path | Description |
|
|
90
|
+
|---|---|
|
|
91
|
+
| `settings.json` | Main config file; see the [Configuration](#configuration) section for fields |
|
|
92
|
+
| `voices.json` | TTS Voices config file |
|
|
93
|
+
| `MEMORY.md` | Persistent memory |
|
|
94
|
+
| `sessions/` | Saved sessions |
|
|
95
|
+
| `skills/` | Custom skills |
|
|
96
|
+
| `undo/` | Undo/redo snapshots |
|
|
97
|
+
| `pet.json` | Desktop pet window position |
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Key functions
|
|
102
|
+
|
|
103
|
+
- **Desktop pet**: transparent frameless always-on-top window; drag to move; shake the head region left-right to trigger the "head-pat" easter egg; clicks/drags also fire FX.
|
|
104
|
+
- **STT hotkey**: right Cmd on macOS, right Ctrl on Windows/Linux — hold for ≥ 2 seconds to start a one-shot recording.
|
|
105
|
+
> Global keyboard listening requires Accessibility permission for Python (System Settings → Privacy & Security → Accessibility).
|
|
106
|
+
|
|
107
|
+
> Computer Use screenshots require Screen Recording permission for the terminal.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Slash Commands
|
|
112
|
+
|
|
113
|
+
| Category | Commands |
|
|
114
|
+
|---|---|
|
|
115
|
+
| Session | `/new` `/clear` · `/resume` · `/exit` · `/export` · `/compact` |
|
|
116
|
+
| Display | `/thinking` · `/details` |
|
|
117
|
+
| Voice | `/tts` · `/stt` |
|
|
118
|
+
| Extensions | `/skill` · `/mcp` |
|
|
119
|
+
| Other | `/change-agent` · `/undo` · `/redo` · `/help` |
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Extensions
|
|
124
|
+
|
|
125
|
+
- **Custom Skills**: place `SKILL.md` in `~/.arona/skills/<name>/`, then invoke with `/skill <name>`.
|
|
126
|
+
- **MCP servers**: configure a JSON object in the `mcpServers` field of `~/.arona/settings.json`; tools are registered automatically.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## License
|
|
131
|
+
|
|
132
|
+
This project is open-sourced under the [MIT License](LICENSE).
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Copyright
|
|
137
|
+
|
|
138
|
+
This project is an independently developed unofficial project and is not directly affiliated with or endorsed by Nexon Games Co., Ltd., YOSTAR LIMITED, or the official Blue Archive game team.
|
|
139
|
+
|
|
140
|
+
- The core project code is released under the MIT License. However, no license is granted by this project (or any third party) for any files within the assets/blue-archive/ directory. These files pertain to the intellectual property of Blue Archive and include, but are not limited to, character illustrations, artwork, audio files, text content, and related derivative assets. No warranty of legality or usability is provided for these assets.
|
|
141
|
+
- The use, reproduction, and distribution of such content must strictly comply with the [rules](https://bluearchive.jp/fankit/guidelines) published by Nexon Games Co., Ltd. and YOSTAR LIMITED, as well as all applicable laws and regulations.
|
|
142
|
+
- This project does not provide access to these third-party files. Users must obtain legitimate copies independently from the official channels of the rights holders and assume full responsibility for their use.
|
|
143
|
+
- This project must not be used for distribution that infringes upon the rights of the copyright holders; any such infringement is the sole responsibility of the user.
|
|
144
|
+
|
|
145
|
+
All intellectual property rights for such content belong to Nexon Games Co., Ltd. and YOSTAR LIMITED. Usage, reproduction, and distribution must strictly adhere to the official terms set by these rights holders and applicable laws.
|
|
146
|
+
If a rights holder believes this disclaimer or the project's usage violates any terms, please contact me. Upon verification, the relevant content will be adjusted or removed promptly.
|