volute 0.43.1 → 0.44.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/dist/{activity-events-UISXY4Y5.js → activity-events-OMCSM7XW.js} +3 -3
- package/dist/{ai-service-FBCCEYF5.js → ai-service-7PHSRDMO.js} +4 -4
- package/dist/{archive-I32WHCJB.js → archive-6R4TZMYI.js} +3 -3
- package/dist/{auth-3RIG6GKN.js → auth-FRZJVQCS.js} +4 -4
- package/dist/avatar-image-BNWEXSA2.js +16 -0
- package/dist/{chat-SDSX5TVV.js → chat-I4EDDIQC.js} +2 -2
- package/dist/{chunk-AD46AYZQ.js → chunk-2BONPXAF.js} +1 -1
- package/dist/{chunk-PGPLCJPK.js → chunk-3ERIL673.js} +1 -1
- package/dist/{chunk-C6ESRQZ7.js → chunk-3GYVW2X3.js} +1 -1
- package/dist/{chunk-SPLPKBES.js → chunk-5AHYQHNT.js} +4 -8
- package/dist/{chunk-XDTKJNW5.js → chunk-5GT7URXJ.js} +1 -1
- package/dist/{chunk-QQ2MVQU3.js → chunk-7FT24JBQ.js} +8 -8
- package/dist/{chunk-DE4EKQFH.js → chunk-7KWANSLX.js} +3 -3
- package/dist/{chunk-EFL5UOY4.js → chunk-CYI534DJ.js} +3 -3
- package/dist/{chunk-DMUPZQWP.js → chunk-EQZD4YU3.js} +8 -8
- package/dist/{chunk-57LBQ7JX.js → chunk-FHWUQZXE.js} +1 -1
- package/dist/{chunk-K4EHBHPE.js → chunk-FZMEVCWC.js} +3 -3
- package/dist/{chunk-YAMO2U3N.js → chunk-H7IYFRAL.js} +1 -1
- package/dist/{chunk-M3PGGSBH.js → chunk-HVU45COX.js} +1 -1
- package/dist/{chunk-KINGVQSR.js → chunk-I2Y2YHIO.js} +5 -5
- package/dist/{chunk-O3DXAR44.js → chunk-IEWZ7VD7.js} +2 -2
- package/dist/{chunk-YSV3VJQK.js → chunk-J47TIYHA.js} +1 -1
- package/dist/{chunk-QHG4OMZL.js → chunk-KDLYIECM.js} +37 -32
- package/dist/{chunk-EE7SZJON.js → chunk-KP3KWNG6.js} +2 -2
- package/dist/{chunk-JVK6QQIC.js → chunk-LAXUUY7O.js} +2 -2
- package/dist/{chunk-Y6O35D7K.js → chunk-NF75HPNR.js} +5 -5
- package/dist/{chunk-4SVONUTC.js → chunk-OMETFX5H.js} +321 -204
- package/dist/{chunk-ONM2AZFL.js → chunk-PNV24SEP.js} +1 -1
- package/dist/{chunk-ATEX3ZPG.js → chunk-Q2XBKQ2D.js} +2 -2
- package/dist/{chunk-GZJFC76M.js → chunk-QMJJWTNL.js} +1 -1
- package/dist/chunk-SQL7M4HJ.js +120 -0
- package/dist/{chunk-2HIVYZDB.js → chunk-UMI4UIJG.js} +1 -1
- package/dist/{chunk-7G2EEYXX.js → chunk-ZMIMSIIT.js} +2 -2
- package/dist/{chunk-L3IV23ZG.js → chunk-ZV7MFISX.js} +2 -0
- package/dist/cli.js +47 -22
- package/dist/{cloud-sync-KOEBUFW5.js → cloud-sync-6WJ7WFYD.js} +16 -16
- package/dist/{conversations-67WWW25C.js → conversations-WAJYZKOC.js} +4 -4
- package/dist/{create-7W3LV3J7.js → create-YZIV5OJC.js} +1 -1
- package/dist/{daemon-restart-EZXB73W7.js → daemon-restart-OUJVINXV.js} +7 -7
- package/dist/daemon.js +297 -294
- package/dist/{db-CZV62BOQ.js → db-JFLCJCUG.js} +2 -2
- package/dist/{db-IJL6B26S.js → db-LZTLA7XC.js} +1 -1
- package/dist/delivery-manager-TEVOHX5W.js +32 -0
- package/dist/{delivery-router-HXBHYHJM.js → delivery-router-GODSIS62.js} +3 -3
- package/dist/{down-RRNYIGCU.js → down-XCAZXWLB.js} +5 -5
- package/dist/echo-text-T7ZA5EYD.js +32 -0
- package/dist/{exec-SJK7VUTC.js → exec-4GWHAHS3.js} +3 -3
- package/dist/{export-7LPCIB5J.js → export-ID7YUSLZ.js} +3 -3
- package/dist/{extensions-PQPZT6LS.js → extensions-3QNDGW5E.js} +16 -16
- package/dist/{files-LV7VAKPC.js → files-BQ2WB5KC.js} +3 -3
- package/dist/{import-XPECCRQ7.js → import-SKID37QX.js} +6 -6
- package/dist/{isolation-5AYEY55P.js → isolation-5MB3J73F.js} +3 -3
- package/dist/{login-KJSN4JDA.js → login-LM4NF4ZB.js} +2 -2
- package/dist/{logout-TMJGUQV2.js → logout-CTJVIZGA.js} +2 -2
- package/dist/message-delivery-2EA5LLMD.js +34 -0
- package/dist/{mind-G3WEWDM4.js → mind-MI7Z6KM2.js} +5 -5
- package/dist/{mind-activity-tracker-JHAT6456.js → mind-activity-tracker-BGHJE7XA.js} +4 -4
- package/dist/mind-service-S3SY7HAM.js +36 -0
- package/dist/{package-24TL6DTF.js → package-5B4XDTJH.js} +1 -1
- package/dist/{registry-7LQHTRUX.js → registry-NUJAGLQJ.js} +2 -2
- package/dist/{sandbox-SJH3XOPZ.js → sandbox-IOPWWILM.js} +4 -4
- package/dist/scheduler-CXWQ6Z4E.js +30 -0
- package/dist/{schema-LRUTFOER.js → schema-PVNG3PQM.js} +1 -1
- package/dist/{seed-HHSJTM6O.js → seed-UUPVQWFB.js} +1 -1
- package/dist/{seed-cmd-UPQY35RG.js → seed-cmd-7XPKDQUC.js} +2 -2
- package/dist/{seed-create-MDRMXMSB.js → seed-create-IZ4M5ESO.js} +3 -3
- package/dist/{seed-sprout-4M7IQWMH.js → seed-sprout-POJXHJWV.js} +7 -7
- package/dist/{send-ZBZWIH5V.js → send-O6W53VBM.js} +37 -42
- package/dist/{service-4EVZKGSA.js → service-AQVPUANO.js} +4 -4
- package/dist/{service-install-SHRM6NHK.js → service-install-4QNUDKLM.js} +5 -5
- package/dist/{setup-ZD2LMBR3.js → setup-5GCO3CUB.js} +7 -7
- package/dist/{setup-25MMJ3J4.js → setup-MLRKNP7Y.js} +3 -3
- package/dist/{skills-4KQ377GN.js → skills-775C7QFF.js} +5 -5
- package/dist/sleep-manager-HINI6Y46.js +34 -0
- package/dist/{spirit-53DQPRNR.js → spirit-IK5OYWMV.js} +7 -7
- package/dist/{sprout-YKM2M6D6.js → sprout-ZY5QGOEL.js} +1 -1
- package/dist/{src-O4PRLMKM.js → src-JAOVXO5W.js} +1 -0
- package/dist/{src-3EGHHKZK.js → src-XFY3XDD6.js} +16 -11
- package/dist/{src-L2Z7X5UT.js → src-YH6PQ7LJ.js} +264 -52
- package/dist/{status-WTU2WHXY.js → status-E5DQNCAO.js} +5 -5
- package/dist/system-chat-4DQZOEZI.js +34 -0
- package/dist/{tailscale-Q7ZJL7S7.js → tailscale-QAWVKQKU.js} +2 -2
- package/dist/{turn-tracker-JZYERJ76.js → turn-tracker-RWZMY7M6.js} +5 -5
- package/dist/{up-LFZA4GI5.js → up-FLCDR2UB.js} +6 -6
- package/dist/{update-EJ7Q77ZX.js → update-7TYVH5FM.js} +5 -5
- package/dist/{update-check-ACYYNKTW.js → update-check-VSCSJ7KX.js} +3 -3
- package/dist/{version-notify-SRQJCQEK.js → version-notify-B67N35A3.js} +17 -17
- package/dist/web-assets/assets/{index-DTDmEfPU.js → index-Domoz5Cg.js} +8 -8
- package/dist/web-assets/assets/index-dJdNzAPn.css +1 -0
- package/dist/web-assets/ext-theme.css +5 -0
- package/dist/web-assets/index.html +2 -2
- package/package.json +1 -1
- package/packages/extensions/notes/dist/ui/assets/{index-BbgANhFm.js → index-D0-DgYyj.js} +1 -1
- package/packages/extensions/notes/dist/ui/index.html +1 -1
- package/packages/extensions/notes/skills/notes/SKILL.md +31 -3
- package/packages/extensions/pages/dist/ui/assets/{index-Dxk-DYrf.js → index-CQjEQg1r.js} +1 -1
- package/packages/extensions/pages/dist/ui/index.html +1 -1
- package/templates/_base/.init/.local/hooks/startup-context.ts +25 -0
- package/templates/claude/src/agent.ts +8 -1
- package/dist/delivery-manager-OMCCJEVP.js +0 -32
- package/dist/echo-text-KFSUCZXL.js +0 -32
- package/dist/message-delivery-HRGFNWO7.js +0 -34
- package/dist/mind-service-2C7AINBO.js +0 -36
- package/dist/scheduler-VON2TB52.js +0 -30
- package/dist/sleep-manager-AG5SQDDI.js +0 -34
- package/dist/system-chat-54RN3K67.js +0 -34
- package/dist/web-assets/assets/index-D7udpBCx.css +0 -1
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
exec,
|
|
4
4
|
execInherit
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-3ERIL673.js";
|
|
6
6
|
import {
|
|
7
7
|
voluteSystemDir
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-H7IYFRAL.js";
|
|
9
9
|
|
|
10
10
|
// packages/daemon/src/lib/config/service-mode.ts
|
|
11
11
|
import { execFileSync } from "child_process";
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
readVoluteConfig
|
|
4
|
+
} from "./chunk-CU6OFXMM.js";
|
|
5
|
+
import {
|
|
6
|
+
logger_default
|
|
7
|
+
} from "./chunk-T2TP6ZC6.js";
|
|
8
|
+
import {
|
|
9
|
+
mindDir,
|
|
10
|
+
readAllMinds,
|
|
11
|
+
voluteHome
|
|
12
|
+
} from "./chunk-H7IYFRAL.js";
|
|
13
|
+
|
|
14
|
+
// packages/daemon/src/lib/util/avatar-image.ts
|
|
15
|
+
import { readdir, readFile, writeFile } from "fs/promises";
|
|
16
|
+
import { resolve as resolve2 } from "path";
|
|
17
|
+
|
|
18
|
+
// packages/daemon/src/lib/util/paths.ts
|
|
19
|
+
import { resolve, sep } from "path";
|
|
20
|
+
var PathTraversalError = class extends Error {
|
|
21
|
+
constructor(base, userPath) {
|
|
22
|
+
super(`Path "${userPath}" escapes base directory "${base}"`);
|
|
23
|
+
this.name = "PathTraversalError";
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
function resolveWithinBase(base, userPath) {
|
|
27
|
+
const resolvedBase = resolve(base);
|
|
28
|
+
const target = resolve(resolvedBase, userPath);
|
|
29
|
+
if (target !== resolvedBase && !target.startsWith(resolvedBase + sep)) {
|
|
30
|
+
throw new PathTraversalError(base, userPath);
|
|
31
|
+
}
|
|
32
|
+
return target;
|
|
33
|
+
}
|
|
34
|
+
function safeResolveWithinBase(base, userPath) {
|
|
35
|
+
try {
|
|
36
|
+
return resolveWithinBase(base, userPath);
|
|
37
|
+
} catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// packages/daemon/src/lib/util/avatar-image.ts
|
|
43
|
+
var alog = logger_default.child("avatar-image");
|
|
44
|
+
var AVATAR_DIM = 256;
|
|
45
|
+
async function loadSharp() {
|
|
46
|
+
try {
|
|
47
|
+
const mod = await import("sharp");
|
|
48
|
+
return mod.default ?? mod;
|
|
49
|
+
} catch (err) {
|
|
50
|
+
const code = err.code;
|
|
51
|
+
if (code === "MODULE_NOT_FOUND" || code === "ERR_MODULE_NOT_FOUND") {
|
|
52
|
+
alog.debug("sharp not available, keeping original avatars");
|
|
53
|
+
} else {
|
|
54
|
+
alog.warn("sharp import failed, keeping original avatars", logger_default.errorData(err));
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async function normalizeAvatar(buffer) {
|
|
60
|
+
const sharp = await loadSharp();
|
|
61
|
+
if (!sharp) return null;
|
|
62
|
+
try {
|
|
63
|
+
const out = await sharp(buffer, { animated: true }).resize(AVATAR_DIM, AVATAR_DIM, { fit: "cover", withoutEnlargement: true }).webp({ quality: 85 }).toBuffer();
|
|
64
|
+
return { buffer: out, ext: ".webp", mime: "image/webp" };
|
|
65
|
+
} catch (err) {
|
|
66
|
+
alog.warn("avatar normalize failed, keeping original", logger_default.errorData(err));
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async function downscaleFile(sharp, filePath) {
|
|
71
|
+
const data = await readFile(filePath);
|
|
72
|
+
const image = sharp(data, { animated: true });
|
|
73
|
+
const meta = await image.metadata();
|
|
74
|
+
if (!meta.format || (meta.width ?? 0) <= AVATAR_DIM && (meta.height ?? 0) <= AVATAR_DIM) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
const out = await image.resize(AVATAR_DIM, AVATAR_DIM, { fit: "cover" }).toFormat(meta.format).toBuffer();
|
|
78
|
+
await writeFile(filePath, out);
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
async function migrateAvatarSizes() {
|
|
82
|
+
const sharp = await loadSharp();
|
|
83
|
+
if (!sharp) return;
|
|
84
|
+
const userAvatarsDir = resolve2(voluteHome(), "avatars");
|
|
85
|
+
let userAvatars = [];
|
|
86
|
+
try {
|
|
87
|
+
userAvatars = (await readdir(userAvatarsDir)).map((f) => resolve2(userAvatarsDir, f));
|
|
88
|
+
} catch {
|
|
89
|
+
}
|
|
90
|
+
const mindAvatars = [];
|
|
91
|
+
try {
|
|
92
|
+
for (const mind of await readAllMinds()) {
|
|
93
|
+
const dir = mind.dir ?? mindDir(mind.name);
|
|
94
|
+
const avatar = readVoluteConfig(dir)?.profile?.avatar;
|
|
95
|
+
if (!avatar) continue;
|
|
96
|
+
const path = safeResolveWithinBase(resolve2(dir, "home"), avatar);
|
|
97
|
+
if (path) mindAvatars.push(path);
|
|
98
|
+
}
|
|
99
|
+
} catch (err) {
|
|
100
|
+
alog.warn("failed to enumerate mind avatars for migration", logger_default.errorData(err));
|
|
101
|
+
}
|
|
102
|
+
for (const filePath of [...userAvatars, ...mindAvatars]) {
|
|
103
|
+
try {
|
|
104
|
+
if (await downscaleFile(sharp, filePath)) {
|
|
105
|
+
alog.info(`downscaled oversized avatar ${filePath}`);
|
|
106
|
+
}
|
|
107
|
+
} catch (err) {
|
|
108
|
+
if (err.code !== "ENOENT") {
|
|
109
|
+
alog.warn(`failed to downscale avatar ${filePath}`, logger_default.errorData(err));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export {
|
|
116
|
+
safeResolveWithinBase,
|
|
117
|
+
AVATAR_DIM,
|
|
118
|
+
normalizeAvatar,
|
|
119
|
+
migrateAvatarSizes
|
|
120
|
+
};
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
} from "./chunk-T2TP6ZC6.js";
|
|
5
5
|
import {
|
|
6
6
|
getDb
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-H7IYFRAL.js";
|
|
8
8
|
import {
|
|
9
9
|
activity
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-ZV7MFISX.js";
|
|
11
11
|
|
|
12
12
|
// packages/daemon/src/lib/events/activity-events.ts
|
|
13
13
|
var subscribers = /* @__PURE__ */ new Set();
|
|
@@ -258,6 +258,8 @@ var mindNotices = sqliteTable(
|
|
|
258
258
|
{
|
|
259
259
|
id: integer("id").primaryKey({ autoIncrement: true }),
|
|
260
260
|
mind: text("mind").notNull(),
|
|
261
|
+
// Mind-level notices (not tied to a session, e.g. extension notifications)
|
|
262
|
+
// use the sentinel session = "" so any session's drain picks them up.
|
|
261
263
|
session: text("session").notNull(),
|
|
262
264
|
kind: text("kind").$type().notNull(),
|
|
263
265
|
reason: text("reason").$type().notNull(),
|
package/dist/cli.js
CHANGED
|
@@ -10,7 +10,7 @@ if (!process.env.VOLUTE_HOME) {
|
|
|
10
10
|
var command = process.argv[2];
|
|
11
11
|
var args = process.argv.slice(3);
|
|
12
12
|
if (command === "--version" || command === "-v") {
|
|
13
|
-
const { default: pkg } = await import("./package-
|
|
13
|
+
const { default: pkg } = await import("./package-5B4XDTJH.js");
|
|
14
14
|
console.log(pkg.version);
|
|
15
15
|
process.exit(0);
|
|
16
16
|
}
|
|
@@ -31,7 +31,7 @@ var ungatedCommands = /* @__PURE__ */ new Set([
|
|
|
31
31
|
void 0
|
|
32
32
|
]);
|
|
33
33
|
if (!ungatedCommands.has(command)) {
|
|
34
|
-
const { isSetupComplete } = await import("./setup-
|
|
34
|
+
const { isSetupComplete } = await import("./setup-MLRKNP7Y.js");
|
|
35
35
|
if (!isSetupComplete()) {
|
|
36
36
|
console.error("Volute is not set up. Run `volute setup` first.");
|
|
37
37
|
process.exit(1);
|
|
@@ -39,16 +39,16 @@ if (!ungatedCommands.has(command)) {
|
|
|
39
39
|
}
|
|
40
40
|
switch (command) {
|
|
41
41
|
case "setup":
|
|
42
|
-
await import("./setup-
|
|
42
|
+
await import("./setup-5GCO3CUB.js").then((m) => m.run(args));
|
|
43
43
|
break;
|
|
44
44
|
case "mind":
|
|
45
|
-
await import("./mind-
|
|
45
|
+
await import("./mind-MI7Z6KM2.js").then((m) => m.run(args));
|
|
46
46
|
break;
|
|
47
47
|
case "seed":
|
|
48
|
-
await import("./seed-cmd-
|
|
48
|
+
await import("./seed-cmd-7XPKDQUC.js").then((m) => m.run(args));
|
|
49
49
|
break;
|
|
50
50
|
case "chat":
|
|
51
|
-
await import("./chat-
|
|
51
|
+
await import("./chat-I4EDDIQC.js").then((m) => m.run(args));
|
|
52
52
|
break;
|
|
53
53
|
case "variant":
|
|
54
54
|
await import("./variant-HHDTW74J.js").then((m) => m.run(args));
|
|
@@ -66,19 +66,19 @@ switch (command) {
|
|
|
66
66
|
await import("./config-TJLYUV3U.js").then((m) => m.run(args));
|
|
67
67
|
break;
|
|
68
68
|
case "up":
|
|
69
|
-
await import("./up-
|
|
69
|
+
await import("./up-FLCDR2UB.js").then((m) => m.run(args));
|
|
70
70
|
break;
|
|
71
71
|
case "down":
|
|
72
|
-
await import("./down-
|
|
72
|
+
await import("./down-XCAZXWLB.js").then((m) => m.run(args));
|
|
73
73
|
break;
|
|
74
74
|
case "restart":
|
|
75
|
-
await import("./daemon-restart-
|
|
75
|
+
await import("./daemon-restart-OUJVINXV.js").then((m) => m.run(args));
|
|
76
76
|
break;
|
|
77
77
|
case "update":
|
|
78
|
-
await import("./update-
|
|
78
|
+
await import("./update-7TYVH5FM.js").then((m) => m.run(args));
|
|
79
79
|
break;
|
|
80
80
|
case "status":
|
|
81
|
-
await import("./status-
|
|
81
|
+
await import("./status-E5DQNCAO.js").then((m) => m.run(args));
|
|
82
82
|
break;
|
|
83
83
|
case "extension":
|
|
84
84
|
await import("./extension-SEID47SR.js").then((m) => m.run(args));
|
|
@@ -87,17 +87,17 @@ switch (command) {
|
|
|
87
87
|
await import("./systems-VNB5WKSS.js").then((m) => m.run(args));
|
|
88
88
|
break;
|
|
89
89
|
case "login":
|
|
90
|
-
await import("./login-
|
|
90
|
+
await import("./login-LM4NF4ZB.js").then((m) => m.run(args));
|
|
91
91
|
break;
|
|
92
92
|
case "logout":
|
|
93
|
-
await import("./logout-
|
|
93
|
+
await import("./logout-CTJVIZGA.js").then((m) => m.run(args));
|
|
94
94
|
break;
|
|
95
95
|
case "service":
|
|
96
|
-
await import("./service-
|
|
96
|
+
await import("./service-AQVPUANO.js").then((m) => m.run(args));
|
|
97
97
|
break;
|
|
98
98
|
case "--help":
|
|
99
99
|
case "-h":
|
|
100
|
-
case void 0:
|
|
100
|
+
case void 0: {
|
|
101
101
|
console.log(`volute \u2014 create and manage AI minds
|
|
102
102
|
|
|
103
103
|
Common:
|
|
@@ -132,12 +132,36 @@ System:
|
|
|
132
132
|
extension list/install/uninstall Manage extensions
|
|
133
133
|
login / logout CLI authentication
|
|
134
134
|
update Update volute
|
|
135
|
-
systems register/login/logout volute.systems account
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
135
|
+
systems register/login/logout volute.systems account`);
|
|
136
|
+
try {
|
|
137
|
+
const { resolveDaemonUrl, getAuthToken } = await import("./daemon-client-IYR4KCPU.js");
|
|
138
|
+
const token = getAuthToken();
|
|
139
|
+
const headers = {};
|
|
140
|
+
if (token) headers.Authorization = `Bearer ${token}`;
|
|
141
|
+
const res = await fetch(`${resolveDaemonUrl()}/api/extensions/commands`, {
|
|
142
|
+
headers,
|
|
143
|
+
signal: AbortSignal.timeout(1500)
|
|
144
|
+
});
|
|
145
|
+
if (res.ok) {
|
|
146
|
+
const extCommands = await res.json();
|
|
147
|
+
const entries = Object.entries(extCommands).filter(
|
|
148
|
+
([, ext]) => Object.keys(ext.commands).length > 0
|
|
149
|
+
);
|
|
150
|
+
if (entries.length > 0) {
|
|
151
|
+
const rows = entries.map(([id, ext]) => {
|
|
152
|
+
const subs = Object.keys(ext.commands).join("/");
|
|
153
|
+
return { left: ` ${id} ${subs}`, id };
|
|
154
|
+
});
|
|
155
|
+
const width = Math.max(...rows.map((r) => r.left.length));
|
|
156
|
+
console.log("\nExtensions:");
|
|
157
|
+
for (const r of rows) {
|
|
158
|
+
console.log(`${r.left.padEnd(width + 2)} Manage ${r.id}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
} catch {
|
|
163
|
+
}
|
|
164
|
+
console.log(`
|
|
141
165
|
Options:
|
|
142
166
|
--version, -v Show version number
|
|
143
167
|
--help, -h Show this help message
|
|
@@ -147,6 +171,7 @@ Run 'volute <command> --help' for details.
|
|
|
147
171
|
Mind-scoped commands (chat, clock, skill)
|
|
148
172
|
use --mind <name> or VOLUTE_MIND env var to identify the mind.`);
|
|
149
173
|
break;
|
|
174
|
+
}
|
|
150
175
|
default: {
|
|
151
176
|
let isExtensionCommand = false;
|
|
152
177
|
try {
|
|
@@ -264,7 +289,7 @@ Run 'volute --help' for usage.`);
|
|
|
264
289
|
}
|
|
265
290
|
}
|
|
266
291
|
if (command !== "update") {
|
|
267
|
-
import("./update-check-
|
|
292
|
+
import("./update-check-VSCSJ7KX.js").then((m) => m.checkForUpdate()).then((result) => {
|
|
268
293
|
if (result.updateAvailable) {
|
|
269
294
|
console.error(`
|
|
270
295
|
Update available: ${result.current} \u2192 ${result.latest}`);
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
deliverMessage
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-OMETFX5H.js";
|
|
5
|
+
import "./chunk-5GT7URXJ.js";
|
|
6
|
+
import "./chunk-7FT24JBQ.js";
|
|
7
7
|
import "./chunk-QLWG3C2Z.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-I2Y2YHIO.js";
|
|
9
9
|
import {
|
|
10
10
|
getAuthHeaders,
|
|
11
11
|
getWebhookUrl
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-FZMEVCWC.js";
|
|
13
13
|
import "./chunk-CU6OFXMM.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-3GYVW2X3.js";
|
|
15
|
+
import "./chunk-HVU45COX.js";
|
|
16
|
+
import "./chunk-5AHYQHNT.js";
|
|
17
|
+
import "./chunk-NF75HPNR.js";
|
|
18
|
+
import "./chunk-3ERIL673.js";
|
|
19
|
+
import "./chunk-J47TIYHA.js";
|
|
20
|
+
import "./chunk-PNV24SEP.js";
|
|
21
|
+
import "./chunk-CYI534DJ.js";
|
|
22
|
+
import "./chunk-ZMIMSIIT.js";
|
|
23
23
|
import {
|
|
24
24
|
logger_default
|
|
25
25
|
} from "./chunk-T2TP6ZC6.js";
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-H7IYFRAL.js";
|
|
27
|
+
import "./chunk-ZV7MFISX.js";
|
|
28
28
|
import "./chunk-K3NQKI34.js";
|
|
29
29
|
|
|
30
30
|
// packages/daemon/src/lib/cloud-sync.ts
|
|
@@ -29,11 +29,11 @@ import {
|
|
|
29
29
|
removeParticipant,
|
|
30
30
|
setConversationPrivate,
|
|
31
31
|
updateChannelSettings
|
|
32
|
-
} from "./chunk-
|
|
33
|
-
import "./chunk-
|
|
32
|
+
} from "./chunk-FZMEVCWC.js";
|
|
33
|
+
import "./chunk-ZMIMSIIT.js";
|
|
34
34
|
import "./chunk-T2TP6ZC6.js";
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
35
|
+
import "./chunk-H7IYFRAL.js";
|
|
36
|
+
import "./chunk-ZV7MFISX.js";
|
|
37
37
|
import "./chunk-K3NQKI34.js";
|
|
38
38
|
export {
|
|
39
39
|
addMessage,
|
|
@@ -21,7 +21,7 @@ var cmd = command({
|
|
|
21
21
|
const name = args.name;
|
|
22
22
|
let template = flags.template;
|
|
23
23
|
if (!template) {
|
|
24
|
-
const { resolveTemplate } = await import("./ai-service-
|
|
24
|
+
const { resolveTemplate } = await import("./ai-service-7PHSRDMO.js");
|
|
25
25
|
template = await resolveTemplate();
|
|
26
26
|
}
|
|
27
27
|
const skills = flags.skills === "none" ? [] : flags.skills ? flags.skills.split(",") : void 0;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
stopDaemon
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IEWZ7VD7.js";
|
|
5
5
|
import {
|
|
6
6
|
run
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-7KWANSLX.js";
|
|
8
8
|
import {
|
|
9
9
|
command
|
|
10
10
|
} from "./chunk-TXSA4Q3V.js";
|
|
@@ -15,11 +15,11 @@ import {
|
|
|
15
15
|
pollHealth,
|
|
16
16
|
readDaemonConfig,
|
|
17
17
|
restartService
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-Q2XBKQ2D.js";
|
|
19
|
+
import "./chunk-3ERIL673.js";
|
|
20
|
+
import "./chunk-PNV24SEP.js";
|
|
21
|
+
import "./chunk-H7IYFRAL.js";
|
|
22
|
+
import "./chunk-ZV7MFISX.js";
|
|
23
23
|
import "./chunk-K3NQKI34.js";
|
|
24
24
|
|
|
25
25
|
// src/commands/daemon-restart.ts
|