volute 0.47.0 → 0.48.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 +11 -11
- package/dist/{accept-YAFP5JFJ.js → accept-KYNC5X3U.js} +3 -3
- package/dist/{ai-service-CVZEYKTK.js → ai-service-643TNFPH.js} +6 -2
- package/dist/{avatar-image-7S3WA77A.js → avatar-image-Y45R7LW5.js} +3 -2
- package/dist/{backup-IIAFOW2L.js → backup-UDH4GMSW.js} +11 -11
- package/dist/{bridge-TIZGSXOD.js → bridge-3FNSWLNQ.js} +3 -3
- package/dist/{channels-ITE4YC57.js → channels-SGQZHNQJ.js} +3 -3
- package/dist/{chat-AJLJCQ3M.js → chat-X43VYHH2.js} +9 -9
- package/dist/chunk-4FCL4DVZ.js +48 -0
- package/dist/{chunk-SKNXMUIU.js → chunk-5KXCM5AW.js} +17 -1
- package/dist/{chunk-RBNMDAKB.js → chunk-BCG45AQB.js} +15 -1
- package/dist/chunk-DW4TRDOZ.js +29 -0
- package/dist/{chunk-CBOIHNMR.js → chunk-FJ2MZ5PH.js} +39 -3
- package/dist/{chunk-M6TTZRGH.js → chunk-HNGFKPNS.js} +20 -4
- package/dist/{chunk-IWJSNMSY.js → chunk-HUNDXZBZ.js} +2 -2
- package/dist/chunk-IYCV34IU.js +158 -0
- package/dist/{chunk-5IERLDUS.js → chunk-MJRXFUMS.js} +25 -5
- package/dist/{chunk-JCMGDCGX.js → chunk-MOERAQXH.js} +2 -0
- package/dist/{chunk-XHN6XBWV.js → chunk-OQJMTHEH.js} +1 -1
- package/dist/{chunk-BGYHLR54.js → chunk-PJVPDY2Z.js} +1 -1
- package/dist/{chunk-5NN2VHJV.js → chunk-Q7HOAVFR.js} +1 -1
- package/dist/{chunk-KDLYIECM.js → chunk-R772ET2M.js} +18 -4
- package/dist/{mind-list-KEGRGQEQ.js → chunk-SHKM5RGD.js} +19 -6
- package/dist/{chunk-4I72V3E5.js → chunk-T4VS7UDW.js} +11 -11
- package/dist/{chunk-K23P5Q5N.js → chunk-USD45JKR.js} +27 -5
- package/dist/{chunk-F55GRIEK.js → chunk-VB2QXUJQ.js} +176 -201
- package/dist/{chunk-M3XDVS5Q.js → chunk-VZRA5TYO.js} +1 -1
- package/dist/{chunk-JSVHH32K.js → chunk-WARH6GIV.js} +10 -10
- package/dist/{chunk-PFZBNKUH.js → chunk-WCFSBH33.js} +0 -1
- package/dist/{chunk-VMCZBXF2.js → chunk-WQ46E33M.js} +8 -32
- package/dist/{chunk-RUFLGTOT.js → chunk-XVBSFLM7.js} +1 -1
- package/dist/{chunk-LWDTP6DH.js → chunk-YNBXEQAP.js} +31 -1
- package/dist/cli.js +33 -25
- package/dist/{clock-E6N5Y3YW.js → clock-CNRF6F7T.js} +3 -3
- package/dist/{cloud-sync-LQTVDTQ3.js → cloud-sync-WHKCB4CD.js} +14 -12
- package/dist/{config-TJLYUV3U.js → config-RPSLA2HX.js} +3 -3
- package/dist/{create-PQQXKTJK.js → create-GJKHABJB.js} +16 -5
- package/dist/{create-A7PDHIIL.js → create-VIQVP3QB.js} +3 -3
- package/dist/{daemon-client-IYR4KCPU.js → daemon-client-ZFY5MOAL.js} +5 -3
- package/dist/{daemon-restart-5F3YTLZK.js → daemon-restart-7KUHVZIN.js} +4 -4
- package/dist/daemon.js +668 -401
- package/dist/{db-LZTLA7XC.js → db-IPXRJUI7.js} +1 -1
- package/dist/{delete-HPLC7ETU.js → delete-ESEP7NGQ.js} +1 -1
- package/dist/{delivery-manager-TN5KK2AP.js → delivery-manager-HZTT5SJR.js} +14 -12
- package/dist/{down-ZI4S6265.js → down-G6IADJXV.js} +2 -2
- package/dist/{echo-text-SEQCLGAT.js → echo-text-H3SH337Q.js} +16 -14
- package/dist/env-6TGPO5WG.js +18 -0
- package/dist/{env-HRL2PWAT.js → env-C7Z55QCJ.js} +7 -7
- package/dist/{export-4GVGNW54.js → export-C2K3NIRD.js} +1 -1
- package/dist/{extension-QBY4C44L.js → extension-J4ZQ2GHV.js} +3 -3
- package/dist/{extensions-PIMIQ7J3.js → extensions-GEKF47A4.js} +14 -12
- package/dist/{files-FEFZKMNM.js → files-LXQSQOFG.js} +3 -3
- package/dist/{import-7MO3YTRE.js → import-SX3ZXHB4.js} +4 -4
- package/dist/{join-ZJV7W6MO.js → join-34TR2GXQ.js} +1 -1
- package/dist/{list-LQO2DCIK.js → list-PMUXZNAM.js} +3 -3
- package/dist/{login-6TLMI2TQ.js → login-ARRZ4ORJ.js} +3 -3
- package/dist/{login-OF4WXDAN.js → login-CL4IT2ED.js} +12 -3
- package/dist/{logout-ERE2BGA3.js → logout-HZYJCYCA.js} +3 -3
- package/dist/{logout-BK53HXNY.js → logout-YZRMZ3O2.js} +3 -3
- package/dist/{message-delivery-ZE3YGJDD.js → message-delivery-GPQ5SE5N.js} +14 -12
- package/dist/{mind-POOHFZHP.js → mind-46AOK373.js} +23 -19
- package/dist/mind-contacts-GV7XYL5D.js +64 -0
- package/dist/{mind-history-47DN6ILW.js → mind-history-TTGA5BHZ.js} +7 -7
- package/dist/mind-list-OTHV4ZO4.js +13 -0
- package/dist/{mind-profile-PEQYASQX.js → mind-profile-LUG353ZT.js} +1 -1
- package/dist/{mind-service-JFY7UG5E.js → mind-service-2ARGJNKP.js} +16 -12
- package/dist/{mind-sleep-IN3WPA76.js → mind-sleep-DV7KP255.js} +5 -5
- package/dist/{mind-status-SMUWJKGV.js → mind-status-BJNPGXKC.js} +8 -3
- package/dist/{mind-wake-R54BPESY.js → mind-wake-LVTZ55EZ.js} +3 -3
- package/dist/notices-2KU5NTRY.js +25 -0
- package/dist/{package-WPEE2HVJ.js → package-RTN2PS7O.js} +4 -2
- package/dist/{read-PWAJOQIQ.js → read-YSWUXYL7.js} +3 -3
- package/dist/{register-7SZJFHU6.js → register-42VBJKTP.js} +3 -3
- package/dist/{reject-6VH7N2A4.js → reject-SXGCYN4A.js} +3 -3
- package/dist/{restart-H5WJDMA7.js → restart-YYEGZJDD.js} +7 -7
- package/dist/{sandbox-G4X4K3UN.js → sandbox-5VQ454XP.js} +2 -2
- package/dist/{scheduler-HQSDYJFY.js → scheduler-I7JZCT47.js} +14 -12
- package/dist/{seed-VANPU43L.js → seed-F2HXZQU4.js} +1 -1
- package/dist/{seed-check-VLTVILOV.js → seed-check-TYD7RRZY.js} +1 -1
- package/dist/{seed-cmd-SYVDZKM4.js → seed-cmd-MLCTGSX5.js} +3 -3
- package/dist/{seed-create-3FGZPS6C.js → seed-create-KQ7OILWB.js} +6 -4
- package/dist/seed-readiness-RBPGOLSZ.js +18 -0
- package/dist/{seed-sprout-H7QLFPFM.js → seed-sprout-HVYCFJLA.js} +29 -30
- package/dist/{send-HYDFGC6G.js → send-TD2X5U3K.js} +7 -7
- package/dist/{service-SYJ5G6LP.js → service-CVZMQYK6.js} +1 -1
- package/dist/{service-install-FQ43Z4DF.js → service-install-VCRMFWX5.js} +2 -2
- package/dist/{setup-KFYVWTXG.js → setup-5ECWTYKG.js} +5 -1
- package/dist/{setup-QJHGMGSN.js → setup-AE4CVUC4.js} +4 -4
- package/dist/{skill-GUKG2YVH.js → skill-UUM4JZRF.js} +7 -7
- package/dist/skills/dreaming/SKILL.md +5 -1
- package/dist/skills/dreaming/scripts/dream.ts +5 -1
- package/dist/skills/orientation/SKILL.md +8 -7
- package/dist/skills/tending/SKILL.md +51 -2
- package/dist/skills/volute-mind/SKILL.md +2 -0
- package/dist/{skills-L2CMTW7A.js → skills-B3SVDCEB.js} +2 -2
- package/dist/{sleep-manager-3NA7ZJP3.js → sleep-manager-Z27R3WTW.js} +14 -12
- package/dist/{spirit-WXN4IDBF.js → spirit-WXS3HCLN.js} +7 -5
- package/dist/{split-WBMZXBHF.js → split-SKZ4Y2D6.js} +1 -1
- package/dist/{sprout-LTL5P36T.js → sprout-KQ43BWZJ.js} +1 -1
- package/dist/{src-OJHARHTF.js → src-WLJE73NP.js} +14 -5
- package/dist/{start-X46I3GXB.js → start-O6UKK7BG.js} +7 -7
- package/dist/{status-V4RJMHJ4.js → status-F4PGREUU.js} +6 -4
- package/dist/{stop-HJQV4YSM.js → stop-UBX6X5RA.js} +7 -7
- package/dist/{system-chat-N2F7HVY3.js → system-chat-63ABFF6V.js} +14 -12
- package/dist/{systems-B5YJKMW4.js → systems-JJNGQHAO.js} +6 -6
- package/dist/{turn-tracker-JZRZDFWV.js → turn-tracker-KLPV3PAU.js} +4 -4
- package/dist/{up-J2PBPOZL.js → up-RVGDE6CQ.js} +5 -3
- package/dist/{update-ACV4SAY3.js → update-OXQEGGXD.js} +1 -1
- package/dist/{upgrade-NWAZ7MLD.js → upgrade-K5FIQPQD.js} +1 -1
- package/dist/{version-notify-XRGTEEDK.js → version-notify-73YURTFR.js} +17 -15
- package/dist/web-assets/assets/index-WdZ60R6c.css +1 -0
- package/dist/web-assets/assets/index-taX6Ezfa.js +92 -0
- package/dist/web-assets/index.html +2 -2
- package/package.json +4 -2
- package/packages/extensions/pages/dist/ui/assets/index-BuXnE-rb.css +1 -0
- package/packages/extensions/pages/dist/ui/assets/index-DtzftuPA.js +2 -0
- package/packages/extensions/pages/dist/ui/index.html +2 -2
- package/templates/_base/src/lib/startup.ts +16 -1
- package/templates/claude/src/agent.ts +9 -2
- package/templates/claude/src/server.ts +4 -2
- package/templates/pi/src/agent.ts +7 -10
- package/templates/pi/src/lib/dispatch.ts +65 -0
- package/dist/volute-config-A52FHWKM.js +0 -14
- package/dist/web-assets/assets/index-DtctoDXY.css +0 -1
- package/dist/web-assets/assets/index-Wpyb2CML.js +0 -86
- package/packages/extensions/pages/dist/ui/assets/index-BcY6lnq4.css +0 -1
- package/packages/extensions/pages/dist/ui/assets/index-CQjEQg1r.js +0 -2
- /package/dist/{chunk-IYG4FBMP.js → chunk-IJPMIEVE.js} +0 -0
|
@@ -3,20 +3,20 @@ import {
|
|
|
3
3
|
compactDateTime,
|
|
4
4
|
isCompact
|
|
5
5
|
} from "./chunk-5T5YMX6S.js";
|
|
6
|
+
import {
|
|
7
|
+
getClient,
|
|
8
|
+
urlOf
|
|
9
|
+
} from "./chunk-LOPXTW6H.js";
|
|
6
10
|
import {
|
|
7
11
|
resolveMindName
|
|
8
12
|
} from "./chunk-BTY4WNFE.js";
|
|
13
|
+
import {
|
|
14
|
+
daemonFetch
|
|
15
|
+
} from "./chunk-BCG45AQB.js";
|
|
9
16
|
import {
|
|
10
17
|
command,
|
|
11
18
|
subcommands
|
|
12
19
|
} from "./chunk-TXSA4Q3V.js";
|
|
13
|
-
import {
|
|
14
|
-
daemonFetch
|
|
15
|
-
} from "./chunk-RBNMDAKB.js";
|
|
16
|
-
import {
|
|
17
|
-
getClient,
|
|
18
|
-
urlOf
|
|
19
|
-
} from "./chunk-LOPXTW6H.js";
|
|
20
20
|
|
|
21
21
|
// packages/cli/src/commands/clock.ts
|
|
22
22
|
import { CronExpressionParser } from "cron-parser";
|
|
@@ -114,7 +114,7 @@ var listSchedulesCmd = command({
|
|
|
114
114
|
console.log("No schedules configured.");
|
|
115
115
|
return;
|
|
116
116
|
}
|
|
117
|
-
const actionLabel = (s) => s.script ? `[script] ${s.script}` : s.message ?? "";
|
|
117
|
+
const actionLabel = (s) => s.script ? `[script] ${s.script}` : s.messages?.length ? `[rotating x${s.messages.length}] ${s.messages[0]}` : s.message ?? "";
|
|
118
118
|
if (isCompact()) {
|
|
119
119
|
for (const s of schedules) {
|
|
120
120
|
const sched = s.cron ?? (s.fireAt ? `at ${s.fireAt}` : "");
|
|
@@ -277,11 +277,11 @@ var cmd = subcommands({
|
|
|
277
277
|
},
|
|
278
278
|
sleep: {
|
|
279
279
|
description: "Put a mind to sleep",
|
|
280
|
-
run: (args) => import("./mind-sleep-
|
|
280
|
+
run: (args) => import("./mind-sleep-DV7KP255.js").then((m) => m.run(args))
|
|
281
281
|
},
|
|
282
282
|
wake: {
|
|
283
283
|
description: "Wake a sleeping mind",
|
|
284
|
-
run: (args) => import("./mind-wake-
|
|
284
|
+
run: (args) => import("./mind-wake-LVTZ55EZ.js").then((m) => m.run(args))
|
|
285
285
|
}
|
|
286
286
|
},
|
|
287
287
|
footer: "Use --mind <name> or VOLUTE_MIND to identify the mind."
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
safeResolveWithinBase
|
|
4
|
+
} from "./chunk-DW4TRDOZ.js";
|
|
2
5
|
import {
|
|
3
6
|
readVoluteConfig
|
|
4
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-WCFSBH33.js";
|
|
5
8
|
import {
|
|
6
9
|
logger_default
|
|
7
10
|
} from "./chunk-T2TP6ZC6.js";
|
|
@@ -13,33 +16,7 @@ import {
|
|
|
13
16
|
|
|
14
17
|
// packages/daemon/src/lib/util/avatar-image.ts
|
|
15
18
|
import { readdir, readFile, writeFile } from "fs/promises";
|
|
16
|
-
import { extname, resolve
|
|
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
|
|
19
|
+
import { extname, resolve } from "path";
|
|
43
20
|
var alog = logger_default.child("avatar-image");
|
|
44
21
|
var AVATAR_DIM = 256;
|
|
45
22
|
var AVATAR_CONTEXT_DIM = 128;
|
|
@@ -96,10 +73,10 @@ async function downscaleFile(sharp, filePath) {
|
|
|
96
73
|
async function migrateAvatarSizes() {
|
|
97
74
|
const sharp = await loadSharp();
|
|
98
75
|
if (!sharp) return;
|
|
99
|
-
const userAvatarsDir =
|
|
76
|
+
const userAvatarsDir = resolve(voluteHome(), "avatars");
|
|
100
77
|
let userAvatars = [];
|
|
101
78
|
try {
|
|
102
|
-
userAvatars = (await readdir(userAvatarsDir)).map((f) =>
|
|
79
|
+
userAvatars = (await readdir(userAvatarsDir)).map((f) => resolve(userAvatarsDir, f));
|
|
103
80
|
} catch {
|
|
104
81
|
}
|
|
105
82
|
const mindAvatars = [];
|
|
@@ -108,7 +85,7 @@ async function migrateAvatarSizes() {
|
|
|
108
85
|
const dir = mind.dir ?? mindDir(mind.name);
|
|
109
86
|
const avatar = readVoluteConfig(dir)?.profile?.avatar;
|
|
110
87
|
if (!avatar) continue;
|
|
111
|
-
const path = safeResolveWithinBase(
|
|
88
|
+
const path = safeResolveWithinBase(resolve(dir, "home"), avatar);
|
|
112
89
|
if (path) mindAvatars.push(path);
|
|
113
90
|
}
|
|
114
91
|
} catch (err) {
|
|
@@ -154,7 +131,6 @@ async function renderAvatarBlock(filePath, label) {
|
|
|
154
131
|
}
|
|
155
132
|
|
|
156
133
|
export {
|
|
157
|
-
safeResolveWithinBase,
|
|
158
134
|
AVATAR_DIM,
|
|
159
135
|
AVATAR_CONTEXT_DIM,
|
|
160
136
|
MAX_AVATAR_BLOCK_BYTES,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
readGlobalConfig,
|
|
4
4
|
writeGlobalConfig
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-5KXCM5AW.js";
|
|
6
6
|
import {
|
|
7
7
|
logger_default
|
|
8
8
|
} from "./chunk-T2TP6ZC6.js";
|
|
@@ -109,6 +109,34 @@ function templateForProvider(provider) {
|
|
|
109
109
|
if (provider === "openai-codex") return "codex";
|
|
110
110
|
return "pi";
|
|
111
111
|
}
|
|
112
|
+
var PROVIDER_ENV_VAR = {
|
|
113
|
+
anthropic: "ANTHROPIC_API_KEY",
|
|
114
|
+
"openai-codex": "OPENAI_API_KEY",
|
|
115
|
+
openrouter: "OPENROUTER_API_KEY",
|
|
116
|
+
openai: "OPENAI_API_KEY",
|
|
117
|
+
google: "GEMINI_API_KEY",
|
|
118
|
+
groq: "GROQ_API_KEY",
|
|
119
|
+
cerebras: "CEREBRAS_API_KEY",
|
|
120
|
+
xai: "XAI_API_KEY",
|
|
121
|
+
mistral: "MISTRAL_API_KEY",
|
|
122
|
+
zai: "ZAI_API_KEY"
|
|
123
|
+
};
|
|
124
|
+
function providerForMindTemplate(template, model) {
|
|
125
|
+
if (!template || template === "claude") return "anthropic";
|
|
126
|
+
if (template === "codex") return "openai-codex";
|
|
127
|
+
if (model?.includes(":")) return model.split(":")[0];
|
|
128
|
+
return void 0;
|
|
129
|
+
}
|
|
130
|
+
async function missingCredentialWarning(template, model, mindName) {
|
|
131
|
+
const provider = providerForMindTemplate(template, model);
|
|
132
|
+
if (!provider) return null;
|
|
133
|
+
const envVar = PROVIDER_ENV_VAR[provider] ?? `${provider.toUpperCase().replace(/-/g, "_")}_API_KEY`;
|
|
134
|
+
if (await resolveApiKey(provider)) return null;
|
|
135
|
+
if (provider === "openai-codex" && process.env.OPENAI_API_KEY) return null;
|
|
136
|
+
const { loadMergedEnv } = await import("./env-6TGPO5WG.js");
|
|
137
|
+
if (loadMergedEnv(mindName)[envVar]) return null;
|
|
138
|
+
return `No ${provider} credentials are configured, so ${mindName} will start but stay silent until a key is available. Set one with \`volute env set ${envVar} <key> --mind ${mindName}\`, or configure the ${provider} provider in the web dashboard (Settings \u2192 Providers).`;
|
|
139
|
+
}
|
|
112
140
|
async function resolveTemplate(modelId) {
|
|
113
141
|
if (!modelId) {
|
|
114
142
|
const enabled = getEnabledModels();
|
|
@@ -379,6 +407,8 @@ export {
|
|
|
379
407
|
getUtilityModel,
|
|
380
408
|
setUtilityModel,
|
|
381
409
|
aiCompleteUtility,
|
|
410
|
+
providerForMindTemplate,
|
|
411
|
+
missingCredentialWarning,
|
|
382
412
|
resolveTemplate,
|
|
383
413
|
getEnabledModels,
|
|
384
414
|
setEnabledModels,
|
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-RTN2PS7O.js");
|
|
14
14
|
console.log(pkg.version);
|
|
15
15
|
process.exit(0);
|
|
16
16
|
}
|
|
@@ -33,72 +33,80 @@ var ungatedCommands = /* @__PURE__ */ new Set([
|
|
|
33
33
|
void 0
|
|
34
34
|
]);
|
|
35
35
|
if (!ungatedCommands.has(command)) {
|
|
36
|
-
const {
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
const { setupStatus, setupUrl } = await import("./setup-5ECWTYKG.js");
|
|
37
|
+
const status = setupStatus();
|
|
38
|
+
if (status !== "complete") {
|
|
39
|
+
if (status === "in-progress") {
|
|
40
|
+
console.error("Volute setup isn't finished yet.");
|
|
41
|
+
console.error(`Open ${setupUrl()} in your browser to complete it.`);
|
|
42
|
+
console.error("(If the daemon isn't running, start it with `volute up` first.)");
|
|
43
|
+
} else {
|
|
44
|
+
console.error("Volute is not set up. Run `volute setup` to get started.");
|
|
45
|
+
console.error("It starts the daemon and opens a browser wizard to finish configuration.");
|
|
46
|
+
}
|
|
39
47
|
process.exit(1);
|
|
40
48
|
}
|
|
41
49
|
}
|
|
42
50
|
switch (command) {
|
|
43
51
|
case "setup":
|
|
44
|
-
await import("./setup-
|
|
52
|
+
await import("./setup-AE4CVUC4.js").then((m) => m.run(args));
|
|
45
53
|
break;
|
|
46
54
|
case "mind":
|
|
47
|
-
await import("./mind-
|
|
55
|
+
await import("./mind-46AOK373.js").then((m) => m.run(args));
|
|
48
56
|
break;
|
|
49
57
|
case "seed":
|
|
50
|
-
await import("./seed-cmd-
|
|
58
|
+
await import("./seed-cmd-MLCTGSX5.js").then((m) => m.run(args));
|
|
51
59
|
break;
|
|
52
60
|
case "chat":
|
|
53
|
-
await import("./chat-
|
|
61
|
+
await import("./chat-X43VYHH2.js").then((m) => m.run(args));
|
|
54
62
|
break;
|
|
55
63
|
case "variant":
|
|
56
64
|
await import("./variant-HHDTW74J.js").then((m) => m.run(args));
|
|
57
65
|
break;
|
|
58
66
|
case "clock":
|
|
59
|
-
await import("./clock-
|
|
67
|
+
await import("./clock-CNRF6F7T.js").then((m) => m.run(args));
|
|
60
68
|
break;
|
|
61
69
|
case "skill":
|
|
62
|
-
await import("./skill-
|
|
70
|
+
await import("./skill-UUM4JZRF.js").then((m) => m.run(args));
|
|
63
71
|
break;
|
|
64
72
|
case "env":
|
|
65
|
-
await import("./env-
|
|
73
|
+
await import("./env-C7Z55QCJ.js").then((m) => m.run(args));
|
|
66
74
|
break;
|
|
67
75
|
case "config":
|
|
68
|
-
await import("./config-
|
|
76
|
+
await import("./config-RPSLA2HX.js").then((m) => m.run(args));
|
|
69
77
|
break;
|
|
70
78
|
case "up":
|
|
71
|
-
await import("./up-
|
|
79
|
+
await import("./up-RVGDE6CQ.js").then((m) => m.run(args));
|
|
72
80
|
break;
|
|
73
81
|
case "backup":
|
|
74
|
-
await import("./backup-
|
|
82
|
+
await import("./backup-UDH4GMSW.js").then((m) => m.run(args));
|
|
75
83
|
break;
|
|
76
84
|
case "down":
|
|
77
|
-
await import("./down-
|
|
85
|
+
await import("./down-G6IADJXV.js").then((m) => m.run(args));
|
|
78
86
|
break;
|
|
79
87
|
case "restart":
|
|
80
|
-
await import("./daemon-restart-
|
|
88
|
+
await import("./daemon-restart-7KUHVZIN.js").then((m) => m.run(args));
|
|
81
89
|
break;
|
|
82
90
|
case "update":
|
|
83
|
-
await import("./update-
|
|
91
|
+
await import("./update-OXQEGGXD.js").then((m) => m.run(args));
|
|
84
92
|
break;
|
|
85
93
|
case "status":
|
|
86
|
-
await import("./status-
|
|
94
|
+
await import("./status-F4PGREUU.js").then((m) => m.run(args));
|
|
87
95
|
break;
|
|
88
96
|
case "extension":
|
|
89
|
-
await import("./extension-
|
|
97
|
+
await import("./extension-J4ZQ2GHV.js").then((m) => m.run(args));
|
|
90
98
|
break;
|
|
91
99
|
case "systems":
|
|
92
|
-
await import("./systems-
|
|
100
|
+
await import("./systems-JJNGQHAO.js").then((m) => m.run(args));
|
|
93
101
|
break;
|
|
94
102
|
case "login":
|
|
95
|
-
await import("./login-
|
|
103
|
+
await import("./login-CL4IT2ED.js").then((m) => m.run(args));
|
|
96
104
|
break;
|
|
97
105
|
case "logout":
|
|
98
|
-
await import("./logout-
|
|
106
|
+
await import("./logout-HZYJCYCA.js").then((m) => m.run(args));
|
|
99
107
|
break;
|
|
100
108
|
case "service":
|
|
101
|
-
await import("./service-
|
|
109
|
+
await import("./service-CVZMQYK6.js").then((m) => m.run(args));
|
|
102
110
|
break;
|
|
103
111
|
case "--help":
|
|
104
112
|
case "-h":
|
|
@@ -140,7 +148,7 @@ System:
|
|
|
140
148
|
update Update volute
|
|
141
149
|
systems register/login/logout volute.systems account`);
|
|
142
150
|
try {
|
|
143
|
-
const { resolveDaemonUrl, getAuthToken } = await import("./daemon-client-
|
|
151
|
+
const { resolveDaemonUrl, getAuthToken } = await import("./daemon-client-ZFY5MOAL.js");
|
|
144
152
|
const token = getAuthToken();
|
|
145
153
|
const headers = {};
|
|
146
154
|
if (token) headers.Authorization = `Bearer ${token}`;
|
|
@@ -181,7 +189,7 @@ use --mind <name> or VOLUTE_MIND env var to identify the mind.`);
|
|
|
181
189
|
default: {
|
|
182
190
|
let isExtensionCommand = false;
|
|
183
191
|
try {
|
|
184
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
192
|
+
const { daemonFetch } = await import("./daemon-client-ZFY5MOAL.js");
|
|
185
193
|
const res = await daemonFetch("/api/extensions/commands");
|
|
186
194
|
if (res.ok) {
|
|
187
195
|
const extCommands = await res.json();
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
import {
|
|
3
3
|
parseDuration,
|
|
4
4
|
run
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-WARH6GIV.js";
|
|
6
6
|
import "./chunk-5T5YMX6S.js";
|
|
7
|
+
import "./chunk-LOPXTW6H.js";
|
|
7
8
|
import "./chunk-BTY4WNFE.js";
|
|
9
|
+
import "./chunk-BCG45AQB.js";
|
|
8
10
|
import "./chunk-TXSA4Q3V.js";
|
|
9
11
|
import "./chunk-O7IGP7ZW.js";
|
|
10
|
-
import "./chunk-RBNMDAKB.js";
|
|
11
|
-
import "./chunk-LOPXTW6H.js";
|
|
12
12
|
import "./chunk-K3NQKI34.js";
|
|
13
13
|
export {
|
|
14
14
|
parseDuration,
|
|
@@ -1,26 +1,28 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
deliverMessage
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-M6TTZRGH.js";
|
|
4
|
+
} from "./chunk-VB2QXUJQ.js";
|
|
5
|
+
import "./chunk-HNGFKPNS.js";
|
|
7
6
|
import "./chunk-RRZ4RQQU.js";
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-USD45JKR.js";
|
|
8
|
+
import "./chunk-MOERAQXH.js";
|
|
9
|
+
import "./chunk-HUNDXZBZ.js";
|
|
10
|
+
import "./chunk-ODDGGLM6.js";
|
|
11
11
|
import {
|
|
12
12
|
getAuthHeaders,
|
|
13
13
|
getWebhookUrl
|
|
14
14
|
} from "./chunk-HPGN6XRT.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-VZRA5TYO.js";
|
|
16
|
+
import "./chunk-IYCV34IU.js";
|
|
16
17
|
import "./chunk-MTRMQFCQ.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-WQ46E33M.js";
|
|
19
|
+
import "./chunk-DW4TRDOZ.js";
|
|
20
|
+
import "./chunk-WCFSBH33.js";
|
|
19
21
|
import "./chunk-EIQDZC43.js";
|
|
20
22
|
import "./chunk-DGGZVZTM.js";
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-IJPMIEVE.js";
|
|
24
|
+
import "./chunk-YNBXEQAP.js";
|
|
25
|
+
import "./chunk-5KXCM5AW.js";
|
|
24
26
|
import "./chunk-LTLFOSA4.js";
|
|
25
27
|
import {
|
|
26
28
|
logger_default
|
|
@@ -7,7 +7,7 @@ import "./chunk-K3NQKI34.js";
|
|
|
7
7
|
|
|
8
8
|
// packages/cli/src/commands/config.ts
|
|
9
9
|
async function listModels() {
|
|
10
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
10
|
+
const { daemonFetch } = await import("./daemon-client-ZFY5MOAL.js");
|
|
11
11
|
const res = await daemonFetch("/api/config/models");
|
|
12
12
|
if (!res.ok) {
|
|
13
13
|
console.error(`Failed to fetch models (HTTP ${res.status})`);
|
|
@@ -24,7 +24,7 @@ async function listModels() {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
async function listProviders() {
|
|
27
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
27
|
+
const { daemonFetch } = await import("./daemon-client-ZFY5MOAL.js");
|
|
28
28
|
const res = await daemonFetch("/api/config/providers");
|
|
29
29
|
if (!res.ok) {
|
|
30
30
|
console.error(`Failed to fetch providers (HTTP ${res.status})`);
|
|
@@ -41,7 +41,7 @@ async function listProviders() {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
async function showStatus() {
|
|
44
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
44
|
+
const { daemonFetch } = await import("./daemon-client-ZFY5MOAL.js");
|
|
45
45
|
const res = await daemonFetch("/api/config/status");
|
|
46
46
|
if (!res.ok) {
|
|
47
47
|
console.error(`Failed to fetch config (HTTP ${res.status})`);
|
|
@@ -8,7 +8,7 @@ import "./chunk-K3NQKI34.js";
|
|
|
8
8
|
// packages/cli/src/commands/create.ts
|
|
9
9
|
var cmd = command({
|
|
10
10
|
name: "volute mind create",
|
|
11
|
-
description: "Create a new mind",
|
|
11
|
+
description: "Create a new mind (see 'volute seed create' for the recommended path)",
|
|
12
12
|
args: [{ name: "name", required: true, description: "Name for the new mind" }],
|
|
13
13
|
flags: {
|
|
14
14
|
template: { type: "string", description: "Template to use (claude, pi, codex)" },
|
|
@@ -21,11 +21,11 @@ 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-643TNFPH.js");
|
|
25
25
|
template = await resolveTemplate();
|
|
26
26
|
}
|
|
27
27
|
const skills = flags.skills === "none" ? [] : flags.skills ? flags.skills.split(",") : void 0;
|
|
28
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
28
|
+
const { daemonFetch } = await import("./daemon-client-ZFY5MOAL.js");
|
|
29
29
|
const { getClient, urlOf } = await import("./api-client-LC5YRA32.js");
|
|
30
30
|
const client = getClient();
|
|
31
31
|
const res = await daemonFetch(urlOf(client.api.minds.$url()), {
|
|
@@ -38,10 +38,21 @@ var cmd = command({
|
|
|
38
38
|
console.error(data.error ?? "Failed to create mind");
|
|
39
39
|
process.exit(1);
|
|
40
40
|
}
|
|
41
|
+
const created = data.name ?? name;
|
|
41
42
|
console.log(`
|
|
42
|
-
${data.message ?? `Created mind: ${
|
|
43
|
+
${data.message ?? `Created mind: ${created} (port ${data.port})`}`);
|
|
44
|
+
if (data.warning) console.warn(`
|
|
45
|
+
\u26A0 ${data.warning}`);
|
|
46
|
+
if (data.credentialWarning) console.warn(`
|
|
47
|
+
\u26A0 ${data.credentialWarning}`);
|
|
43
48
|
console.log(`
|
|
44
|
-
|
|
49
|
+
Start it, then say hello:`);
|
|
50
|
+
console.log(` volute mind start ${created}`);
|
|
51
|
+
console.log(` volute chat send @${created} "hello"`);
|
|
52
|
+
console.log(
|
|
53
|
+
`
|
|
54
|
+
Tip: 'volute seed create' grows a mind that shapes its own identity \u2014 the recommended way to start.`
|
|
55
|
+
);
|
|
45
56
|
}
|
|
46
57
|
});
|
|
47
58
|
var run = cmd.execute;
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
import {
|
|
3
3
|
resolveMindName
|
|
4
4
|
} from "./chunk-BTY4WNFE.js";
|
|
5
|
+
import {
|
|
6
|
+
daemonFetch
|
|
7
|
+
} from "./chunk-BCG45AQB.js";
|
|
5
8
|
import {
|
|
6
9
|
command
|
|
7
10
|
} from "./chunk-TXSA4Q3V.js";
|
|
8
11
|
import "./chunk-O7IGP7ZW.js";
|
|
9
|
-
import {
|
|
10
|
-
daemonFetch
|
|
11
|
-
} from "./chunk-RBNMDAKB.js";
|
|
12
12
|
import "./chunk-K3NQKI34.js";
|
|
13
13
|
|
|
14
14
|
// packages/cli/src/commands/chat/create.ts
|
|
@@ -4,13 +4,15 @@ import {
|
|
|
4
4
|
daemonFetch,
|
|
5
5
|
getAuthToken,
|
|
6
6
|
readSessionFile,
|
|
7
|
-
resolveDaemonUrl
|
|
8
|
-
|
|
7
|
+
resolveDaemonUrl,
|
|
8
|
+
resolveWebUrl
|
|
9
|
+
} from "./chunk-BCG45AQB.js";
|
|
9
10
|
import "./chunk-K3NQKI34.js";
|
|
10
11
|
export {
|
|
11
12
|
daemonDispatcher,
|
|
12
13
|
daemonFetch,
|
|
13
14
|
getAuthToken,
|
|
14
15
|
readSessionFile,
|
|
15
|
-
resolveDaemonUrl
|
|
16
|
+
resolveDaemonUrl,
|
|
17
|
+
resolveWebUrl
|
|
16
18
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
stopDaemon
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-PJVPDY2Z.js";
|
|
5
5
|
import {
|
|
6
6
|
run
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-MJRXFUMS.js";
|
|
8
8
|
import {
|
|
9
9
|
command
|
|
10
10
|
} from "./chunk-TXSA4Q3V.js";
|
|
@@ -15,9 +15,9 @@ import {
|
|
|
15
15
|
pollHealth,
|
|
16
16
|
readDaemonConfig,
|
|
17
17
|
restartService
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-FJ2MZ5PH.js";
|
|
19
19
|
import "./chunk-DGGZVZTM.js";
|
|
20
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-5KXCM5AW.js";
|
|
21
21
|
import "./chunk-WW6C3PLV.js";
|
|
22
22
|
import "./chunk-2MJ7EOMT.js";
|
|
23
23
|
import "./chunk-K3NQKI34.js";
|