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.
Files changed (71) hide show
  1. package/README.md +6 -5
  2. package/README_en.md +146 -0
  3. package/assets/blue-archive/arona/spine/arona_spr.json +138439 -0
  4. package/assets/blue-archive/hanako/spine/hanako_spr.atlas.txt +90 -0
  5. package/assets/blue-archive/hanako/spine/hanako_spr.json +5249 -0
  6. package/assets/blue-archive/hanako/spine/hanako_spr.png +0 -0
  7. package/assets/blue-archive/hanako/spine/hanako_spr.skel +0 -0
  8. package/assets/blue-archive/hanako/voice.mp3 +0 -0
  9. package/assets/blue-archive/hanako/voice_sovits.mp3 +0 -0
  10. package/assets/blue-archive/hanako/voice_text.txt +1 -0
  11. package/assets/blue-archive/koharu/spine/koharu_spr.atlas.txt +125 -0
  12. package/assets/blue-archive/koharu/spine/koharu_spr.json +8063 -0
  13. package/assets/blue-archive/koharu/spine/koharu_spr.png +0 -0
  14. package/assets/blue-archive/koharu/spine/koharu_spr.skel +0 -0
  15. package/assets/blue-archive/koharu/voice.mp3 +0 -0
  16. package/assets/blue-archive/koharu/voice_sovits.mp3 +0 -0
  17. package/assets/blue-archive/koharu/voice_text.txt +1 -0
  18. package/assets/blue-archive/plana/spine/plana_spr.json +243027 -0
  19. package/assets/gpt-sovits/requirements.txt +44 -0
  20. package/bin/arona.mjs +1 -1
  21. package/package.json +5 -5
  22. package/pet/agents.cjs +98 -7
  23. package/pet/main.cjs +7 -1
  24. package/pet/preload.cjs +2 -0
  25. package/pet/renderer/renderer.js +6 -1
  26. package/pet/renderer/spine_layer.js +64 -0
  27. package/pet/tools/emotion_map_editor.cjs +233 -0
  28. package/pet/tools/gallery_capture.cjs +18 -9
  29. package/pet/tools/gen_sway.cjs +23 -2
  30. package/pet/tools/mouth_capture.cjs +170 -0
  31. package/pet/tools/skel_to_json.cjs +142 -7
  32. package/pet/tools/spine_node.cjs +2 -5
  33. package/python/__pycache__/tts_say.cpython-313.pyc +0 -0
  34. package/python/__pycache__/tts_say.cpython-314.pyc +0 -0
  35. package/python/tts_say.py +194 -16
  36. package/src/agent.ts +86 -102
  37. package/src/agent_registry.ts +4 -0
  38. package/src/config.ts +6 -0
  39. package/src/gpt_sovits_local.ts +50 -3
  40. package/src/index.ts +6 -4
  41. package/src/pet.ts +5 -0
  42. package/src/repl.ts +4 -0
  43. package/src/setup.ts +1 -0
  44. package/src/tools/emotion_tool.ts +2 -2
  45. package/src/tools/memory_tool.ts +2 -2
  46. package/src/tools/skill_tools.ts +2 -2
  47. package/src/tts_provider.ts +14 -3
  48. package/src/tts_stream.ts +31 -8
  49. package/src/utils/spawn.ts +1 -1
  50. package/src/voices.ts +2 -0
  51. package/bin/postinstall-fix.mjs +0 -46
  52. /package/assets/blue-archive/hoshino/{hoshino_spr.atlas.txt → spine/hoshino_spr.atlas.txt} +0 -0
  53. /package/assets/blue-archive/hoshino/{hoshino_spr.json → spine/hoshino_spr.json} +0 -0
  54. /package/assets/blue-archive/hoshino/{hoshino_spr.png → spine/hoshino_spr.png} +0 -0
  55. /package/assets/blue-archive/hoshino/{hoshino_spr.skel → spine/hoshino_spr.skel} +0 -0
  56. /package/assets/blue-archive/hoshino/{robber → spine/robber}/hoshino_robber_spr.atlas.txt +0 -0
  57. /package/assets/blue-archive/hoshino/{robber → spine/robber}/hoshino_robber_spr.png +0 -0
  58. /package/assets/blue-archive/hoshino/{robber → spine/robber}/hoshino_robber_spr.skel +0 -0
  59. /package/assets/blue-archive/hoshino/{swimsuit → spine/swimsuit}/hoshino_swimsuit_spr.atlas.txt +0 -0
  60. /package/assets/blue-archive/hoshino/{swimsuit → spine/swimsuit}/hoshino_swimsuit_spr.png +0 -0
  61. /package/assets/blue-archive/hoshino/{swimsuit → spine/swimsuit}/hoshino_swimsuit_spr.skel +0 -0
  62. /package/assets/blue-archive/shiroko/{ridingsuit → spine/ridingsuit}/shiroko_ridingsuit_spr.atlas.txt +0 -0
  63. /package/assets/blue-archive/shiroko/{ridingsuit → spine/ridingsuit}/shiroko_ridingsuit_spr.png +0 -0
  64. /package/assets/blue-archive/shiroko/{ridingsuit → spine/ridingsuit}/shiroko_ridingsuit_spr.skel +0 -0
  65. /package/assets/blue-archive/shiroko/{robber → spine/robber}/shiroko_robber_spr.atlas.txt +0 -0
  66. /package/assets/blue-archive/shiroko/{robber → spine/robber}/shiroko_robber_spr.png +0 -0
  67. /package/assets/blue-archive/shiroko/{robber → spine/robber}/shiroko_robber_spr.skel +0 -0
  68. /package/assets/blue-archive/shiroko/{shiroko_spr.atlas.txt → spine/shiroko_spr.atlas.txt} +0 -0
  69. /package/assets/blue-archive/shiroko/{shiroko_spr.json → spine/shiroko_spr.json} +0 -0
  70. /package/assets/blue-archive/shiroko/{shiroko_spr.png → spine/shiroko_spr.png} +0 -0
  71. /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
- ![示意图](./intro.png)
9
+ ![示意图](https://cdn.jsdelivr.net/gh/SRC114514/arona-agent/intro.png)
10
10
 
11
- 基于 [Pi SDK](https://www.npmjs.com/package/@earendil-works/pi-coding-agent) 构建的终端对话式 AI Agent,集成 Computer Use、语音(TTS/STT)、桌面宠物与持久记忆。
11
+ 基于 [Pi SDK](https://www.npmjs.com/package/@earendil-works/pi-coding-agent) 构建的终端对话式 AI Agent,集成 Computer UseTTS / 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(GPT-SoVITS 时仅用于 STT) | — |
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
+ ![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)
6
+
7
+ ![Screenshot](https://cdn.jsdelivr.net/gh/SRC114514/arona-agent/intro.png)
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.