volute 0.40.1 → 0.40.2
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 +2 -2
- package/dist/{ai-service-AUWIPWLP.js → ai-service-EVLKMAJD.js} +1 -1
- package/dist/{chunk-ANSTTB55.js → chunk-42UMLIQR.js} +19 -20
- package/dist/{chunk-YTNBO7S6.js → chunk-NRJ3ZYFP.js} +4 -4
- package/dist/{chunk-QV7P3TYO.js → chunk-UX7FPDDO.js} +1 -1
- package/dist/{chunk-LZ6CQYRO.js → chunk-WOWRLBL2.js} +4 -2
- package/dist/chunk-YMMYN2V3.js +1212 -0
- package/dist/{chunk-BLAXARBZ.js → chunk-ZOI6D2YH.js} +174 -1293
- package/dist/{chunk-S4SXBQ7F.js → chunk-ZXPWTH4I.js} +42 -34
- package/dist/cli.js +7 -7
- package/dist/{cloud-sync-MAQCJEFJ.js → cloud-sync-GOSJZIHH.js} +6 -5
- package/dist/{create-T4UJ64WB.js → create-Y3RGU2GI.js} +2 -2
- package/dist/{daemon-restart-LP2DR24J.js → daemon-restart-FSWVXPUE.js} +1 -1
- package/dist/daemon.js +73 -62
- package/dist/{delivery-manager-VNHLQTTO.js → delivery-manager-3NTCDKHR.js} +10 -7
- package/dist/{echo-text-QFCH3H6G.js → echo-text-JUNRP4ER.js} +7 -6
- package/dist/{extensions-LQX2N7TI.js → extensions-MD757RFY.js} +6 -5
- package/dist/{message-delivery-7BCYJLH2.js → message-delivery-Q7TU24IA.js} +6 -5
- package/dist/{mind-ELPD6VBP.js → mind-OOB2LEVC.js} +3 -3
- package/dist/{mind-activity-tracker-XFRVGXFS.js → mind-activity-tracker-GJ5RJS32.js} +1 -1
- package/dist/{mind-manager-EDCLALBF.js → mind-manager-4NFK4GEU.js} +6 -5
- package/dist/{mind-service-WTOFVNLW.js → mind-service-X7FH3NA4.js} +6 -5
- package/dist/{package-GO3PHHUF.js → package-PPA3VWS2.js} +4 -4
- package/dist/{scheduler-GQBDCGLU.js → scheduler-PDARH4CE.js} +6 -5
- package/dist/{seed-MO2C7CWC.js → seed-BTAHXCO5.js} +1 -1
- package/dist/{seed-cmd-ETIF4WD6.js → seed-cmd-VEJNJBAQ.js} +2 -2
- package/dist/{seed-create-BPQC2IOR.js → seed-create-LOU5RALI.js} +4 -4
- package/dist/{seed-sprout-TX72K33T.js → seed-sprout-BXF5TBXD.js} +2 -2
- package/dist/{setup-ZTW4FVMQ.js → setup-W3545462.js} +1 -1
- package/dist/{skills-JEWMHIIE.js → skills-3P7VQA4U.js} +1 -1
- package/dist/{sleep-manager-5277OBHI.js → sleep-manager-TTNOLIX5.js} +6 -5
- package/dist/{spirit-NVXWSVKM.js → spirit-T6GK5GEP.js} +3 -3
- package/dist/{sprout-NFJZKYEW.js → sprout-AQICF7WZ.js} +1 -1
- package/dist/{system-chat-LQSJVY55.js → system-chat-7CA2PP6A.js} +6 -5
- package/dist/turn-tracker-AI6WWEBA.js +35 -0
- package/dist/{up-4H7TL6WB.js → up-PKNNDN6M.js} +1 -1
- package/dist/{version-notify-N37N2C4G.js → version-notify-DK6AHWX7.js} +6 -5
- package/package.json +4 -4
- package/templates/claude/package.json.tmpl +1 -1
- package/templates/codex/package.json.tmpl +1 -1
- package/templates/pi/package.json.tmpl +2 -1
- package/templates/pi/src/agent.ts +1 -1
- package/templates/pi/src/lib/content.ts +1 -1
- package/templates/pi/src/lib/event-handler.ts +1 -1
- package/templates/pi/src/lib/reply-instructions-extension.ts +1 -1
- package/templates/pi/src/lib/resolve-model.ts +4 -4
- package/templates/pi/src/lib/subagents.ts +2 -2
- /package/dist/{chat-JD3TJINV.js → chat-F2EEN76G.js} +0 -0
- /package/dist/{chunk-5EVW4KOD.js → chunk-PEKG3GNZ.js} +0 -0
package/README.md
CHANGED
|
@@ -342,7 +342,7 @@ Your mind's `SOUL.md` and `MEMORY.md` are never overwritten.
|
|
|
342
342
|
Three built-in templates:
|
|
343
343
|
|
|
344
344
|
- **`claude`** (default) — Anthropic Claude Agent SDK
|
|
345
|
-
- **`pi`** — [pi-coding-agent](https://github.com/
|
|
345
|
+
- **`pi`** — [pi-coding-agent](https://github.com/earendil-works/pi) for multi-provider LLM support
|
|
346
346
|
- **`codex`** — OpenAI Codex models
|
|
347
347
|
|
|
348
348
|
```sh
|
|
@@ -351,7 +351,7 @@ volute mind create atlas --template pi
|
|
|
351
351
|
|
|
352
352
|
## AI Service
|
|
353
353
|
|
|
354
|
-
Volute has an optional system-level AI service for features like automatic turn summaries. It uses [`@
|
|
354
|
+
Volute has an optional system-level AI service for features like automatic turn summaries. It uses [`@earendil-works/pi-ai`](https://github.com/earendil-works/pi) for multi-provider support — configure any combination of Anthropic, OpenAI, Google, GitHub Copilot, and others.
|
|
355
355
|
|
|
356
356
|
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.
|
|
357
357
|
|
|
@@ -17,31 +17,30 @@ function getState(mind) {
|
|
|
17
17
|
}
|
|
18
18
|
return state;
|
|
19
19
|
}
|
|
20
|
-
var IGNORED_EVENTS = /* @__PURE__ */ new Set(["
|
|
20
|
+
var IGNORED_EVENTS = /* @__PURE__ */ new Set(["session_start", "usage", "log"]);
|
|
21
|
+
function armIdleTimer(mind, state) {
|
|
22
|
+
if (state.idleTimer) {
|
|
23
|
+
clearTimeout(state.idleTimer);
|
|
24
|
+
}
|
|
25
|
+
state.idleTimer = setTimeout(() => {
|
|
26
|
+
state.idleTimer = null;
|
|
27
|
+
state.active = false;
|
|
28
|
+
publish({
|
|
29
|
+
type: "mind_idle",
|
|
30
|
+
mind,
|
|
31
|
+
summary: `${mind} is idle`
|
|
32
|
+
}).catch((err) => {
|
|
33
|
+
logger_default.error("[mind-activity] failed to publish mind_idle", logger_default.errorData(err));
|
|
34
|
+
});
|
|
35
|
+
}, IDLE_TIMEOUT_MS);
|
|
36
|
+
}
|
|
21
37
|
function onMindEvent(mind, type, channel) {
|
|
22
38
|
const state = getState(mind);
|
|
23
39
|
if (type === "done") {
|
|
24
40
|
state.active = false;
|
|
25
|
-
|
|
26
|
-
clearTimeout(state.idleTimer);
|
|
27
|
-
}
|
|
28
|
-
state.idleTimer = setTimeout(() => {
|
|
29
|
-
state.idleTimer = null;
|
|
30
|
-
if (!state.active) {
|
|
31
|
-
publish({
|
|
32
|
-
type: "mind_idle",
|
|
33
|
-
mind,
|
|
34
|
-
summary: `${mind} is idle`
|
|
35
|
-
}).catch((err) => {
|
|
36
|
-
logger_default.error("[mind-activity] failed to publish mind_idle", logger_default.errorData(err));
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
}, IDLE_TIMEOUT_MS);
|
|
41
|
+
armIdleTimer(mind, state);
|
|
40
42
|
} else if (!IGNORED_EVENTS.has(type)) {
|
|
41
|
-
|
|
42
|
-
clearTimeout(state.idleTimer);
|
|
43
|
-
state.idleTimer = null;
|
|
44
|
-
}
|
|
43
|
+
armIdleTimer(mind, state);
|
|
45
44
|
if (!state.active) {
|
|
46
45
|
state.active = true;
|
|
47
46
|
state.channel = channel;
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
getSharedSkill,
|
|
10
10
|
installSkill,
|
|
11
11
|
mindSkillsDir
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-UX7FPDDO.js";
|
|
13
13
|
import {
|
|
14
14
|
readVoluteConfig,
|
|
15
15
|
writeVoluteConfig
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
import {
|
|
21
21
|
qualifyModelId,
|
|
22
22
|
resolveTemplate
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-ZXPWTH4I.js";
|
|
24
24
|
import {
|
|
25
25
|
readGlobalConfig
|
|
26
26
|
} from "./chunk-DNU6XLE2.js";
|
|
@@ -79,7 +79,7 @@ async function ensureSpiritProject() {
|
|
|
79
79
|
if (existing) return;
|
|
80
80
|
const dir = spiritDir();
|
|
81
81
|
const spiritModel = getSpiritModel();
|
|
82
|
-
const template = resolveTemplate(spiritModel);
|
|
82
|
+
const template = await resolveTemplate(spiritModel);
|
|
83
83
|
const templatesRoot = findTemplatesRoot();
|
|
84
84
|
const { composedDir, manifest } = composeTemplate(templatesRoot, template);
|
|
85
85
|
try {
|
|
@@ -148,7 +148,7 @@ async function syncSpiritTemplate() {
|
|
|
148
148
|
if (!existsSync(dir)) return;
|
|
149
149
|
const templatesRoot = findTemplatesRoot();
|
|
150
150
|
const currentModel = getSpiritModel();
|
|
151
|
-
const expectedTemplate = resolveTemplate(currentModel);
|
|
151
|
+
const expectedTemplate = await resolveTemplate(currentModel);
|
|
152
152
|
const currentTemplate = entry.template ?? "claude";
|
|
153
153
|
if (expectedTemplate !== currentTemplate) {
|
|
154
154
|
slog.info(`spirit template change: ${currentTemplate} \u2192 ${expectedTemplate}`);
|
|
@@ -46,7 +46,7 @@ async function initDefaultSkills() {
|
|
|
46
46
|
const config = readGlobalConfig();
|
|
47
47
|
let extensionSkills = [];
|
|
48
48
|
try {
|
|
49
|
-
const { getExtensionStandardSkills } = await import("./extensions-
|
|
49
|
+
const { getExtensionStandardSkills } = await import("./extensions-MD757RFY.js");
|
|
50
50
|
extensionSkills = getExtensionStandardSkills();
|
|
51
51
|
} catch (err) {
|
|
52
52
|
logger_default.warn("failed to load extension standard skills during init", logger_default.errorData(err));
|
|
@@ -4,9 +4,8 @@ import {
|
|
|
4
4
|
getBridgeConfig
|
|
5
5
|
} from "./chunk-PKGA23XM.js";
|
|
6
6
|
import {
|
|
7
|
-
publish,
|
|
8
7
|
recordOutbound
|
|
9
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ZOI6D2YH.js";
|
|
10
9
|
import {
|
|
11
10
|
readEnv,
|
|
12
11
|
sharedEnvPath
|
|
@@ -22,6 +21,9 @@ import {
|
|
|
22
21
|
import {
|
|
23
22
|
readVoluteConfig
|
|
24
23
|
} from "./chunk-CU6OFXMM.js";
|
|
24
|
+
import {
|
|
25
|
+
publish
|
|
26
|
+
} from "./chunk-YMMYN2V3.js";
|
|
25
27
|
import {
|
|
26
28
|
getOrCreateMindUser,
|
|
27
29
|
getUserByUsername
|