volute 0.32.0 → 0.34.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 +16 -0
- package/dist/{accept-74M7I4RZ.js → accept-TW6V4WI4.js} +4 -4
- package/dist/{activity-events-HETAODOK.js → activity-events-BN7V6KCC.js} +4 -4
- package/dist/{ai-service-ZIPCV3MX.js → ai-service-PSILB5WD.js} +5 -5
- package/dist/{api-client-YPKOZP2O.js → api-client-XUXOB7LI.js} +1 -1
- package/dist/api.d.ts +1198 -957
- package/dist/{archive-INXYFVCW.js → archive-C2VEMQOR.js} +4 -4
- package/dist/{auth-6DMGES3I.js → auth-ZFZXJZDQ.js} +5 -5
- package/dist/{bridge-BVCBTGPF.js → bridge-O753D5F4.js} +4 -4
- package/dist/{chat-XT4OBJBU.js → chat-BHYX7DJ4.js} +9 -9
- package/dist/{chunk-M7UL5S3Q.js → chunk-2IOP6PHB.js} +1 -1
- package/dist/{chunk-JJ7W6WSB.js → chunk-47XDEWWV.js} +5 -5
- package/dist/{chunk-RSX4OPZY.js → chunk-47ZPNLF4.js} +7 -7
- package/dist/{chunk-RPZZSXV3.js → chunk-4JSR7YO7.js} +20 -1
- package/dist/chunk-6LXAAQ43.js +22 -0
- package/dist/{chunk-TSXLLQZW.js → chunk-6OWJXUAR.js} +10 -1
- package/dist/{chunk-I5KY25PQ.js → chunk-6WAWMWR5.js} +1 -1
- package/dist/{chunk-LSGWR54X.js → chunk-7F2SW2KD.js} +2 -2
- package/dist/chunk-7KJOFUNN.js +22 -0
- package/dist/{spirit-N4W4UQRH.js → chunk-B2BVAIZ4.js} +21 -12
- package/dist/{chunk-LGB6JBHI.js → chunk-BDK73LK6.js} +5 -55
- package/dist/{chunk-IYDIE3HG.js → chunk-BFWHBQK4.js} +1 -1
- package/dist/{chunk-TDRYEPH4.js → chunk-BM474GX6.js} +4 -4
- package/dist/{chunk-R7E6CRVQ.js → chunk-BTWAGDV5.js} +1 -1
- package/dist/{chunk-WKF5FEFK.js → chunk-CVL5IGIR.js} +629 -174
- package/dist/{chunk-S6NFERDC.js → chunk-E5C7OWZ2.js} +20 -22
- package/dist/chunk-FYCALD4Q.js +23 -0
- package/dist/{chunk-SKLSMHXO.js → chunk-IS7WJ56Q.js} +1 -1
- package/dist/{chunk-2NGTS5UU.js → chunk-M3K5AARV.js} +1 -1
- package/dist/{chunk-ALEF47VT.js → chunk-MLOQKQNB.js} +1 -1
- package/dist/{chunk-D5G5YOPL.js → chunk-N3DNFPVA.js} +41 -5
- package/dist/{chunk-LRCG2JLP.js → chunk-N7BLAHNE.js} +5 -1
- package/dist/chunk-OYAKCAVY.js +29 -0
- package/dist/{chunk-UKVWJRKN.js → chunk-PLDWHR4D.js} +1 -1
- package/dist/{chunk-QBQ424EM.js → chunk-TAHX36HZ.js} +545 -246
- package/dist/chunk-U5BTYSAL.js +59 -0
- package/dist/{chunk-SX5TKJBZ.js → chunk-V45JXOWY.js} +2 -2
- package/dist/{chunk-2FLJ63GU.js → chunk-V6ZCNULL.js} +2 -2
- package/dist/{chunk-QZANELPX.js → chunk-XWXBJQBE.js} +3 -2
- package/dist/cli.js +32 -24
- package/dist/{clock-2UOZ6JPU.js → clock-3X4DSC2N.js} +38 -23
- package/dist/{cloud-sync-JN3NWKEM.js → cloud-sync-TG3TIX5H.js} +21 -17
- package/dist/{config-H2H4UIF7.js → config-OROA5DUA.js} +4 -4
- package/dist/connectors/discord-bridge.js +1 -1
- package/dist/connectors/slack-bridge.js +1 -1
- package/dist/connectors/telegram-bridge.js +1 -1
- package/dist/{conversations-3O5O6AS3.js → conversations-HL2JP5GI.js} +5 -5
- package/dist/{create-RNLNCORE.js → create-3SEKKI6P.js} +5 -5
- package/dist/{create-WBBYI6V7.js → create-UOSOQ2HN.js} +4 -4
- package/dist/daemon-client-WOAQXXBM.js +12 -0
- package/dist/{daemon-restart-NGFHFAUF.js → daemon-restart-5ABHNXJZ.js} +9 -8
- package/dist/daemon.js +2730 -1520
- package/dist/{db-RA45JBFG.js → db-PLEDCBHZ.js} +1 -1
- package/dist/db-RYX3SS2W.js +9 -0
- package/dist/{delete-QTGWEDBI.js → delete-KYOVWR23.js} +3 -3
- package/dist/delivery-manager-2BR5NZKF.js +32 -0
- package/dist/{delivery-router-FL45JL7N.js → delivery-router-D5ELDMS2.js} +4 -4
- package/dist/down-QVFN4UPK.js +15 -0
- package/dist/{env-RLYQBOOP.js → env-R34DT7XL.js} +10 -6
- package/dist/exec-DVLXKRIO.js +17 -0
- package/dist/{export-SUYRLI5Q.js → export-6ZXAXATG.js} +6 -6
- package/dist/extension-PM42QCID.js +97 -0
- package/dist/extensions-BBGVL5JC.js +38 -0
- package/dist/{files-EAMPO2SJ.js → files-VQV2VZQO.js} +5 -5
- package/dist/{import-DDUFE7AY.js → import-MK2I2T6F.js} +5 -5
- package/dist/isolation-62MKDZN3.js +22 -0
- package/dist/{join-I5QEE3LG.js → join-DGYHTJUH.js} +3 -3
- package/dist/lib-DYEZMGW7.js +6588 -0
- package/dist/{list-DW2VRTOZ.js → list-C644WTHV.js} +16 -8
- package/dist/{login-7CHPW2PN.js → login-IIGEQPHL.js} +4 -4
- package/dist/{login-RIJF2F4G.js → login-KZQLMAWE.js} +4 -4
- package/dist/{logout-5MLHZALK.js → logout-AGTZVRGP.js} +4 -4
- package/dist/{logout-UZJRGY4Z.js → logout-KD6GXIJJ.js} +4 -4
- package/dist/message-delivery-V3R6NXJP.js +42 -0
- package/dist/{mind-2B6M7Y25.js → mind-BI4EPBVZ.js} +25 -19
- package/dist/{mind-activity-tracker-NZZT2NTT.js → mind-activity-tracker-2ACNHA7B.js} +5 -5
- package/dist/mind-history-WOYFLQAI.js +264 -0
- package/dist/{mind-list-WUPMQDYQ.js → mind-list-6VPM7GUQ.js} +4 -4
- package/dist/mind-manager-MWW3BTS4.js +32 -0
- package/dist/mind-profile-WPG42U5Y.js +47 -0
- package/dist/mind-service-VIKZJK2M.js +38 -0
- package/dist/{mind-sleep-B7BHJLH7.js → mind-sleep-XDISJY74.js} +4 -4
- package/dist/{mind-status-L3EFFRPR.js → mind-status-7FTZWPZF.js} +4 -4
- package/dist/{mind-wake-GY3RFX7Y.js → mind-wake-KIIKEI3A.js} +4 -4
- package/dist/{package-PK6JUFL3.js → package-V2WHWVG6.js} +9 -5
- package/dist/{read-5AMJRO3D.js → read-H5C26YO7.js} +18 -8
- package/dist/read-stdin-PIRM6A2Y.js +8 -0
- package/dist/{register-V2JZZKFK.js → register-J27WP33N.js} +4 -4
- package/dist/{registry-PJ4S5PHQ.js → registry-UYV5S6QT.js} +3 -3
- package/dist/{reject-33HEZMZ4.js → reject-OEANJYIA.js} +4 -4
- package/dist/{restart-3UCMRUVC.js → restart-V5EGYBJG.js} +4 -4
- package/dist/{sandbox-JANNTX6U.js → sandbox-SI5HMBP3.js} +5 -5
- package/dist/scheduler-AGG3L2FO.js +32 -0
- package/dist/{schema-PA3M5ZKH.js → schema-ETMABTW4.js} +4 -2
- package/dist/seed-WNGI6PNW.js +11 -0
- package/dist/seed-check-PXTH7YXS.js +32 -0
- package/dist/seed-cmd-VENFTGS3.js +36 -0
- package/dist/{seed-ALUQ55FF.js → seed-create-663ALOKH.js} +8 -8
- package/dist/{sprout-L2GFOVF7.js → seed-sprout-EH3AGKAI.js} +24 -11
- package/dist/{send-3MI36LEF.js → send-7FUUUZZH.js} +66 -51
- package/dist/{setup-SZIARWI6.js → setup-GGMKENLN.js} +6 -4
- package/dist/{setup-WENLVPVP.js → setup-Z3DEVWV7.js} +13 -11
- package/dist/{skill-TUVOTW4Z.js → skill-DKNYJS4P.js} +12 -8
- package/dist/skills/imagegen/SKILL.md +11 -7
- package/dist/skills/imagegen/scripts/imagegen.ts +146 -25
- package/dist/skills/orientation/SKILL.md +9 -2
- package/dist/skills/plan-coordinator/SKILL.md +60 -0
- package/dist/skills/seed-nurture/SKILL.md +42 -0
- package/dist/skills/volute-mind/SKILL.md +11 -221
- package/dist/skills/volute-mind/references/extensions.md +37 -0
- package/dist/skills/volute-mind/references/integrations.md +48 -0
- package/dist/skills/volute-mind/references/routing.md +86 -0
- package/dist/skills/volute-mind/references/sleep.md +33 -0
- package/dist/skills/volute-mind/references/variants.md +31 -0
- package/dist/{skills-XNZK6P4K.js → skills-Q6VZ2UGD.js} +11 -6
- package/dist/sleep-manager-BJK2ROPX.js +36 -0
- package/dist/spirit-4JP4TY4C.js +23 -0
- package/dist/{split-STOROBYJ.js → split-3YPMS2CL.js} +3 -3
- package/dist/sprout-E3HJIV2Z.js +11 -0
- package/dist/{start-K2NCUUCG.js → start-W3TPKX4D.js} +4 -4
- package/dist/{status-TCUMUO6M.js → status-4OVFXFEJ.js} +7 -6
- package/dist/{stop-H26JZDXF.js → stop-GTT6YWYO.js} +4 -4
- package/dist/system-channel-DXD2JBOU.js +36 -0
- package/dist/system-chat-TYLOL7SX.js +36 -0
- package/dist/{systems-DHBKVYEY.js → systems-AYLO727G.js} +7 -7
- package/dist/{tailscale-XHQBZROW.js → tailscale-ZEUK7GKZ.js} +3 -3
- package/dist/{template-hash-A6VVKOXJ.js → template-hash-EJRTKE36.js} +1 -1
- package/dist/up-PA7F2CXE.js +18 -0
- package/dist/{update-QVPRF6GR.js → update-HG4LCUSG.js} +7 -6
- package/dist/{update-check-ZD6OOIYQ.js → update-check-X3YG4WVP.js} +4 -4
- package/dist/{upgrade-O4Q7WJM3.js → upgrade-YGNIDICG.js} +3 -3
- package/dist/{variant-7TGZHOU3.js → variant-MZUMRTQO.js} +1 -1
- package/dist/{version-notify-TCKWBZZG.js → version-notify-YCH4UVQ2.js} +23 -20
- package/dist/volute-config-WBKYJGYQ.js +10 -0
- package/dist/web-assets/assets/index-DiiwC-CZ.css +1 -0
- package/dist/web-assets/assets/index-d6y5b9Ij.js +75 -0
- package/dist/web-assets/ext-theme.css +48 -9
- package/dist/web-assets/index.html +2 -2
- package/drizzle/0005_meta_summaries.sql +15 -0
- package/drizzle/meta/0005_snapshot.json +7 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +8 -4
- package/packages/extensions/plan/dist/ui/assets/index-CJj2gZnZ.css +1 -0
- package/packages/extensions/plan/dist/ui/assets/index-FMEJmvQz.js +61 -0
- package/packages/extensions/plan/dist/ui/index.html +14 -0
- package/packages/extensions/plan/skills/plan/SKILL.md +43 -0
- package/packages/extensions/plan/skills/plan/scripts/plan-hook.sh +37 -0
- package/templates/_base/home/VOLUTE.md +12 -19
- package/templates/_base/src/lib/context-breakdown.ts +450 -0
- package/templates/_base/src/lib/format-prefix.ts +17 -0
- package/templates/_base/src/lib/hook-loader.ts +8 -2
- package/templates/_base/src/lib/router.ts +75 -33
- package/templates/_base/src/lib/routing.ts +4 -1
- package/templates/_base/src/lib/startup.ts +16 -8
- package/templates/_base/src/lib/types.ts +2 -1
- package/templates/_base/src/lib/volute-server.ts +69 -8
- package/templates/claude/.init/CLAUDE.md +4 -10
- package/templates/claude/package.json.tmpl +1 -0
- package/templates/claude/src/agent.ts +100 -32
- package/templates/claude/src/lib/hooks/reply-instructions.ts +27 -7
- package/templates/claude/src/lib/stream-consumer.ts +40 -2
- package/templates/claude/src/server.ts +1 -0
- package/templates/codex/package.json.tmpl +1 -0
- package/templates/codex/src/agent.ts +81 -8
- package/templates/codex/src/server.ts +1 -4
- package/templates/pi/package.json.tmpl +1 -0
- package/templates/pi/src/agent.ts +115 -36
- package/templates/pi/src/lib/event-handler.ts +22 -7
- package/templates/pi/src/lib/reply-instructions-extension.ts +23 -4
- package/templates/pi/src/lib/subagents.ts +20 -17
- package/templates/pi/src/server.ts +2 -5
- package/dist/chunk-K3NQKI34.js +0 -10
- package/dist/daemon-client-6QXHZ7US.js +0 -12
- package/dist/db-F34YLV7D.js +0 -9
- package/dist/delivery-manager-SDVXFD4W.js +0 -28
- package/dist/down-TB3ESMNP.js +0 -14
- package/dist/extension-FQ5D3NCC.js +0 -174
- package/dist/extensions-GDYWQXC4.js +0 -29
- package/dist/history-FO5PHBQ5.js +0 -128
- package/dist/message-delivery-2FIM7QKO.js +0 -32
- package/dist/mind-manager-BNCMGYXW.js +0 -28
- package/dist/mind-service-AV273WT4.js +0 -34
- package/dist/sleep-manager-53DZOWW7.js +0 -32
- package/dist/system-chat-NPYFYZVI.js +0 -32
- package/dist/up-6I6BHRTO.js +0 -17
- package/dist/web-assets/assets/index-Bui7U9Uu.css +0 -1
- package/dist/web-assets/assets/index-e36DIo1b.js +0 -73
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
wrapForIsolation
|
|
4
|
+
} from "./chunk-BDK73LK6.js";
|
|
5
|
+
|
|
6
|
+
// src/lib/exec.ts
|
|
7
|
+
import { execFile as execFileCb, execFileSync, spawn } from "child_process";
|
|
8
|
+
async function exec(cmd, args, options) {
|
|
9
|
+
const [wrappedCmd, wrappedArgs] = options?.mindName ? await wrapForIsolation(cmd, args, options.mindName) : [cmd, args];
|
|
10
|
+
return new Promise((resolve, reject) => {
|
|
11
|
+
execFileCb(
|
|
12
|
+
wrappedCmd,
|
|
13
|
+
wrappedArgs,
|
|
14
|
+
{ cwd: options?.cwd, env: options?.env },
|
|
15
|
+
(err, stdout, stderr) => {
|
|
16
|
+
if (err) {
|
|
17
|
+
err.stderr = stderr;
|
|
18
|
+
err.stdout = stdout;
|
|
19
|
+
reject(err);
|
|
20
|
+
} else {
|
|
21
|
+
resolve(stdout);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function gitExec(args, options) {
|
|
28
|
+
const fullArgs = process.env.VOLUTE_ISOLATION === "user" ? ["-c", "safe.directory=*", ...args] : args;
|
|
29
|
+
return exec("git", fullArgs, options);
|
|
30
|
+
}
|
|
31
|
+
function resolveVoluteBin() {
|
|
32
|
+
try {
|
|
33
|
+
return execFileSync("which", ["volute"], { encoding: "utf-8" }).trim();
|
|
34
|
+
} catch {
|
|
35
|
+
throw new Error("Could not find volute binary on PATH");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async function execInherit(cmd, args, options) {
|
|
39
|
+
const [wrappedCmd, wrappedArgs] = options?.mindName ? await wrapForIsolation(cmd, args, options.mindName) : [cmd, args];
|
|
40
|
+
return new Promise((resolve, reject) => {
|
|
41
|
+
const child = spawn(wrappedCmd, wrappedArgs, {
|
|
42
|
+
cwd: options?.cwd,
|
|
43
|
+
env: options?.env,
|
|
44
|
+
stdio: "inherit"
|
|
45
|
+
});
|
|
46
|
+
child.on("error", reject);
|
|
47
|
+
child.on("close", (code) => {
|
|
48
|
+
if (code === 0) resolve();
|
|
49
|
+
else reject(new Error(`${cmd} ${args.join(" ")} exited with code ${code}`));
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export {
|
|
55
|
+
exec,
|
|
56
|
+
gitExec,
|
|
57
|
+
resolveVoluteBin,
|
|
58
|
+
execInherit
|
|
59
|
+
};
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
} from "./chunk-YUIHSKR6.js";
|
|
5
5
|
import {
|
|
6
6
|
readGlobalConfig
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-6OWJXUAR.js";
|
|
8
8
|
import {
|
|
9
9
|
getBaseName,
|
|
10
10
|
readRegistry,
|
|
11
11
|
voluteHome,
|
|
12
12
|
voluteSystemDir,
|
|
13
13
|
voluteUserHome
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-N7BLAHNE.js";
|
|
15
15
|
|
|
16
16
|
// src/lib/sandbox.ts
|
|
17
17
|
import { resolve } from "path";
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
pollHealthDown,
|
|
6
6
|
readDaemonConfig,
|
|
7
7
|
stopService
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-7F2SW2KD.js";
|
|
9
9
|
import {
|
|
10
10
|
voluteSystemDir
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-N7BLAHNE.js";
|
|
12
12
|
|
|
13
13
|
// src/commands/down.ts
|
|
14
14
|
import { existsSync, readFileSync, unlinkSync } from "fs";
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
} from "./chunk-YUIHSKR6.js";
|
|
5
5
|
import {
|
|
6
6
|
getDb
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-N7BLAHNE.js";
|
|
8
8
|
import {
|
|
9
9
|
activity
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-4JSR7YO7.js";
|
|
11
11
|
|
|
12
12
|
// src/lib/events/activity-events.ts
|
|
13
13
|
var subscribers = /* @__PURE__ */ new Set();
|
|
@@ -37,6 +37,7 @@ async function publish(event) {
|
|
|
37
37
|
}
|
|
38
38
|
const full = { ...event, id, created_at };
|
|
39
39
|
notify(full);
|
|
40
|
+
return id;
|
|
40
41
|
}
|
|
41
42
|
function broadcast(event) {
|
|
42
43
|
const created_at = event.created_at ?? (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").slice(0, 19);
|
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-V2WHWVG6.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-GGMKENLN.js");
|
|
35
35
|
if (!isSetupComplete()) {
|
|
36
36
|
console.error("Volute is not set up. Run `volute setup` first.");
|
|
37
37
|
process.exit(1);
|
|
@@ -39,55 +39,58 @@ if (!ungatedCommands.has(command)) {
|
|
|
39
39
|
}
|
|
40
40
|
switch (command) {
|
|
41
41
|
case "setup":
|
|
42
|
-
await import("./setup-
|
|
42
|
+
await import("./setup-Z3DEVWV7.js").then((m) => m.run(args));
|
|
43
43
|
break;
|
|
44
44
|
case "mind":
|
|
45
|
-
await import("./mind-
|
|
45
|
+
await import("./mind-BI4EPBVZ.js").then((m) => m.run(args));
|
|
46
|
+
break;
|
|
47
|
+
case "seed":
|
|
48
|
+
await import("./seed-cmd-VENFTGS3.js").then((m) => m.run(args));
|
|
46
49
|
break;
|
|
47
50
|
case "chat":
|
|
48
|
-
await import("./chat-
|
|
51
|
+
await import("./chat-BHYX7DJ4.js").then((m) => m.run(args));
|
|
49
52
|
break;
|
|
50
53
|
case "variant":
|
|
51
|
-
await import("./variant-
|
|
54
|
+
await import("./variant-MZUMRTQO.js").then((m) => m.run(args));
|
|
52
55
|
break;
|
|
53
56
|
case "clock":
|
|
54
|
-
await import("./clock-
|
|
57
|
+
await import("./clock-3X4DSC2N.js").then((m) => m.run(args));
|
|
55
58
|
break;
|
|
56
59
|
case "skill":
|
|
57
|
-
await import("./skill-
|
|
60
|
+
await import("./skill-DKNYJS4P.js").then((m) => m.run(args));
|
|
58
61
|
break;
|
|
59
62
|
case "env":
|
|
60
|
-
await import("./env-
|
|
63
|
+
await import("./env-R34DT7XL.js").then((m) => m.run(args));
|
|
61
64
|
break;
|
|
62
65
|
case "config":
|
|
63
|
-
await import("./config-
|
|
66
|
+
await import("./config-OROA5DUA.js").then((m) => m.run(args));
|
|
64
67
|
break;
|
|
65
68
|
case "up":
|
|
66
|
-
await import("./up-
|
|
69
|
+
await import("./up-PA7F2CXE.js").then((m) => m.run(args));
|
|
67
70
|
break;
|
|
68
71
|
case "down":
|
|
69
|
-
await import("./down-
|
|
72
|
+
await import("./down-QVFN4UPK.js").then((m) => m.run(args));
|
|
70
73
|
break;
|
|
71
74
|
case "restart":
|
|
72
|
-
await import("./daemon-restart-
|
|
75
|
+
await import("./daemon-restart-5ABHNXJZ.js").then((m) => m.run(args));
|
|
73
76
|
break;
|
|
74
77
|
case "update":
|
|
75
|
-
await import("./update-
|
|
78
|
+
await import("./update-HG4LCUSG.js").then((m) => m.run(args));
|
|
76
79
|
break;
|
|
77
80
|
case "status":
|
|
78
|
-
await import("./status-
|
|
81
|
+
await import("./status-4OVFXFEJ.js").then((m) => m.run(args));
|
|
79
82
|
break;
|
|
80
83
|
case "extension":
|
|
81
|
-
await import("./extension-
|
|
84
|
+
await import("./extension-PM42QCID.js").then((m) => m.run(args));
|
|
82
85
|
break;
|
|
83
86
|
case "systems":
|
|
84
|
-
await import("./systems-
|
|
87
|
+
await import("./systems-AYLO727G.js").then((m) => m.run(args));
|
|
85
88
|
break;
|
|
86
89
|
case "login":
|
|
87
|
-
await import("./login-
|
|
90
|
+
await import("./login-KZQLMAWE.js").then((m) => m.run(args));
|
|
88
91
|
break;
|
|
89
92
|
case "logout":
|
|
90
|
-
await import("./logout-
|
|
93
|
+
await import("./logout-AGTZVRGP.js").then((m) => m.run(args));
|
|
91
94
|
break;
|
|
92
95
|
case "--help":
|
|
93
96
|
case "-h":
|
|
@@ -101,15 +104,18 @@ Common:
|
|
|
101
104
|
|
|
102
105
|
Mind:
|
|
103
106
|
mind create <name> Create a new mind
|
|
104
|
-
mind seed <name> Plant a seed mind (orientation mode)
|
|
105
107
|
mind start/stop/restart [name] Control a mind
|
|
106
108
|
mind list List all minds
|
|
107
109
|
mind status [name] Check a mind's status
|
|
108
110
|
mind history [name] [--full] View mind activity history
|
|
109
|
-
mind
|
|
111
|
+
mind profile [--mind] [...] Set display name, description, avatar
|
|
110
112
|
mind split/join Create and merge experimental splits
|
|
111
113
|
mind upgrade/import/export Lifecycle operations
|
|
112
114
|
|
|
115
|
+
Seed:
|
|
116
|
+
seed create <name> Plant a new seed mind
|
|
117
|
+
seed sprout Complete orientation and become a full mind
|
|
118
|
+
|
|
113
119
|
Configuration:
|
|
114
120
|
chat Conversations, messages, files, and platform bridges
|
|
115
121
|
clock Schedules, timers, and sleep/wake cycles
|
|
@@ -141,7 +147,7 @@ use --mind <name> or VOLUTE_MIND env var to identify the mind.`);
|
|
|
141
147
|
default: {
|
|
142
148
|
let isExtensionCommand = false;
|
|
143
149
|
try {
|
|
144
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
150
|
+
const { daemonFetch } = await import("./daemon-client-WOAQXXBM.js");
|
|
145
151
|
const res = await daemonFetch("/api/extensions/commands");
|
|
146
152
|
if (res.ok) {
|
|
147
153
|
const extCommands = await res.json();
|
|
@@ -164,10 +170,12 @@ use --mind <name> or VOLUTE_MIND env var to identify the mind.`);
|
|
|
164
170
|
mind = cmdArgs[mindIdx + 1];
|
|
165
171
|
cmdArgs.splice(mindIdx, 2);
|
|
166
172
|
}
|
|
173
|
+
const { readStdin } = await import("./read-stdin-PIRM6A2Y.js");
|
|
174
|
+
const stdin = await readStdin();
|
|
167
175
|
const cmdRes = await daemonFetch(`/api/ext/${command}/commands/${subcommand}`, {
|
|
168
176
|
method: "POST",
|
|
169
177
|
headers: { "Content-Type": "application/json" },
|
|
170
|
-
body: JSON.stringify({ args: cmdArgs, mind })
|
|
178
|
+
body: JSON.stringify({ args: cmdArgs, mind, stdin })
|
|
171
179
|
});
|
|
172
180
|
if (!cmdRes.ok) {
|
|
173
181
|
const text = await cmdRes.text().catch(() => "");
|
|
@@ -195,7 +203,7 @@ Run 'volute --help' for usage.`);
|
|
|
195
203
|
}
|
|
196
204
|
}
|
|
197
205
|
if (command !== "update") {
|
|
198
|
-
import("./update-check-
|
|
206
|
+
import("./update-check-X3YG4WVP.js").then((m) => m.checkForUpdate()).then((result) => {
|
|
199
207
|
if (result.updateAvailable) {
|
|
200
208
|
console.error(`
|
|
201
209
|
Update available: ${result.current} \u2192 ${result.latest}`);
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
compactDateTime,
|
|
4
|
+
isCompact
|
|
5
|
+
} from "./chunk-FYCALD4Q.js";
|
|
2
6
|
import {
|
|
3
7
|
resolveMindName
|
|
4
8
|
} from "./chunk-NAOW2CLO.js";
|
|
@@ -11,10 +15,10 @@ import {
|
|
|
11
15
|
} from "./chunk-D424ZQGI.js";
|
|
12
16
|
import {
|
|
13
17
|
daemonFetch
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-PLDWHR4D.js";
|
|
19
|
+
import "./chunk-N7BLAHNE.js";
|
|
20
|
+
import "./chunk-4JSR7YO7.js";
|
|
21
|
+
import "./chunk-7KJOFUNN.js";
|
|
18
22
|
|
|
19
23
|
// src/commands/clock.ts
|
|
20
24
|
import { CronExpressionParser } from "cron-parser";
|
|
@@ -34,10 +38,10 @@ async function run(args) {
|
|
|
34
38
|
await removeSchedule(args.slice(1));
|
|
35
39
|
break;
|
|
36
40
|
case "sleep":
|
|
37
|
-
await import("./mind-sleep-
|
|
41
|
+
await import("./mind-sleep-XDISJY74.js").then((m) => m.run(args.slice(1)));
|
|
38
42
|
break;
|
|
39
43
|
case "wake":
|
|
40
|
-
await import("./mind-wake-
|
|
44
|
+
await import("./mind-wake-KIIKEI3A.js").then((m) => m.run(args.slice(1)));
|
|
41
45
|
break;
|
|
42
46
|
case "--help":
|
|
43
47
|
case "-h":
|
|
@@ -85,16 +89,16 @@ async function clockStatus(args) {
|
|
|
85
89
|
process.exit(1);
|
|
86
90
|
}
|
|
87
91
|
const status = await res.json();
|
|
92
|
+
const compact = isCompact();
|
|
93
|
+
const fmtTime = (s) => compact ? compactDateTime(s) : new Date(s).toLocaleString();
|
|
88
94
|
if (status.sleep?.sleeping) {
|
|
89
|
-
const since = status.sleep.sleepingSince ?
|
|
95
|
+
const since = status.sleep.sleepingSince ? fmtTime(status.sleep.sleepingSince) : "unknown";
|
|
90
96
|
console.log(`Sleep: sleeping since ${since}`);
|
|
91
97
|
if (status.sleep.scheduledWakeAt) {
|
|
92
|
-
console.log(` Wake at: ${
|
|
98
|
+
console.log(` Wake at: ${fmtTime(status.sleep.scheduledWakeAt)}`);
|
|
93
99
|
}
|
|
94
100
|
if (status.sleep.voluntaryWakeAt) {
|
|
95
|
-
console.log(
|
|
96
|
-
` Voluntary wake at: ${new Date(status.sleep.voluntaryWakeAt).toLocaleString()}`
|
|
97
|
-
);
|
|
101
|
+
console.log(` Voluntary wake at: ${fmtTime(status.sleep.voluntaryWakeAt)}`);
|
|
98
102
|
}
|
|
99
103
|
if (status.sleep.queuedMessageCount > 0) {
|
|
100
104
|
console.log(` Queued messages: ${status.sleep.queuedMessageCount}`);
|
|
@@ -108,17 +112,21 @@ async function clockStatus(args) {
|
|
|
108
112
|
);
|
|
109
113
|
}
|
|
110
114
|
if (status.upcoming.length > 0) {
|
|
111
|
-
console.log("
|
|
115
|
+
if (!compact) console.log("");
|
|
116
|
+
console.log("Upcoming (next 24h):");
|
|
112
117
|
for (const u of status.upcoming) {
|
|
113
|
-
const time =
|
|
118
|
+
const time = fmtTime(u.at);
|
|
114
119
|
const label = u.type === "timer" ? "[timer]" : "[cron]";
|
|
115
120
|
console.log(` ${u.id.padEnd(20)} ${label} ${time}`);
|
|
116
121
|
}
|
|
117
122
|
} else {
|
|
118
|
-
console.log("
|
|
123
|
+
if (!compact) console.log("");
|
|
124
|
+
console.log("No upcoming events in next 24h.");
|
|
119
125
|
}
|
|
120
|
-
|
|
126
|
+
if (!compact) {
|
|
127
|
+
console.log(`
|
|
121
128
|
${status.schedules.length} schedule(s) configured.`);
|
|
129
|
+
}
|
|
122
130
|
}
|
|
123
131
|
async function listSchedules(args) {
|
|
124
132
|
const { flags } = parseArgs(args, {
|
|
@@ -139,15 +147,22 @@ async function listSchedules(args) {
|
|
|
139
147
|
console.log("No schedules configured.");
|
|
140
148
|
return;
|
|
141
149
|
}
|
|
142
|
-
const idW = Math.max(2, ...schedules.map((s) => s.id.length));
|
|
143
|
-
const schedW = Math.max(8, ...schedules.map((s) => (s.cron ?? s.fireAt ?? "").length));
|
|
144
150
|
const actionLabel = (s) => s.script ? `[script] ${s.script}` : s.message ?? "";
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
+
if (isCompact()) {
|
|
152
|
+
for (const s of schedules) {
|
|
153
|
+
const sched = s.cron ?? (s.fireAt ? `at ${s.fireAt}` : "");
|
|
154
|
+
console.log(`${s.id} ${sched} ${actionLabel(s)}`);
|
|
155
|
+
}
|
|
156
|
+
} else {
|
|
157
|
+
const idW = Math.max(2, ...schedules.map((s) => s.id.length));
|
|
158
|
+
const schedW = Math.max(8, ...schedules.map((s) => (s.cron ?? s.fireAt ?? "").length));
|
|
159
|
+
console.log(`${"ID".padEnd(idW)} ${"SCHEDULE".padEnd(schedW)} ENABLED ACTION`);
|
|
160
|
+
for (const s of schedules) {
|
|
161
|
+
const sched = s.cron ?? (s.fireAt ? `at ${s.fireAt}` : "");
|
|
162
|
+
console.log(
|
|
163
|
+
`${s.id.padEnd(idW)} ${sched.padEnd(schedW)} ${String(s.enabled).padEnd(7)} ${actionLabel(s)}`
|
|
164
|
+
);
|
|
165
|
+
}
|
|
151
166
|
}
|
|
152
167
|
}
|
|
153
168
|
async function addSchedule(args) {
|
|
@@ -1,29 +1,33 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
deliverMessage
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-TAHX36HZ.js";
|
|
5
|
+
import "./chunk-CVL5IGIR.js";
|
|
6
|
+
import "./chunk-B2BVAIZ4.js";
|
|
7
|
+
import "./chunk-G53F3JA4.js";
|
|
8
|
+
import "./chunk-N3DNFPVA.js";
|
|
9
|
+
import "./chunk-OYAKCAVY.js";
|
|
10
|
+
import "./chunk-V45JXOWY.js";
|
|
11
|
+
import "./chunk-IS7WJ56Q.js";
|
|
12
|
+
import "./chunk-BTWAGDV5.js";
|
|
13
|
+
import "./chunk-M3K5AARV.js";
|
|
14
|
+
import "./chunk-PB65JZK2.js";
|
|
15
|
+
import "./chunk-BM474GX6.js";
|
|
7
16
|
import {
|
|
8
17
|
getAuthHeaders,
|
|
9
18
|
getWebhookUrl
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-WKF5FEFK.js";
|
|
14
|
-
import "./chunk-PB65JZK2.js";
|
|
15
|
-
import "./chunk-TDRYEPH4.js";
|
|
16
|
-
import "./chunk-QZANELPX.js";
|
|
17
|
-
import "./chunk-D5G5YOPL.js";
|
|
18
|
-
import "./chunk-IYDIE3HG.js";
|
|
19
|
+
} from "./chunk-E5C7OWZ2.js";
|
|
20
|
+
import "./chunk-XWXBJQBE.js";
|
|
21
|
+
import "./chunk-BFWHBQK4.js";
|
|
19
22
|
import {
|
|
20
23
|
logger_default
|
|
21
24
|
} from "./chunk-YUIHSKR6.js";
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-U5BTYSAL.js";
|
|
26
|
+
import "./chunk-BDK73LK6.js";
|
|
27
|
+
import "./chunk-6OWJXUAR.js";
|
|
28
|
+
import "./chunk-N7BLAHNE.js";
|
|
29
|
+
import "./chunk-4JSR7YO7.js";
|
|
30
|
+
import "./chunk-7KJOFUNN.js";
|
|
27
31
|
|
|
28
32
|
// src/lib/cloud-sync.ts
|
|
29
33
|
var slog = logger_default.child("cloud-sync");
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
parseArgs
|
|
4
4
|
} from "./chunk-D424ZQGI.js";
|
|
5
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-7KJOFUNN.js";
|
|
6
6
|
|
|
7
7
|
// src/commands/config.ts
|
|
8
8
|
async function run(args) {
|
|
@@ -10,7 +10,7 @@ async function run(args) {
|
|
|
10
10
|
const subcommand = positional[0];
|
|
11
11
|
switch (subcommand) {
|
|
12
12
|
case "models": {
|
|
13
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
13
|
+
const { daemonFetch } = await import("./daemon-client-WOAQXXBM.js");
|
|
14
14
|
const res = await daemonFetch("/api/config/models");
|
|
15
15
|
if (!res.ok) {
|
|
16
16
|
console.error(`Failed to fetch models (HTTP ${res.status})`);
|
|
@@ -28,7 +28,7 @@ async function run(args) {
|
|
|
28
28
|
break;
|
|
29
29
|
}
|
|
30
30
|
case "providers": {
|
|
31
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
31
|
+
const { daemonFetch } = await import("./daemon-client-WOAQXXBM.js");
|
|
32
32
|
const res = await daemonFetch("/api/config/providers");
|
|
33
33
|
if (!res.ok) {
|
|
34
34
|
console.error(`Failed to fetch providers (HTTP ${res.status})`);
|
|
@@ -46,7 +46,7 @@ async function run(args) {
|
|
|
46
46
|
break;
|
|
47
47
|
}
|
|
48
48
|
case "status": {
|
|
49
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
49
|
+
const { daemonFetch } = await import("./daemon-client-WOAQXXBM.js");
|
|
50
50
|
const res = await daemonFetch("/api/config/status");
|
|
51
51
|
if (!res.ok) {
|
|
52
52
|
console.error(`Failed to fetch config (HTTP ${res.status})`);
|
|
@@ -26,12 +26,12 @@ import {
|
|
|
26
26
|
markConversationRead,
|
|
27
27
|
removeParticipant,
|
|
28
28
|
setConversationPrivate
|
|
29
|
-
} from "./chunk-
|
|
30
|
-
import "./chunk-
|
|
29
|
+
} from "./chunk-E5C7OWZ2.js";
|
|
30
|
+
import "./chunk-XWXBJQBE.js";
|
|
31
31
|
import "./chunk-YUIHSKR6.js";
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-N7BLAHNE.js";
|
|
33
|
+
import "./chunk-4JSR7YO7.js";
|
|
34
|
+
import "./chunk-7KJOFUNN.js";
|
|
35
35
|
export {
|
|
36
36
|
addMessage,
|
|
37
37
|
addParticipant,
|
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
} from "./chunk-D424ZQGI.js";
|
|
8
8
|
import {
|
|
9
9
|
daemonFetch
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-PLDWHR4D.js";
|
|
11
|
+
import "./chunk-N7BLAHNE.js";
|
|
12
|
+
import "./chunk-4JSR7YO7.js";
|
|
13
|
+
import "./chunk-7KJOFUNN.js";
|
|
14
14
|
|
|
15
15
|
// src/commands/chat/create.ts
|
|
16
16
|
async function run(args) {
|
|
@@ -33,7 +33,7 @@ async function run(args) {
|
|
|
33
33
|
process.exit(1);
|
|
34
34
|
}
|
|
35
35
|
if (flags.channel) {
|
|
36
|
-
const res = await daemonFetch("/api/
|
|
36
|
+
const res = await daemonFetch("/api/v1/channels", {
|
|
37
37
|
method: "POST",
|
|
38
38
|
headers: { "Content-Type": "application/json" },
|
|
39
39
|
body: JSON.stringify({
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
parseArgs
|
|
4
4
|
} from "./chunk-D424ZQGI.js";
|
|
5
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-7KJOFUNN.js";
|
|
6
6
|
|
|
7
7
|
// src/commands/create.ts
|
|
8
8
|
async function run(args) {
|
|
@@ -13,7 +13,7 @@ async function run(args) {
|
|
|
13
13
|
const name = positional[0];
|
|
14
14
|
let template = flags.template;
|
|
15
15
|
if (!template) {
|
|
16
|
-
const { resolveTemplate } = await import("./ai-service-
|
|
16
|
+
const { resolveTemplate } = await import("./ai-service-PSILB5WD.js");
|
|
17
17
|
template = resolveTemplate();
|
|
18
18
|
}
|
|
19
19
|
if (!name) {
|
|
@@ -21,8 +21,8 @@ async function run(args) {
|
|
|
21
21
|
process.exit(1);
|
|
22
22
|
}
|
|
23
23
|
const skills = flags.skills === "none" ? [] : flags.skills ? flags.skills.split(",") : void 0;
|
|
24
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
25
|
-
const { getClient, urlOf } = await import("./api-client-
|
|
24
|
+
const { daemonFetch } = await import("./daemon-client-WOAQXXBM.js");
|
|
25
|
+
const { getClient, urlOf } = await import("./api-client-XUXOB7LI.js");
|
|
26
26
|
const client = getClient();
|
|
27
27
|
const res = await daemonFetch(urlOf(client.api.minds.$url()), {
|
|
28
28
|
method: "POST",
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
run
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-47XDEWWV.js";
|
|
5
5
|
import {
|
|
6
6
|
stopDaemon
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-V6ZCNULL.js";
|
|
8
8
|
import {
|
|
9
9
|
getServiceMode,
|
|
10
10
|
modeLabel,
|
|
11
11
|
pollHealth,
|
|
12
12
|
readDaemonConfig,
|
|
13
13
|
restartService
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-LGB6JBHI.js";
|
|
16
|
-
import "./chunk-TSXLLQZW.js";
|
|
14
|
+
} from "./chunk-7F2SW2KD.js";
|
|
17
15
|
import "./chunk-D424ZQGI.js";
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-U5BTYSAL.js";
|
|
17
|
+
import "./chunk-BDK73LK6.js";
|
|
18
|
+
import "./chunk-6OWJXUAR.js";
|
|
19
|
+
import "./chunk-N7BLAHNE.js";
|
|
20
|
+
import "./chunk-4JSR7YO7.js";
|
|
21
|
+
import "./chunk-7KJOFUNN.js";
|
|
21
22
|
|
|
22
23
|
// src/commands/daemon-restart.ts
|
|
23
24
|
async function run2(args) {
|