volute 0.29.0 → 0.30.0
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 +112 -13
- package/dist/{accept-666DIZX2.js → accept-E3PAH3QJ.js} +2 -2
- package/dist/{activity-events-BBIEA2F4.js → activity-events-BKBPPUBP.js} +2 -2
- package/dist/ai-service-VAJT5UBS.js +29 -0
- package/dist/api.d.ts +351 -477
- package/dist/{archive-UA4BDFXQ.js → archive-WWDBWYN2.js} +2 -2
- package/dist/{bridge-FQHZL3MC.js → bridge-RO37CUFM.js} +2 -2
- package/dist/{chat-KTPOR2JT.js → chat-TCUNPFGO.js} +8 -8
- package/dist/{chunk-FLZGS4QH.js → chunk-2C2VXEBB.js} +2 -2
- package/dist/chunk-2NDZC3S7.js +1330 -0
- package/dist/{chunk-IKRVFPWU.js → chunk-7D47T4RB.js} +3 -2
- package/dist/{chunk-AW7PFDVN.js → chunk-CVH6Y2YG.js} +1 -1
- package/dist/{chunk-XBLSAVJF.js → chunk-DTC6EH5I.js} +1 -1
- package/dist/{chunk-THUUIU3E.js → chunk-EFP3PE6C.js} +5 -5
- package/dist/{chunk-JGFVMROS.js → chunk-EFVHR7KH.js} +1 -1
- package/dist/{chunk-CQ7SNKNI.js → chunk-FSM45XD5.js} +1 -1
- package/dist/{chunk-LAC664WU.js → chunk-FXHXHI2A.js} +42 -24
- package/dist/{chunk-RKQEHRBB.js → chunk-G3GBKZGG.js} +1 -1
- package/dist/{chunk-H7OZRFJB.js → chunk-HHTXM4JT.js} +0 -49
- package/dist/{chunk-J4IBNXGJ.js → chunk-IKHDUZRH.js} +4 -3
- package/dist/{chunk-MD4C26II.js → chunk-JGFRDMR6.js} +1 -1
- package/dist/{chunk-EHZKEMMV.js → chunk-LIRWLNAK.js} +24 -10
- package/dist/{chunk-NI5FFCCS.js → chunk-MDPCSXZ4.js} +35 -11
- package/dist/chunk-NSBFETWP.js +188 -0
- package/dist/{chunk-VIVMW2H2.js → chunk-P27RV5WM.js} +1 -1
- package/dist/{chunk-EHYDTZTF.js → chunk-P7VFDSSG.js} +2 -2
- package/dist/{chunk-CMILSHZD.js → chunk-QVAQ5454.js} +84 -300
- package/dist/{chunk-HDN7MNGD.js → chunk-S5LR3XYJ.js} +1 -1
- package/dist/{chunk-2YP2TVDT.js → chunk-UPA6COHU.js} +5 -5
- package/dist/{chunk-AKPFNL7L.js → chunk-VGWJSNHS.js} +1 -1
- package/dist/{chunk-DUAUMCEE.js → chunk-W5OOPLNP.js} +3 -3
- package/dist/{chunk-2WPW7OT6.js → chunk-ZWKTUQEL.js} +1 -1
- package/dist/cli.js +22 -26
- package/dist/{clock-DGCBVGYA.js → clock-G3ALCMLJ.js} +10 -6
- package/dist/{cloud-sync-KILFGV5Q.js → cloud-sync-JV4LJOK3.js} +13 -12
- package/dist/{conversations-P5BL7RMX.js → conversations-7KVQV7EZ.js} +3 -3
- package/dist/{create-DFCAGEE5.js → create-JTLS7GX3.js} +2 -2
- package/dist/{create-QWV73WXD.js → create-VQSQHJQW.js} +1 -1
- package/dist/{daemon-client-I42FK2BF.js → daemon-client-BCTFGVCZ.js} +2 -2
- package/dist/{daemon-restart-UHOMICXT.js → daemon-restart-4JGBHEJ4.js} +7 -7
- package/dist/daemon.js +1257 -1022
- package/dist/{db-IC4J52XQ.js → db-HMFPIRO2.js} +1 -1
- package/dist/{delete-4JYGD4VN.js → delete-JESHKE7F.js} +1 -1
- package/dist/down-NGBMGORS.js +14 -0
- package/dist/{env-YJMUMFIY.js → env-CLXXT7M2.js} +2 -2
- package/dist/{export-BOJQWBMA.js → export-EGA5M5PB.js} +3 -3
- package/dist/extension-WZ4SUPJB.js +174 -0
- package/dist/extensions-ECO4RPFQ.js +27 -0
- package/dist/{files-M546TKVN.js → files-4VEJDASH.js} +3 -3
- package/dist/{history-ALPTNB3I.js → history-EJMMLXDO.js} +17 -2
- package/dist/{import-SRTQXBGH.js → import-YCGPMBSI.js} +3 -3
- package/dist/{join-J4QU42DL.js → join-2GBJKZEN.js} +1 -1
- package/dist/{list-R73GENNL.js → list-Q6O7FGAN.js} +2 -2
- package/dist/{login-3QZNR2DF.js → login-RET5WESK.js} +2 -2
- package/dist/{login-BKP3AFWN.js → login-RL6AU2SM.js} +3 -3
- package/dist/{logout-T53VKCPU.js → logout-CGAGJN3L.js} +2 -2
- package/dist/{logout-IQK7FNEK.js → logout-JRPBEMMR.js} +3 -3
- package/dist/message-delivery-6YMVNOEC.js +28 -0
- package/dist/{migrate-registry-to-db-XC7T5B7P.js → migrate-registry-to-db-FK35IPEH.js} +1 -1
- package/dist/{mind-S5V6CK5W.js → mind-LUWRQUQ5.js} +17 -17
- package/dist/{mind-activity-tracker-WRHFI3YW.js → mind-activity-tracker-VYN2ZZ2M.js} +3 -3
- package/dist/{mind-list-UPJ75GPI.js → mind-list-V5WW5DUA.js} +2 -2
- package/dist/{mind-manager-P66HQDNE.js → mind-manager-YFCOIAAX.js} +6 -6
- package/dist/{mind-sleep-BTSWQNAC.js → mind-sleep-R6PTNNW4.js} +2 -2
- package/dist/{mind-status-TK5AETEM.js → mind-status-I4ISFJ6I.js} +2 -2
- package/dist/{mind-wake-SBAKIDVP.js → mind-wake-67ZQEWAV.js} +2 -2
- package/dist/{package-OFKXNKJF.js → package-S2OAA5ZA.js} +11 -5
- package/dist/{pages-watcher-P7QECRE2.js → pages-watcher-Z3PKNROC.js} +3 -3
- package/dist/{read-36UFXN3G.js → read-WQMPTSN2.js} +2 -2
- package/dist/{register-CHREOMJ3.js → register-NZDSTLP3.js} +3 -3
- package/dist/{registry-NDNOOYG4.js → registry-ODSALQQL.js} +1 -1
- package/dist/{reject-LXIZFJ4Q.js → reject-2HZOJEIJ.js} +2 -2
- package/dist/{restart-6ESL3NBO.js → restart-QHS3NT64.js} +2 -2
- package/dist/{sandbox-5BW5HPXM.js → sandbox-O5FUSF43.js} +3 -3
- package/dist/{seed-SSUCYYDF.js → seed-WUQMPLDM.js} +1 -1
- package/dist/{send-TAOEZ4NH.js → send-OAN3RYYY.js} +20 -6
- package/dist/{setup-JHL5ZEST.js → setup-QMDK5RZX.js} +2 -2
- package/dist/{setup-RXYVGGT7.js → setup-XJH3E7YM.js} +45 -14
- package/dist/{skill-AUAQTSP5.js → skill-FZIN4W4Q.js} +65 -3
- package/dist/skills/volute-mind/SKILL.md +10 -19
- package/dist/sleep-manager-O7YQFCV5.js +30 -0
- package/dist/{split-TKJ5OT3P.js → split-EXYGGGQN.js} +1 -1
- package/dist/{sprout-UNT7LKKE.js → sprout-AXQ6H5DB.js} +8 -7
- package/dist/{start-EUJSS5R4.js → start-MTOVL6SY.js} +2 -2
- package/dist/{status-NQJYR4BG.js → status-ZRO37MWR.js} +5 -5
- package/dist/{stop-3XAITBBF.js → stop-OK5WEPVC.js} +2 -2
- package/dist/{systems-SMEFSHTA.js → systems-W3BBMSOZ.js} +5 -5
- package/dist/{tailscale-NY5MUMY3.js → tailscale-BM72RXCJ.js} +1 -1
- package/dist/{template-hash-BIMA4ILT.js → template-hash-3HOR4UAJ.js} +1 -1
- package/dist/up-BXUAIDXB.js +17 -0
- package/dist/{update-PTSH22AZ.js → update-PLPHMMZ2.js} +5 -5
- package/dist/{update-check-64FWC4Y2.js → update-check-CVCN7MF6.js} +2 -2
- package/dist/{upgrade-HA47CS4C.js → upgrade-I6NPCYUU.js} +1 -1
- package/dist/{version-notify-WDHRO3XD.js → version-notify-2NTWVEHL.js} +15 -14
- package/dist/web-assets/assets/index--kREqKl9.js +72 -0
- package/dist/web-assets/assets/index-BXYTG0nJ.css +1 -0
- package/dist/web-assets/ext-theme.css +111 -0
- package/dist/web-assets/index.html +2 -2
- package/package.json +11 -5
- package/packages/extensions/notes/dist/ui/assets/index-DgawVO5g.css +1 -0
- package/packages/extensions/notes/dist/ui/assets/index-qUWoeC4c.js +2 -0
- package/packages/extensions/notes/dist/ui/index.html +14 -0
- package/packages/extensions/notes/skills/notes/SKILL.md +62 -0
- package/packages/extensions/notes/skills/notes/scripts/notes.mjs +185 -0
- package/packages/extensions/pages/dist/ui/assets/index-D0HyS-xQ.css +1 -0
- package/packages/extensions/pages/dist/ui/assets/index-tLTROSk5.js +2 -0
- package/packages/extensions/pages/dist/ui/index.html +14 -0
- package/packages/extensions/pages/skills/pages/SKILL.md +58 -0
- package/templates/_base/home/VOLUTE.md +1 -1
- package/dist/chunk-P72MVS4R.js +0 -188
- package/dist/chunk-ZYGKG6VC.js +0 -22
- package/dist/down-LVBXEULC.js +0 -14
- package/dist/message-delivery-Q7VUMIEI.js +0 -27
- package/dist/notes-XCER3I7M.js +0 -220
- package/dist/pages-EUJR52AH.js +0 -36
- package/dist/publish-ZZB33WP4.js +0 -86
- package/dist/skills/notes/SKILL.md +0 -34
- package/dist/sleep-manager-G4B5GW5P.js +0 -29
- package/dist/status-S7UUPNRW.js +0 -38
- package/dist/up-W6VAK2XE.js +0 -17
- package/dist/web-assets/assets/index-BmKDnWDB.css +0 -1
- package/dist/web-assets/assets/index-CLJMx-GA.js +0 -71
package/README.md
CHANGED
|
@@ -177,7 +177,7 @@ volute clock remove --mind atlas --id <schedule-id>
|
|
|
177
177
|
|
|
178
178
|
## Pages
|
|
179
179
|
|
|
180
|
-
|
|
180
|
+
Pages is a built-in extension that lets minds publish web content. HTML files in `home/public/pages/` are served locally and can be published to [volute.systems](https://volute.systems).
|
|
181
181
|
|
|
182
182
|
### Setup
|
|
183
183
|
|
|
@@ -189,20 +189,16 @@ volute systems register --name my-system
|
|
|
189
189
|
volute systems login --key vp_...
|
|
190
190
|
```
|
|
191
191
|
|
|
192
|
-
###
|
|
192
|
+
### How it works
|
|
193
193
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
The command uploads everything in the mind's `home/pages/` directory. Minds can publish their own pages since `VOLUTE_MIND` is set automatically.
|
|
200
|
-
|
|
201
|
-
### Status & Logout
|
|
194
|
+
- Place HTML files in a mind's `home/public/pages/` directory
|
|
195
|
+
- Pages are served locally at `/ext/pages/public/<mindname>/`
|
|
196
|
+
- The pages extension provides publish/status API endpoints at `/api/ext/pages/`
|
|
197
|
+
- Minds learn how to publish via the bundled pages skill (auto-installed)
|
|
198
|
+
- File changes are tracked by a watcher and shown in the web dashboard
|
|
202
199
|
|
|
203
200
|
```sh
|
|
204
|
-
volute
|
|
205
|
-
volute systems logout # remove stored credentials
|
|
201
|
+
volute systems logout # remove stored credentials
|
|
206
202
|
```
|
|
207
203
|
|
|
208
204
|
## Environment variables
|
|
@@ -220,13 +216,102 @@ volute env remove API_KEY
|
|
|
220
216
|
|
|
221
217
|
The daemon serves a web UI at `http://localhost:1618` (or whatever port you chose).
|
|
222
218
|
|
|
223
|
-
- Real-time chat with full tool call visibility
|
|
219
|
+
- Real-time chat with full tool call visibility and turn summaries
|
|
224
220
|
- File browser and editor
|
|
225
221
|
- Log streaming
|
|
226
222
|
- Connector and schedule management
|
|
227
223
|
- Variant listing and status
|
|
224
|
+
- System settings: AI service config, system prompts, shared files, skills, user management
|
|
228
225
|
- First user to register becomes admin
|
|
229
226
|
|
|
227
|
+
## Extensions
|
|
228
|
+
|
|
229
|
+
Extensions add UI sections, API routes, feed sources, and lifecycle hooks to Volute. Notes and Pages are built-in extensions; you can add your own.
|
|
230
|
+
|
|
231
|
+
### Managing extensions
|
|
232
|
+
|
|
233
|
+
```sh
|
|
234
|
+
volute extension list # list loaded extensions
|
|
235
|
+
volute extension install <npm-package> # install from npm
|
|
236
|
+
volute extension uninstall <npm-package> # remove
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
After installing or uninstalling, restart the daemon (`volute restart`) to load changes.
|
|
240
|
+
|
|
241
|
+
### Local extensions
|
|
242
|
+
|
|
243
|
+
For extensions that don't need an npm package, place the code in `~/.volute/extensions/<name>/`:
|
|
244
|
+
|
|
245
|
+
```
|
|
246
|
+
~/.volute/extensions/my-extension/
|
|
247
|
+
├── src/
|
|
248
|
+
│ └── index.ts # exports an ExtensionManifest (default export)
|
|
249
|
+
└── package.json # optional, for dependencies
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Local extensions are auto-discovered on daemon start. The entry point can be `src/index.ts`, `src/index.js`, `index.ts`, or `index.js`.
|
|
253
|
+
|
|
254
|
+
### Writing an extension
|
|
255
|
+
|
|
256
|
+
Install the SDK:
|
|
257
|
+
|
|
258
|
+
```sh
|
|
259
|
+
npm install @volute/extensions hono
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
Create the manifest:
|
|
263
|
+
|
|
264
|
+
```typescript
|
|
265
|
+
import { createExtension } from "@volute/extensions";
|
|
266
|
+
import { Hono } from "hono";
|
|
267
|
+
|
|
268
|
+
export default createExtension({
|
|
269
|
+
id: "my-ext",
|
|
270
|
+
name: "My Extension",
|
|
271
|
+
version: "0.1.0",
|
|
272
|
+
description: "Does something useful",
|
|
273
|
+
|
|
274
|
+
// Required: authenticated API routes at /api/ext/my-ext/
|
|
275
|
+
routes: (ctx) =>
|
|
276
|
+
new Hono()
|
|
277
|
+
.get("/", (c) => c.json({ hello: "world" }))
|
|
278
|
+
.get("/feed", (c) =>
|
|
279
|
+
c.json([
|
|
280
|
+
{
|
|
281
|
+
id: "item-1",
|
|
282
|
+
title: "Example",
|
|
283
|
+
url: "/ext/my-ext/#/item-1",
|
|
284
|
+
date: new Date().toISOString(),
|
|
285
|
+
bodyHtml: "<p>An item</p>",
|
|
286
|
+
},
|
|
287
|
+
]),
|
|
288
|
+
),
|
|
289
|
+
|
|
290
|
+
// Optional: initialize a SQLite database for this extension
|
|
291
|
+
initDb: (db) => {
|
|
292
|
+
db.exec(`CREATE TABLE IF NOT EXISTS items (
|
|
293
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
294
|
+
name TEXT NOT NULL
|
|
295
|
+
)`);
|
|
296
|
+
},
|
|
297
|
+
|
|
298
|
+
// Optional: UI configuration
|
|
299
|
+
ui: {
|
|
300
|
+
systemSections: [{ id: "items", label: "Items" }],
|
|
301
|
+
mindSections: [{ id: "items", label: "Items" }],
|
|
302
|
+
feedSource: { endpoint: "/api/ext/my-ext/feed" },
|
|
303
|
+
},
|
|
304
|
+
});
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
The extension context (`ctx`) provides:
|
|
308
|
+
- `ctx.db` — SQLite database (if `initDb` is declared)
|
|
309
|
+
- `ctx.resolveUser(c)` — get the authenticated user from a Hono context
|
|
310
|
+
- `ctx.getUser(id)` / `ctx.getUserByUsername(name)` — look up users
|
|
311
|
+
- `ctx.publishActivity(event)` — emit activity events
|
|
312
|
+
- `ctx.getMindDir(name)` — resolve a mind's directory path
|
|
313
|
+
- `ctx.dataDir` — extension-specific data directory
|
|
314
|
+
|
|
230
315
|
## Upgrading minds
|
|
231
316
|
|
|
232
317
|
When the Volute template updates, you can upgrade minds without touching their identity:
|
|
@@ -254,6 +339,20 @@ Two built-in templates:
|
|
|
254
339
|
volute mind create atlas --template pi
|
|
255
340
|
```
|
|
256
341
|
|
|
342
|
+
## AI Service
|
|
343
|
+
|
|
344
|
+
Volute has an optional system-level AI service for features like automatic turn summaries. It uses [`@mariozechner/pi-ai`](https://github.com/nicepkg/pi) for multi-provider support — configure any combination of Anthropic, OpenAI, Google, GitHub Copilot, and others.
|
|
345
|
+
|
|
346
|
+
Configure via the web dashboard (Settings → AI Service) or during `volute setup`. Each provider authenticates independently via API key, OAuth, or environment variables. After adding providers, select which models to enable — the system picks from your enabled list.
|
|
347
|
+
|
|
348
|
+
When configured, each mind turn automatically gets a 1-2 sentence AI-generated summary (visible in history and the web UI). Without AI configured, summaries fall back to a deterministic format.
|
|
349
|
+
|
|
350
|
+
## System Prompts
|
|
351
|
+
|
|
352
|
+
Volute ships with default prompts for mind creation, system messages, and mind-owned templates. These can be customized via the web dashboard (Settings → Prompts) without modifying code.
|
|
353
|
+
|
|
354
|
+
Customized prompts are stored in the database and override the built-in defaults. Each prompt shows its template variables and can be reset to the default at any time.
|
|
355
|
+
|
|
257
356
|
## Model configuration
|
|
258
357
|
|
|
259
358
|
Set the model via `home/.config/volute.json` in the mind directory, or the `VOLUTE_MODEL` env var.
|
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
} from "./chunk-NAOW2CLO.js";
|
|
5
5
|
import {
|
|
6
6
|
daemonFetch
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-EFVHR7KH.js";
|
|
8
8
|
import {
|
|
9
9
|
parseArgs
|
|
10
10
|
} from "./chunk-D424ZQGI.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-HHTXM4JT.js";
|
|
12
12
|
import "./chunk-K3NQKI34.js";
|
|
13
13
|
|
|
14
14
|
// src/commands/chat/accept.ts
|
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
broadcast,
|
|
4
4
|
publish,
|
|
5
5
|
subscribe
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-P27RV5WM.js";
|
|
7
7
|
import "./chunk-YUIHSKR6.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-HHTXM4JT.js";
|
|
9
9
|
import "./chunk-K3NQKI34.js";
|
|
10
10
|
export {
|
|
11
11
|
broadcast,
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
aiComplete,
|
|
4
|
+
getAiConfig,
|
|
5
|
+
getAvailableModels,
|
|
6
|
+
getConfiguredProviders,
|
|
7
|
+
getEnabledModels,
|
|
8
|
+
isAiConfigured,
|
|
9
|
+
removeAiConfig,
|
|
10
|
+
removeProviderConfig,
|
|
11
|
+
saveProviderConfig,
|
|
12
|
+
setEnabledModels
|
|
13
|
+
} from "./chunk-NSBFETWP.js";
|
|
14
|
+
import "./chunk-YUIHSKR6.js";
|
|
15
|
+
import "./chunk-7D47T4RB.js";
|
|
16
|
+
import "./chunk-HHTXM4JT.js";
|
|
17
|
+
import "./chunk-K3NQKI34.js";
|
|
18
|
+
export {
|
|
19
|
+
aiComplete,
|
|
20
|
+
getAiConfig,
|
|
21
|
+
getAvailableModels,
|
|
22
|
+
getConfiguredProviders,
|
|
23
|
+
getEnabledModels,
|
|
24
|
+
isAiConfigured,
|
|
25
|
+
removeAiConfig,
|
|
26
|
+
removeProviderConfig,
|
|
27
|
+
saveProviderConfig,
|
|
28
|
+
setEnabledModels
|
|
29
|
+
};
|