arisa 4.1.6 → 4.1.8

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 (2) hide show
  1. package/README.md +36 -62
  2. package/package.json +2 -2
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Arisa
2
2
 
3
- [Arisa](https://arisa.sh) is a personal Telegram assistant powered by [Pi Agent](https://pi.dev).
3
+ [Arisa](https://arisa.sh) is a personal assistant you talk to through Telegram, powered by [Pi Agent](https://pi.dev).
4
4
 
5
5
  ## Origin
6
6
 
@@ -56,7 +56,7 @@ The result is a toolset shaped by how you actually use the assistant, not by def
56
56
 
57
57
  ### Telegram input
58
58
  - text messages go directly to Pi Agent
59
- - audio/voice messages are transcribed first when a transcription tool is installed, then passed to Pi Agent as text; otherwise Arisa offers to install one
59
+ - audio/voice messages are transcribed first when a transcription tool is installed, then passed to Pi Agent as text; otherwise the agent is told transcription failed and can offer to install one
60
60
  - media is stored as artifacts
61
61
 
62
62
  ### Tool model
@@ -82,17 +82,24 @@ That isolation is part of the architecture:
82
82
  - one tool can be changed or replaced without tightly coupling the rest of the system
83
83
 
84
84
  ### Configuration model
85
- - all runtime state lives under `~/.arisa/`
86
- - Telegram runtime config is stored in `~/.arisa/state/config.json`
87
- - artifact index is stored in `~/.arisa/state/artifacts.json`
88
- - incoming Telegram attachments are stored directly in `~/.arisa/artifacts/`
89
- - tool-specific secrets/config live in `~/.arisa/tools/<tool>/config.js`
90
- - user-created tools also live under `~/.arisa/tools/<tool>/`
91
- - tool runtime temp files and generated outputs live under `~/.arisa/tools/<tool>/` (for example `tmp/` and `out/`)
92
- - durable files should end up in `~/.arisa/artifacts/`
93
- - Pi authentication can use either:
94
- - an API key entered during bootstrap
95
- - or Pi's existing OAuth login when supported, such as `openai-codex`
85
+ All runtime state lives under `~/.arisa/`, split between global state and per-chat state.
86
+
87
+ Global:
88
+ - runtime config is stored in `~/.arisa/state/config.json`
89
+ - the scheduled-task queue is stored in `~/.arisa/state/tasks.json`
90
+ - installed tools live under `~/.arisa/tools/<tool>/`, each with a default `config.js` template
91
+ - global tool runtime state (daemons, caches, temp) lives under `~/.arisa/state/tools/<tool>/`
92
+
93
+ Per chat (`~/.arisa/chats/<chatId>/`):
94
+ - artifact files are stored under `artifacts/`
95
+ - the artifact index is stored in `state/artifacts.json`
96
+ - the Pi session lives under `state/pi-sessions/`
97
+ - chat-scoped tool config overrides live in `config/tools/<tool>/config.js`
98
+ - ephemeral scratch lives under `tmp/`
99
+
100
+ Pi authentication can use either:
101
+ - an API key entered during bootstrap
102
+ - or Pi's existing OAuth login when supported, such as `openai-codex`
96
103
 
97
104
  ## Install globally
98
105
 
@@ -129,54 +136,15 @@ Notes:
129
136
 
130
137
  ## Bootstrap flow
131
138
 
132
- On first run, Arisa will:
133
-
134
- 1. ask for a Telegram bot token
135
- 2. validate the token and ask whether to continue bootstrap from Telegram (default: yes)
136
- 3. when Telegram setup is selected, show a `https://t.me/<bot>?start=<setup-token>` link
137
- 4. authorize that Telegram chat and continue setup there: Pi provider, model, and Pi auth
138
- 5. ask from Telegram whether Arisa should keep running in background
139
- 6. validate that Pi Agent works
140
- 7. only then start listening to Telegram
141
-
142
- Choosing `n` at the Telegram setup prompt keeps the previous CLI-only bootstrap flow.
143
-
144
- Arisa does not run a persistent HTTP health server or Telegram webhook; Telegram uses long polling.
145
-
146
- Telegram bot tokens can be created with:
147
-
148
- - https://t.me/BotFather
149
-
150
- ## Using Pi authentication
139
+ On first run, Arisa walks you through three steps:
151
140
 
152
- For providers with internal Pi login support, such as Codex, leaving the API key empty during bootstrap will start the internal login flow automatically if no existing auth is found.
141
+ 1. Give it a Telegram bot token (create one with [@BotFather](https://t.me/BotFather)) and Arisa validates it.
142
+ 2. Continue setup in Telegram (the default): open the link to authorize your chat, then pick the Pi provider, model, and auth, and whether to keep running in the background.
143
+ 3. Once Pi is working, Arisa starts listening.
153
144
 
154
- For example, selecting:
145
+ ## ChatGPT subscription is enough to run Arisa
155
146
 
156
- - `openai-codex/gpt-5.5`
157
-
158
- allows Arisa to authenticate through Pi's Codex OAuth flow instead of requiring a normal OpenAI API key.
159
-
160
- ## Running model
161
-
162
- Arisa keeps one Pi session per authorized Telegram chat.
163
-
164
- If a message arrives while Pi Agent is still processing another one:
165
-
166
- - the current message keeps running
167
- - the new message is appended to a queued buffer
168
- - additional incoming messages are concatenated to that same buffer
169
- - once the current processing finishes, the buffered messages are sent together as the next prompt
170
-
171
- Conceptually:
172
-
173
- ```txt
174
- message 1 is processing
175
- message 2 arrives -> queued
176
- message 3 arrives -> appended to queued
177
- message 1 finishes
178
- queued batch is processed next
179
- ```
147
+ Allows Arisa to authenticate through Pi's Codex OAuth flow instead of requiring a normal OpenAI API key. This means a regular ChatGPT subscription is enough to run Arisa on GPT-5.5, which is powerful and a genuine pleasure to use.
180
148
 
181
149
  ## Project structure
182
150
 
@@ -186,10 +154,16 @@ src/
186
154
  transport/ Telegram integration
187
155
  core/ agent, tools, artifacts, config
188
156
  ~/.arisa/
189
- state/
190
- artifacts/
191
- tools/ installed tools (catalog, user-chosen, or agent-created)
192
- tmp/
157
+ state/ global config, task queue, IPC socket
158
+ config.json
159
+ tasks.json
160
+ tools/<tool>/ global tool state (daemons, caches, tmp)
161
+ tools/<tool>/ installed tools (catalog, user-chosen, or agent-created)
162
+ chats/<chatId>/
163
+ artifacts/ per-chat artifact files
164
+ state/ artifact index + Pi session
165
+ config/tools/ chat-scoped tool config overrides
166
+ tmp/ ephemeral scratch
193
167
  ```
194
168
 
195
169
  The official tool catalog lives in the repository under [`tools/`](https://github.com/clasen/Arisa/tree/main/tools) and is not part of the npm package.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arisa",
3
- "version": "4.1.6",
3
+ "version": "4.1.8",
4
4
  "description": "Telegram + Pi Agent modular assistant",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -35,7 +35,7 @@
35
35
  "bugs": {
36
36
  "url": "https://github.com/clasen/Arisa/issues"
37
37
  },
38
- "homepage": "https://github.com/clasen/Arisa#readme",
38
+ "homepage": "https://arisa.sh",
39
39
  "dependencies": {
40
40
  "@earendil-works/pi-coding-agent": "^0.79.9",
41
41
  "@sinclair/typebox": "^0.34.41",