volute 0.24.0 → 0.26.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 +15 -20
- package/dist/{activity-events-4O37J7PD.js → activity-events-ZMBAKLUF.js} +2 -2
- package/dist/api.d.ts +590 -10
- package/dist/{auth-HM2RSPY7.js → auth-4TV573WE.js} +2 -2
- package/dist/{channel-HZOSHGNF.js → channel-ZVZV42UD.js} +3 -3
- package/dist/{chunk-NOBRGACV.js → chunk-2VO7453N.js} +56 -19
- package/dist/{chunk-OOW675I3.js → chunk-3CFRE2VC.js} +931 -775
- package/dist/{chunk-PHHKNGA3.js → chunk-3TV4GLFO.js} +2 -2
- package/dist/{chunk-4TJ72QQ3.js → chunk-5Y3PBKW6.js} +3 -3
- package/dist/{chunk-BFK6SOEJ.js → chunk-J2CO4WEV.js} +1 -1
- package/dist/{chunk-TQDITGES.js → chunk-LX22GRG7.js} +10 -13
- package/dist/{chunk-E7GOKNOT.js → chunk-NWI2425I.js} +1 -1
- package/dist/{chunk-2767L2RZ.js → chunk-OZFKBXD6.js} +1 -1
- package/dist/{chunk-XLC342FO.js → chunk-SIAG3QMM.js} +14 -1
- package/dist/{chunk-RVKR2R7F.js → chunk-SSI47XP2.js} +10 -2
- package/dist/chunk-TZKJLDQN.js +78 -0
- package/dist/{chunk-P3W36ZGD.js → chunk-USNBKHYG.js} +33 -5
- package/dist/chunk-UTL75LP6.js +113 -0
- package/dist/{chunk-3AIBT4TW.js → chunk-V63B7DX3.js} +24 -1
- package/dist/{chunk-33XAVCS4.js → chunk-WBHMQ5OZ.js} +49 -0
- package/dist/{chunk-TRQEV3CD.js → chunk-WGOGUMPO.js} +22 -3
- package/dist/chunk-XOXLRRR2.js +176 -0
- package/dist/{chunk-JTDFJWI2.js → chunk-YJA7P64S.js} +1 -1
- package/dist/chunk-ZYGKG6VC.js +22 -0
- package/dist/cli.js +44 -20
- package/dist/{cloud-sync-DIU3OCPV.js → cloud-sync-NI2K3C7G.js} +11 -9
- package/dist/{connector-M6XFI6GM.js → connector-G722WXAU.js} +4 -4
- package/dist/{create-VDQJER52.js → create-4YBRTTJS.js} +1 -1
- package/dist/{daemon-client-JOVQZ52X.js → daemon-client-Z7FAJ6JW.js} +1 -1
- package/dist/{daemon-restart-YMPEATQH.js → daemon-restart-BJZ3O4U4.js} +6 -5
- package/dist/daemon.js +982 -340
- package/dist/{delete-2MRR4JX5.js → delete-27OYNK25.js} +1 -1
- package/dist/{down-674SX2IZ.js → down-7UKFMJJZ.js} +4 -4
- package/dist/{env-2FPOZK37.js → env-M336ONDP.js} +4 -4
- package/dist/{export-IKFAPRAO.js → export-HP4G5DQC.js} +1 -1
- package/dist/{file-KT3UIQM3.js → file-HUDKTRAS.js} +3 -3
- package/dist/{history-46WZN5CN.js → history-B64GTFTD.js} +3 -3
- package/dist/{import-FRDPQPJ2.js → import-XIB7UV4S.js} +2 -2
- package/dist/{log-6SGSSR3D.js → log-PBFNILJ4.js} +3 -3
- package/dist/{login-UO6AOVEA.js → login-6U7U6BNG.js} +1 -1
- package/dist/login-B5E7N7MY.js +46 -0
- package/dist/logout-XSJRYS3U.js +39 -0
- package/dist/{logs-HRBONI5I.js → logs-3CART7O7.js} +3 -3
- package/dist/{merge-KSFJKX6T.js → merge-VK2HSKMA.js} +3 -3
- package/dist/{message-delivery-S7BCNV6Y.js → message-delivery-MS5JYPZX.js} +11 -9
- package/dist/{mind-KPLCRKQA.js → mind-HZ3QSDDJ.js} +17 -17
- package/dist/{mind-activity-tracker-NMDDEV3K.js → mind-activity-tracker-4G6FURY2.js} +3 -3
- package/dist/{mind-manager-ZNRIYEK3.js → mind-manager-VVK67AY3.js} +6 -4
- package/dist/{mind-sleep-GHPTSAYN.js → mind-sleep-DTV7L44D.js} +3 -3
- package/dist/{mind-wake-BJDJFMDF.js → mind-wake-PFN4FN3T.js} +3 -3
- package/dist/notes-37FW2UR2.js +230 -0
- package/dist/{package-S5YF25XV.js → package-VZWLXPHV.js} +3 -1
- package/dist/{pages-TWR6U7DS.js → pages-DIIT5HMQ.js} +1 -1
- package/dist/{publish-BZNHKUUK.js → publish-HQV7YREB.js} +4 -4
- package/dist/{pull-D32SPFVU.js → pull-2MB4SK3C.js} +3 -3
- package/dist/{register-U2UO6TC4.js → register-EFND67FQ.js} +1 -1
- package/dist/{restart-5BMNV7KU.js → restart-CCK7D6TV.js} +3 -3
- package/dist/sandbox-EHGFF52K.js +19 -0
- package/dist/{schedule-YEFDLVMJ.js → schedule-6F7ELB2M.js} +3 -3
- package/dist/{seed-6FEKB3YC.js → seed-E5OQGWX3.js} +1 -1
- package/dist/{send-IISDYFCL.js → send-IH6XZKPC.js} +6 -20
- package/dist/service-LLBV3R7M.js +122 -0
- package/dist/setup-F6TWFYGQ.js +371 -0
- package/dist/setup-YGAAIKKZ.js +17 -0
- package/dist/{shared-LWMNTTZN.js → shared-UMO4S7CC.js} +4 -4
- package/dist/{skill-BQOFACEI.js → skill-42LGFBQC.js} +13 -5
- package/dist/skills/dreaming/SKILL.md +68 -0
- package/dist/skills/dreaming/references/INSTALL.md +56 -0
- package/dist/skills/dreaming/scripts/dream.ts +289 -0
- package/dist/skills/dreaming/scripts/wake-context-dreams.sh +30 -0
- package/dist/skills/imagegen/SKILL.md +37 -0
- package/dist/skills/imagegen/references/INSTALL.md +13 -0
- package/dist/skills/imagegen/scripts/imagegen.ts +136 -0
- package/dist/skills/notes/SKILL.md +34 -0
- package/dist/skills/resonance/SKILL.md +73 -0
- package/dist/skills/resonance/assets/default-config.json +21 -0
- package/dist/skills/resonance/references/INSTALL.md +23 -0
- package/dist/skills/resonance/scripts/resonance.ts +1250 -0
- package/dist/skills/volute-mind/SKILL.md +23 -3
- package/dist/{sleep-manager-XXSWQQLE.js → sleep-manager-EE4NRN2Q.js} +11 -9
- package/dist/{sprout-CGSW4CF5.js → sprout-QL74KR2X.js} +5 -5
- package/dist/{start-C7XITZ5O.js → start-O5JQASRC.js} +3 -3
- package/dist/{status-SIRPLEZC.js → status-FZBEBM7Q.js} +3 -3
- package/dist/{status-LYS4NUOZ.js → status-WXD4HXRL.js} +3 -3
- package/dist/{stop-CVKBSLXY.js → stop-2SOG5NYF.js} +3 -3
- package/dist/up-SDMCSVI3.js +17 -0
- package/dist/{update-7XCZMYBT.js → update-5VUDAI3D.js} +6 -6
- package/dist/{upgrade-7RUIXGOO.js → upgrade-QCCO33BK.js} +1 -1
- package/dist/{variant-UGREB4G5.js → variant-WWLDY6D5.js} +4 -4
- package/dist/{version-notify-SZ75QRGO.js → version-notify-USFZBWMG.js} +11 -9
- package/dist/web-assets/assets/index-CUQ31ieL.js +69 -0
- package/dist/web-assets/assets/index-CW8NSl1o.css +1 -0
- package/dist/web-assets/favicon.png +0 -0
- package/dist/web-assets/index.html +5 -4
- package/dist/web-assets/logo.png +0 -0
- package/drizzle/0015_notes.sql +23 -0
- package/drizzle/0016_note_reactions_and_replies.sql +15 -0
- package/drizzle/meta/_journal.json +14 -0
- package/package.json +3 -1
- package/templates/_base/.init/.config/hooks/wake-context.sh +7 -0
- package/templates/_base/home/public/.gitkeep +0 -0
- package/templates/_base/src/lib/startup.ts +8 -0
- package/templates/claude/src/agent.ts +51 -1
- package/templates/claude/src/server.ts +1 -0
- package/templates/pi/package.json.tmpl +1 -0
- package/templates/pi/src/agent.ts +48 -1
- package/templates/pi/src/lib/subagents.ts +150 -0
- package/templates/pi/src/server.ts +1 -0
- package/dist/chunk-NWPT4ASZ.js +0 -89
- package/dist/service-FASYWLTC.js +0 -247
- package/dist/setup-BMLM2UTK.js +0 -230
- package/dist/up-OMHACRJL.js +0 -15
- package/dist/web-assets/assets/index-Bx9WDoaQ.js +0 -69
- package/dist/web-assets/assets/index-Clz8OhmJ.css +0 -1
package/dist/setup-BMLM2UTK.js
DELETED
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
SYSTEM_SERVICE_PATH
|
|
4
|
-
} from "./chunk-3AIBT4TW.js";
|
|
5
|
-
import {
|
|
6
|
-
resolveVoluteBin
|
|
7
|
-
} from "./chunk-JTDFJWI2.js";
|
|
8
|
-
import {
|
|
9
|
-
ensureVoluteGroup
|
|
10
|
-
} from "./chunk-NWPT4ASZ.js";
|
|
11
|
-
import "./chunk-B2CPS4QU.js";
|
|
12
|
-
import "./chunk-K3NQKI34.js";
|
|
13
|
-
|
|
14
|
-
// src/commands/setup.ts
|
|
15
|
-
import { execFileSync } from "child_process";
|
|
16
|
-
import { existsSync, mkdirSync, rmSync, unlinkSync, writeFileSync } from "fs";
|
|
17
|
-
import { homedir } from "os";
|
|
18
|
-
import { dirname } from "path";
|
|
19
|
-
var SERVICE_NAME = "volute.service";
|
|
20
|
-
var PROFILE_PATH = "/etc/profile.d/volute.sh";
|
|
21
|
-
var WRAPPER_PATH = "/usr/local/bin/volute";
|
|
22
|
-
var DATA_DIR = "/var/lib/volute";
|
|
23
|
-
var MINDS_DIR = "/minds";
|
|
24
|
-
var LEGACY_AGENTS_DIR = "/agents";
|
|
25
|
-
var HOST_RE = /^[a-zA-Z0-9.:_-]+$/;
|
|
26
|
-
function validateHost(host) {
|
|
27
|
-
if (!HOST_RE.test(host)) {
|
|
28
|
-
throw new Error(`Invalid host: ${host}`);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
function buildServicePath(voluteBin) {
|
|
32
|
-
const binDir = dirname(voluteBin);
|
|
33
|
-
const standardPaths = [
|
|
34
|
-
"/usr/local/sbin",
|
|
35
|
-
"/usr/local/bin",
|
|
36
|
-
"/usr/sbin",
|
|
37
|
-
"/usr/bin",
|
|
38
|
-
"/sbin",
|
|
39
|
-
"/bin"
|
|
40
|
-
];
|
|
41
|
-
const parts = standardPaths.includes(binDir) ? standardPaths : [binDir, ...standardPaths];
|
|
42
|
-
return parts.join(":");
|
|
43
|
-
}
|
|
44
|
-
function generateUnit(voluteBin, port, host) {
|
|
45
|
-
const args = ["up", "--foreground"];
|
|
46
|
-
if (port != null) args.push("--port", String(port));
|
|
47
|
-
if (host) args.push("--host", host);
|
|
48
|
-
const home = homedir();
|
|
49
|
-
const binUnderHome = voluteBin.startsWith(`${home}/`);
|
|
50
|
-
const lines = [
|
|
51
|
-
"[Unit]",
|
|
52
|
-
"Description=Volute Mind Manager",
|
|
53
|
-
"After=network.target",
|
|
54
|
-
"",
|
|
55
|
-
"[Service]",
|
|
56
|
-
"Type=exec",
|
|
57
|
-
`ExecStart=${voluteBin} ${args.join(" ")}`,
|
|
58
|
-
`Environment=PATH=${buildServicePath(voluteBin)}`,
|
|
59
|
-
`Environment=VOLUTE_HOME=${DATA_DIR}`,
|
|
60
|
-
`Environment=VOLUTE_MINDS_DIR=${MINDS_DIR}`,
|
|
61
|
-
"Environment=VOLUTE_ISOLATION=user",
|
|
62
|
-
"Restart=on-failure",
|
|
63
|
-
"RestartSec=5",
|
|
64
|
-
"ProtectSystem=true",
|
|
65
|
-
`ReadWritePaths=${DATA_DIR} ${MINDS_DIR}`,
|
|
66
|
-
"PrivateTmp=yes"
|
|
67
|
-
];
|
|
68
|
-
if (!binUnderHome) {
|
|
69
|
-
lines.push("ProtectHome=yes");
|
|
70
|
-
} else {
|
|
71
|
-
console.warn(`Warning: ProtectHome=yes omitted because volute binary is under ${home}.`);
|
|
72
|
-
console.warn("Consider installing Node.js system-wide for stronger sandboxing.");
|
|
73
|
-
}
|
|
74
|
-
lines.push("RestrictSUIDSGID=yes", "", "[Install]", "WantedBy=multi-user.target", "");
|
|
75
|
-
return lines.join("\n");
|
|
76
|
-
}
|
|
77
|
-
function install(port, host) {
|
|
78
|
-
if (host) validateHost(host);
|
|
79
|
-
if (process.getuid?.() !== 0) {
|
|
80
|
-
console.error("Error: volute service install --system must be run as root (use sudo).");
|
|
81
|
-
process.exit(1);
|
|
82
|
-
}
|
|
83
|
-
if (process.platform !== "linux") {
|
|
84
|
-
console.error("Error: volute service install --system is only supported on Linux.");
|
|
85
|
-
console.error("On macOS, use `volute service install` for user-level service management.");
|
|
86
|
-
process.exit(1);
|
|
87
|
-
}
|
|
88
|
-
const voluteBin = resolveVoluteBin();
|
|
89
|
-
mkdirSync(DATA_DIR, { recursive: true });
|
|
90
|
-
console.log(`Created ${DATA_DIR}`);
|
|
91
|
-
mkdirSync(MINDS_DIR, { recursive: true });
|
|
92
|
-
console.log(`Created ${MINDS_DIR}`);
|
|
93
|
-
ensureVoluteGroup({ force: true });
|
|
94
|
-
console.log("Ensured volute group exists");
|
|
95
|
-
try {
|
|
96
|
-
execFileSync("git", ["config", "--system", "user.name"]);
|
|
97
|
-
console.log("System git identity already configured, skipping");
|
|
98
|
-
} catch {
|
|
99
|
-
try {
|
|
100
|
-
execFileSync("git", ["config", "--system", "user.name", "Volute"]);
|
|
101
|
-
execFileSync("git", ["config", "--system", "user.email", "volute@localhost"]);
|
|
102
|
-
console.log("Configured system git identity");
|
|
103
|
-
} catch (err) {
|
|
104
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
105
|
-
console.warn(`Warning: failed to set system git config: ${msg}`);
|
|
106
|
-
console.warn("Git commits by the daemon may fail. You can set this manually with:");
|
|
107
|
-
console.warn(' git config --system user.name "Volute"');
|
|
108
|
-
console.warn(' git config --system user.email "volute@localhost"');
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
execFileSync("chmod", ["755", DATA_DIR]);
|
|
112
|
-
execFileSync("chmod", ["755", MINDS_DIR]);
|
|
113
|
-
console.log("Set permissions on directories");
|
|
114
|
-
writeFileSync(
|
|
115
|
-
PROFILE_PATH,
|
|
116
|
-
`export VOLUTE_HOME=${DATA_DIR}
|
|
117
|
-
export VOLUTE_MINDS_DIR=${MINDS_DIR}
|
|
118
|
-
`
|
|
119
|
-
);
|
|
120
|
-
console.log(`Wrote ${PROFILE_PATH}`);
|
|
121
|
-
const binDir = dirname(voluteBin);
|
|
122
|
-
if (voluteBin !== WRAPPER_PATH && !voluteBin.startsWith("/usr/bin")) {
|
|
123
|
-
const wrapper = `#!/bin/sh
|
|
124
|
-
export PATH="${binDir}:$PATH"
|
|
125
|
-
export VOLUTE_HOME="${DATA_DIR}"
|
|
126
|
-
export VOLUTE_MINDS_DIR="${MINDS_DIR}"
|
|
127
|
-
exec "${voluteBin}" "$@"
|
|
128
|
-
`;
|
|
129
|
-
writeFileSync(WRAPPER_PATH, wrapper, { mode: 493 });
|
|
130
|
-
console.log(`Wrote ${WRAPPER_PATH} (wrapper for ${voluteBin})`);
|
|
131
|
-
}
|
|
132
|
-
writeFileSync(SYSTEM_SERVICE_PATH, generateUnit(voluteBin, port, host ?? "0.0.0.0"));
|
|
133
|
-
console.log(`Wrote ${SYSTEM_SERVICE_PATH}`);
|
|
134
|
-
try {
|
|
135
|
-
execFileSync("systemctl", ["daemon-reload"]);
|
|
136
|
-
} catch (err) {
|
|
137
|
-
const e = err;
|
|
138
|
-
console.error(`Failed to reload systemd after writing ${SYSTEM_SERVICE_PATH}.`);
|
|
139
|
-
if (e.stderr) console.error(e.stderr.toString().trim());
|
|
140
|
-
console.error(
|
|
141
|
-
"Try running `systemctl daemon-reload` manually, then `systemctl enable --now volute`."
|
|
142
|
-
);
|
|
143
|
-
process.exit(1);
|
|
144
|
-
}
|
|
145
|
-
try {
|
|
146
|
-
execFileSync("systemctl", ["enable", "--now", SERVICE_NAME]);
|
|
147
|
-
console.log("Service installed, enabled, and started.");
|
|
148
|
-
console.log(
|
|
149
|
-
"Run `source /etc/profile.d/volute.sh` or start a new shell to use volute CLI commands."
|
|
150
|
-
);
|
|
151
|
-
console.log(`
|
|
152
|
-
Volute daemon is running. Data directory: ${DATA_DIR}`);
|
|
153
|
-
console.log("Use `systemctl status volute` to check status.");
|
|
154
|
-
} catch (err) {
|
|
155
|
-
const e = err;
|
|
156
|
-
console.error("Service installed but failed to start.");
|
|
157
|
-
if (e.stderr) console.error(e.stderr.toString().trim());
|
|
158
|
-
console.error("Check `journalctl -xeu volute.service` for details.");
|
|
159
|
-
process.exit(1);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
function uninstall(force) {
|
|
163
|
-
if (process.getuid?.() !== 0) {
|
|
164
|
-
console.error("Error: volute service uninstall --system must be run as root (use sudo).");
|
|
165
|
-
process.exit(1);
|
|
166
|
-
}
|
|
167
|
-
if (!existsSync(SYSTEM_SERVICE_PATH)) {
|
|
168
|
-
console.log("Service not installed.");
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
try {
|
|
172
|
-
execFileSync("systemctl", ["disable", "--now", SERVICE_NAME], { stdio: "ignore" });
|
|
173
|
-
} catch {
|
|
174
|
-
console.warn("Warning: failed to disable service (may already be stopped)");
|
|
175
|
-
}
|
|
176
|
-
unlinkSync(SYSTEM_SERVICE_PATH);
|
|
177
|
-
if (existsSync(PROFILE_PATH)) unlinkSync(PROFILE_PATH);
|
|
178
|
-
if (existsSync(WRAPPER_PATH)) unlinkSync(WRAPPER_PATH);
|
|
179
|
-
try {
|
|
180
|
-
execFileSync("systemctl", ["daemon-reload"]);
|
|
181
|
-
} catch {
|
|
182
|
-
console.warn("Warning: failed to reload systemd daemon");
|
|
183
|
-
}
|
|
184
|
-
console.log("Service stopped and removed.");
|
|
185
|
-
if (force) {
|
|
186
|
-
try {
|
|
187
|
-
const output = execFileSync("getent", ["group", "volute"], { encoding: "utf-8" });
|
|
188
|
-
const members = output.split(":")[3]?.trim();
|
|
189
|
-
if (members) {
|
|
190
|
-
for (const user of members.split(",")) {
|
|
191
|
-
const u = user.trim();
|
|
192
|
-
try {
|
|
193
|
-
execFileSync("userdel", [u], { stdio: "ignore" });
|
|
194
|
-
} catch {
|
|
195
|
-
console.warn(`Warning: failed to remove user ${u}`);
|
|
196
|
-
}
|
|
197
|
-
try {
|
|
198
|
-
execFileSync("groupdel", [u], { stdio: "ignore" });
|
|
199
|
-
} catch {
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
} catch {
|
|
204
|
-
}
|
|
205
|
-
if (existsSync(DATA_DIR)) {
|
|
206
|
-
rmSync(DATA_DIR, { recursive: true, force: true });
|
|
207
|
-
console.log(`Deleted ${DATA_DIR}`);
|
|
208
|
-
}
|
|
209
|
-
if (existsSync(MINDS_DIR)) {
|
|
210
|
-
rmSync(MINDS_DIR, { recursive: true, force: true });
|
|
211
|
-
console.log(`Deleted ${MINDS_DIR}`);
|
|
212
|
-
}
|
|
213
|
-
if (existsSync(LEGACY_AGENTS_DIR)) {
|
|
214
|
-
rmSync(LEGACY_AGENTS_DIR, { recursive: true, force: true });
|
|
215
|
-
console.log(`Deleted ${LEGACY_AGENTS_DIR} (legacy)`);
|
|
216
|
-
}
|
|
217
|
-
try {
|
|
218
|
-
execFileSync("groupdel", ["volute"], { stdio: "ignore" });
|
|
219
|
-
console.log("Removed volute group");
|
|
220
|
-
} catch {
|
|
221
|
-
}
|
|
222
|
-
} else {
|
|
223
|
-
console.log(`Data directory preserved: ${DATA_DIR}`);
|
|
224
|
-
console.log("Use --force to also remove data and system users.");
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
export {
|
|
228
|
-
install,
|
|
229
|
-
uninstall
|
|
230
|
-
};
|
package/dist/up-OMHACRJL.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
readGlobalConfig,
|
|
4
|
-
run
|
|
5
|
-
} from "./chunk-TQDITGES.js";
|
|
6
|
-
import "./chunk-3AIBT4TW.js";
|
|
7
|
-
import "./chunk-D424ZQGI.js";
|
|
8
|
-
import "./chunk-JTDFJWI2.js";
|
|
9
|
-
import "./chunk-NWPT4ASZ.js";
|
|
10
|
-
import "./chunk-B2CPS4QU.js";
|
|
11
|
-
import "./chunk-K3NQKI34.js";
|
|
12
|
-
export {
|
|
13
|
-
readGlobalConfig,
|
|
14
|
-
run
|
|
15
|
-
};
|