volute 0.45.2 → 0.46.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 +3 -3
- package/dist/{activity-events-BUR2RYTJ.js → activity-events-NF6VWTJQ.js} +1 -1
- package/dist/{auth-FLAEXXZK.js → auth-CCFAU4GQ.js} +2 -2
- package/dist/{chat-76MRWWQX.js → chat-ZIQQS25U.js} +1 -1
- package/dist/chunk-4YU7HF4L.js +237 -0
- package/dist/{chunk-OP4JG2BS.js → chunk-5ZQZDDIK.js} +6 -2
- package/dist/{chunk-FR6S2KNN.js → chunk-BJZ4PV7R.js} +1 -1
- package/dist/{chunk-NYC5U6K7.js → chunk-E3DA4HYV.js} +4 -4
- package/dist/{chunk-YT7PEESJ.js → chunk-JO5IO4FH.js} +245 -124
- package/dist/{chunk-7ZUB63PS.js → chunk-KGIXX4NM.js} +1 -1
- package/dist/{chunk-EJVPTVTI.js → chunk-KQSFTPIM.js} +1 -1
- package/dist/{chunk-T6HYVHPG.js → chunk-OV7ZQ2GH.js} +1 -1
- package/dist/{clock-K43IMROX.js → chunk-PJ45FQPT.js} +21 -16
- package/dist/{chunk-UYLGEDVD.js → chunk-YXSUMLTC.js} +44 -267
- package/dist/{chunk-7C44R625.js → chunk-ZNMCCHCP.js} +47 -1
- package/dist/cli.js +11 -11
- package/dist/clock-RHS2JEDL.js +16 -0
- package/dist/{cloud-sync-3OJOPZRT.js → cloud-sync-46RS4SDA.js} +9 -8
- package/dist/{conversations-JZTD6KLR.js → conversations-CJOOCGNW.js} +2 -2
- package/dist/{daemon-restart-TIHKVVVA.js → daemon-restart-VFEI57UO.js} +1 -1
- package/dist/daemon.js +249 -170
- package/dist/{delete-BFMIGAIB.js → delete-HPLC7ETU.js} +1 -1
- package/dist/{delivery-manager-VDVKVA46.js → delivery-manager-JINZRG2W.js} +9 -8
- package/dist/{echo-text-6JJOPUD4.js → echo-text-VQPB5L2X.js} +10 -9
- package/dist/{export-GGIVO76O.js → export-LY723I3Z.js} +3 -3
- package/dist/{extensions-JONTW2HF.js → extensions-ZELQLTSR.js} +9 -8
- package/dist/{message-delivery-3C65ZI6L.js → message-delivery-R7JSQGYX.js} +11 -8
- package/dist/{mind-DWB6XYCH.js → mind-LHKS55DI.js} +9 -9
- package/dist/{mind-activity-tracker-POBLU3LC.js → mind-activity-tracker-3QRNJVR4.js} +2 -2
- package/dist/{mind-service-3F4I46CI.js → mind-service-NB2JMWQZ.js} +11 -8
- package/dist/mind-sleep-74TGOQBC.js +83 -0
- package/dist/{package-A7KXT67Q.js → package-DOD6CPO6.js} +2 -1
- package/dist/{scheduler-P6DXLLXI.js → scheduler-WVKII3LA.js} +9 -8
- package/dist/{seed-HCP5NYKH.js → seed-CNYIHPOH.js} +1 -1
- package/dist/{seed-cmd-ILOGNIFB.js → seed-cmd-AVNUNLZV.js} +2 -2
- package/dist/{seed-create-OURS2LS4.js → seed-create-ANXGYSCC.js} +3 -3
- package/dist/{seed-sprout-ELDFDAN6.js → seed-sprout-NIUFTX32.js} +5 -3
- package/dist/{send-AAIOPJAV.js → send-SPE6DVNJ.js} +6 -0
- package/dist/{setup-DQM5VPY4.js → setup-QT2A25SY.js} +1 -1
- package/dist/skills/orientation/SKILL.md +1 -1
- package/dist/skills/volute-mind/SKILL.md +8 -8
- package/dist/skills/volute-mind/references/sleep.md +8 -1
- package/dist/{skills-BKINFL7W.js → skills-AKCFA7BN.js} +1 -1
- package/dist/{sleep-manager-HCUH4PM4.js → sleep-manager-G6TXSDP7.js} +9 -8
- package/dist/{spirit-DBTIW7P4.js → spirit-RPBLLUQ5.js} +2 -2
- package/dist/{sprout-W3KC7UGK.js → sprout-SMX42ZBP.js} +1 -1
- package/dist/{system-chat-XOALE2RD.js → system-chat-NDAW6YP7.js} +9 -8
- package/dist/{turn-tracker-2W6Q2NSR.js → turn-tracker-FOIBNUUA.js} +2 -1
- package/dist/{up-FTK7CTO3.js → up-PS6PFS75.js} +1 -1
- package/dist/{version-notify-3XMAIQTE.js → version-notify-C5CH7CVP.js} +15 -10
- package/dist/web-assets/assets/{index-Bc2m8gRC.js → index-CU6XWICM.js} +3 -3
- package/dist/web-assets/index.html +1 -1
- package/package.json +2 -1
- package/templates/_base/home/VOLUTE.md +6 -2
- package/templates/_base/src/lib/context-breakdown.ts +57 -67
- package/templates/_base/src/lib/volute-server.ts +2 -2
- package/templates/claude/src/agent.ts +78 -42
- package/templates/claude/src/lib/session-reaper.ts +31 -0
- package/templates/codex/src/agent.ts +62 -40
- package/templates/pi/src/agent.ts +55 -38
- package/dist/mind-sleep-YMBR3I35.js +0 -47
- /package/dist/{chunk-QNQMSWZE.js → chunk-K6T43YBD.js} +0 -0
|
@@ -28,7 +28,7 @@ var cmd = command({
|
|
|
28
28
|
console.error(data.error ?? "Failed to delete mind");
|
|
29
29
|
process.exit(1);
|
|
30
30
|
}
|
|
31
|
-
console.log(`
|
|
31
|
+
console.log(`Deleted ${name} from the registry.`);
|
|
32
32
|
if (flags.force) {
|
|
33
33
|
console.log("Deleted mind directory.");
|
|
34
34
|
} else {
|
|
@@ -4,22 +4,23 @@ import {
|
|
|
4
4
|
getDeliveryManager,
|
|
5
5
|
initDeliveryManager,
|
|
6
6
|
tryGetDeliveryManager
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-JO5IO4FH.js";
|
|
8
8
|
import "./chunk-ZDZISKCL.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-BJZ4PV7R.js";
|
|
10
10
|
import "./chunk-QLWG3C2Z.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-KGIXX4NM.js";
|
|
12
|
+
import "./chunk-5ZQZDDIK.js";
|
|
13
13
|
import "./chunk-PFZBNKUH.js";
|
|
14
14
|
import "./chunk-JZ62SYWR.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-KQSFTPIM.js";
|
|
16
16
|
import "./chunk-4JOQZPCE.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-YXSUMLTC.js";
|
|
18
|
+
import "./chunk-4YU7HF4L.js";
|
|
18
19
|
import "./chunk-H2X54EHC.js";
|
|
19
20
|
import "./chunk-IHKGWTGT.js";
|
|
20
21
|
import "./chunk-F7H6ATM4.js";
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-OV7ZQ2GH.js";
|
|
23
|
+
import "./chunk-ZNMCCHCP.js";
|
|
23
24
|
import "./chunk-T2TP6ZC6.js";
|
|
24
25
|
import "./chunk-ALKYQULU.js";
|
|
25
26
|
import "./chunk-ZV7MFISX.js";
|
|
@@ -2,25 +2,26 @@
|
|
|
2
2
|
import {
|
|
3
3
|
clearEchoTextCache,
|
|
4
4
|
echoTextToChannel
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-E3DA4HYV.js";
|
|
6
6
|
import "./chunk-RXEEYDIB.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-JO5IO4FH.js";
|
|
8
8
|
import "./chunk-ZDZISKCL.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-BJZ4PV7R.js";
|
|
10
10
|
import "./chunk-QLWG3C2Z.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-KGIXX4NM.js";
|
|
12
|
+
import "./chunk-5ZQZDDIK.js";
|
|
13
13
|
import "./chunk-PFZBNKUH.js";
|
|
14
14
|
import "./chunk-JZ62SYWR.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-KQSFTPIM.js";
|
|
16
16
|
import "./chunk-4JOQZPCE.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-YXSUMLTC.js";
|
|
18
|
+
import "./chunk-4YU7HF4L.js";
|
|
18
19
|
import "./chunk-TQJ6ZYVY.js";
|
|
19
20
|
import "./chunk-H2X54EHC.js";
|
|
20
21
|
import "./chunk-IHKGWTGT.js";
|
|
21
22
|
import "./chunk-F7H6ATM4.js";
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-OV7ZQ2GH.js";
|
|
24
|
+
import "./chunk-ZNMCCHCP.js";
|
|
24
25
|
import "./chunk-T2TP6ZC6.js";
|
|
25
26
|
import "./chunk-LGNUFVMR.js";
|
|
26
27
|
import "./chunk-ALKYQULU.js";
|
|
@@ -24,7 +24,7 @@ var cmd = command({
|
|
|
24
24
|
flags: {
|
|
25
25
|
"include-env": { type: "boolean", description: "Include environment variables" },
|
|
26
26
|
"include-identity": { type: "boolean", description: "Include identity keys" },
|
|
27
|
-
"include-
|
|
27
|
+
"include-bridges": { type: "boolean", description: "Include bridge configs" },
|
|
28
28
|
"include-history": { type: "boolean", description: "Include message history" },
|
|
29
29
|
"include-sessions": { type: "boolean", description: "Include session data" },
|
|
30
30
|
"include-src": { type: "boolean", description: "Include source code" },
|
|
@@ -46,7 +46,7 @@ var cmd = command({
|
|
|
46
46
|
const includeAll = flags.all;
|
|
47
47
|
const includeEnv = includeAll || flags["include-env"];
|
|
48
48
|
const includeIdentity = includeAll || flags["include-identity"];
|
|
49
|
-
const includeConnectors = includeAll || flags["include-
|
|
49
|
+
const includeConnectors = includeAll || flags["include-bridges"];
|
|
50
50
|
const includeHistory = includeAll || flags["include-history"];
|
|
51
51
|
const includeSessions = includeAll || flags["include-sessions"];
|
|
52
52
|
const includeSrc = includeAll || flags["include-src"];
|
|
@@ -97,7 +97,7 @@ Exported ${name} \u2192 ${outputPath} (${sizeMB} MB)`);
|
|
|
97
97
|
["src", includeSrc],
|
|
98
98
|
["env", includeEnv],
|
|
99
99
|
["identity", includeIdentity],
|
|
100
|
-
["
|
|
100
|
+
["bridges", includeConnectors],
|
|
101
101
|
["history", includeHistory],
|
|
102
102
|
["sessions", includeSessions]
|
|
103
103
|
]) {
|
|
@@ -13,22 +13,23 @@ import {
|
|
|
13
13
|
parseCommandArgs,
|
|
14
14
|
setExtensionEnabled,
|
|
15
15
|
uninstallNpmExtension
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-JO5IO4FH.js";
|
|
17
17
|
import "./chunk-ZDZISKCL.js";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-BJZ4PV7R.js";
|
|
19
19
|
import "./chunk-QLWG3C2Z.js";
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-KGIXX4NM.js";
|
|
21
|
+
import "./chunk-5ZQZDDIK.js";
|
|
22
22
|
import "./chunk-PFZBNKUH.js";
|
|
23
23
|
import "./chunk-JZ62SYWR.js";
|
|
24
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-KQSFTPIM.js";
|
|
25
25
|
import "./chunk-4JOQZPCE.js";
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-YXSUMLTC.js";
|
|
27
|
+
import "./chunk-4YU7HF4L.js";
|
|
27
28
|
import "./chunk-H2X54EHC.js";
|
|
28
29
|
import "./chunk-IHKGWTGT.js";
|
|
29
30
|
import "./chunk-F7H6ATM4.js";
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
31
|
+
import "./chunk-OV7ZQ2GH.js";
|
|
32
|
+
import "./chunk-ZNMCCHCP.js";
|
|
32
33
|
import "./chunk-T2TP6ZC6.js";
|
|
33
34
|
import "./chunk-ALKYQULU.js";
|
|
34
35
|
import "./chunk-ZV7MFISX.js";
|
|
@@ -1,31 +1,34 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
+
deliverBatch,
|
|
3
4
|
deliverMessage,
|
|
4
5
|
linkToolResultToTurn,
|
|
5
6
|
recordInbound,
|
|
6
7
|
recordOutbound,
|
|
7
8
|
resolveSleepAction
|
|
8
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-JO5IO4FH.js";
|
|
9
10
|
import "./chunk-ZDZISKCL.js";
|
|
10
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-BJZ4PV7R.js";
|
|
11
12
|
import "./chunk-QLWG3C2Z.js";
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-KGIXX4NM.js";
|
|
14
|
+
import "./chunk-5ZQZDDIK.js";
|
|
14
15
|
import "./chunk-PFZBNKUH.js";
|
|
15
16
|
import "./chunk-JZ62SYWR.js";
|
|
16
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-KQSFTPIM.js";
|
|
17
18
|
import "./chunk-4JOQZPCE.js";
|
|
18
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-YXSUMLTC.js";
|
|
20
|
+
import "./chunk-4YU7HF4L.js";
|
|
19
21
|
import "./chunk-H2X54EHC.js";
|
|
20
22
|
import "./chunk-IHKGWTGT.js";
|
|
21
23
|
import "./chunk-F7H6ATM4.js";
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-OV7ZQ2GH.js";
|
|
25
|
+
import "./chunk-ZNMCCHCP.js";
|
|
24
26
|
import "./chunk-T2TP6ZC6.js";
|
|
25
27
|
import "./chunk-ALKYQULU.js";
|
|
26
28
|
import "./chunk-ZV7MFISX.js";
|
|
27
29
|
import "./chunk-K3NQKI34.js";
|
|
28
30
|
export {
|
|
31
|
+
deliverBatch,
|
|
29
32
|
deliverMessage,
|
|
30
33
|
linkToolResultToTurn,
|
|
31
34
|
recordInbound,
|
|
@@ -34,7 +34,7 @@ var cmd = subcommands({
|
|
|
34
34
|
},
|
|
35
35
|
delete: {
|
|
36
36
|
description: "Delete a mind",
|
|
37
|
-
run: (args) => import("./delete-
|
|
37
|
+
run: (args) => import("./delete-HPLC7ETU.js").then((m) => m.run(args))
|
|
38
38
|
},
|
|
39
39
|
list: {
|
|
40
40
|
description: "List all minds",
|
|
@@ -62,31 +62,31 @@ var cmd = subcommands({
|
|
|
62
62
|
},
|
|
63
63
|
export: {
|
|
64
64
|
description: "Export a mind",
|
|
65
|
-
run: (args) => import("./export-
|
|
65
|
+
run: (args) => import("./export-LY723I3Z.js").then((m) => m.run(args))
|
|
66
66
|
},
|
|
67
67
|
split: {
|
|
68
|
-
description: "
|
|
68
|
+
description: "Split off a variant",
|
|
69
69
|
run: (args) => import("./split-WBMZXBHF.js").then((m) => m.run(args))
|
|
70
70
|
},
|
|
71
71
|
join: {
|
|
72
|
-
description: "
|
|
72
|
+
description: "Join a variant back into its parent",
|
|
73
73
|
run: (args) => import("./join-ZJV7W6MO.js").then((m) => m.run(args))
|
|
74
74
|
},
|
|
75
75
|
sleep: {
|
|
76
|
-
description: "
|
|
77
|
-
run: (args) => import("./mind-sleep-
|
|
76
|
+
description: "(legacy) Use 'volute clock sleep' instead",
|
|
77
|
+
run: (args) => import("./mind-sleep-74TGOQBC.js").then((m) => m.run(args))
|
|
78
78
|
},
|
|
79
79
|
wake: {
|
|
80
|
-
description: "
|
|
80
|
+
description: "(legacy) Use 'volute clock wake' instead",
|
|
81
81
|
run: (args) => import("./mind-wake-LCLGTXA2.js").then((m) => m.run(args))
|
|
82
82
|
},
|
|
83
83
|
seed: {
|
|
84
84
|
description: "(legacy) Use 'volute seed create' instead",
|
|
85
|
-
run: (args) => import("./seed-
|
|
85
|
+
run: (args) => import("./seed-CNYIHPOH.js").then((m) => m.run(args))
|
|
86
86
|
},
|
|
87
87
|
sprout: {
|
|
88
88
|
description: "(legacy) Use 'volute seed sprout' instead",
|
|
89
|
-
run: (args) => import("./sprout-
|
|
89
|
+
run: (args) => import("./sprout-SMX42ZBP.js").then((m) => m.run(args))
|
|
90
90
|
}
|
|
91
91
|
},
|
|
92
92
|
footer: "Mind name can be omitted (where applicable) if VOLUTE_MIND is set."
|
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
markIdle,
|
|
5
5
|
onMindEvent,
|
|
6
6
|
stopAll
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-KQSFTPIM.js";
|
|
8
|
+
import "./chunk-ZNMCCHCP.js";
|
|
9
9
|
import "./chunk-T2TP6ZC6.js";
|
|
10
10
|
import "./chunk-ALKYQULU.js";
|
|
11
11
|
import "./chunk-ZV7MFISX.js";
|
|
@@ -1,32 +1,35 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
+
buildSeedOrientation,
|
|
3
4
|
sleepMind,
|
|
4
5
|
startMindFull,
|
|
5
6
|
startSpiritFull,
|
|
6
7
|
stopMindFull,
|
|
7
8
|
stopSpiritFull,
|
|
8
9
|
wakeMind
|
|
9
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-JO5IO4FH.js";
|
|
10
11
|
import "./chunk-ZDZISKCL.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-BJZ4PV7R.js";
|
|
12
13
|
import "./chunk-QLWG3C2Z.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-KGIXX4NM.js";
|
|
15
|
+
import "./chunk-5ZQZDDIK.js";
|
|
15
16
|
import "./chunk-PFZBNKUH.js";
|
|
16
17
|
import "./chunk-JZ62SYWR.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-KQSFTPIM.js";
|
|
18
19
|
import "./chunk-4JOQZPCE.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-YXSUMLTC.js";
|
|
21
|
+
import "./chunk-4YU7HF4L.js";
|
|
20
22
|
import "./chunk-H2X54EHC.js";
|
|
21
23
|
import "./chunk-IHKGWTGT.js";
|
|
22
24
|
import "./chunk-F7H6ATM4.js";
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-OV7ZQ2GH.js";
|
|
26
|
+
import "./chunk-ZNMCCHCP.js";
|
|
25
27
|
import "./chunk-T2TP6ZC6.js";
|
|
26
28
|
import "./chunk-ALKYQULU.js";
|
|
27
29
|
import "./chunk-ZV7MFISX.js";
|
|
28
30
|
import "./chunk-K3NQKI34.js";
|
|
29
31
|
export {
|
|
32
|
+
buildSeedOrientation,
|
|
30
33
|
sleepMind,
|
|
31
34
|
startMindFull,
|
|
32
35
|
startSpiritFull,
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
parseDuration
|
|
4
|
+
} from "./chunk-PJ45FQPT.js";
|
|
5
|
+
import "./chunk-5T5YMX6S.js";
|
|
6
|
+
import {
|
|
7
|
+
resolveMindName
|
|
8
|
+
} from "./chunk-BTY4WNFE.js";
|
|
9
|
+
import {
|
|
10
|
+
daemonFetch
|
|
11
|
+
} from "./chunk-RBNMDAKB.js";
|
|
12
|
+
import "./chunk-LOPXTW6H.js";
|
|
13
|
+
import {
|
|
14
|
+
command
|
|
15
|
+
} from "./chunk-TXSA4Q3V.js";
|
|
16
|
+
import "./chunk-O7IGP7ZW.js";
|
|
17
|
+
import "./chunk-K3NQKI34.js";
|
|
18
|
+
|
|
19
|
+
// packages/cli/src/commands/mind-sleep.ts
|
|
20
|
+
function resolveWakeAt(input, now = /* @__PURE__ */ new Date()) {
|
|
21
|
+
const durationMs = parseDuration(input);
|
|
22
|
+
if (durationMs !== null) return new Date(now.getTime() + durationMs).toISOString();
|
|
23
|
+
const hm = input.match(/^(\d{1,2}):(\d{2})$/);
|
|
24
|
+
if (hm) {
|
|
25
|
+
const h = Number(hm[1]);
|
|
26
|
+
const m = Number(hm[2]);
|
|
27
|
+
if (h > 23 || m > 59) return null;
|
|
28
|
+
const d = new Date(now);
|
|
29
|
+
d.setHours(h, m, 0, 0);
|
|
30
|
+
if (d <= now) d.setDate(d.getDate() + 1);
|
|
31
|
+
return d.toISOString();
|
|
32
|
+
}
|
|
33
|
+
const date = new Date(input);
|
|
34
|
+
if (Number.isNaN(date.getTime())) return null;
|
|
35
|
+
return date.toISOString();
|
|
36
|
+
}
|
|
37
|
+
var cmd = command({
|
|
38
|
+
name: "volute clock sleep",
|
|
39
|
+
description: "Put a mind to sleep",
|
|
40
|
+
args: [{ name: "name", description: "Mind to sleep (or use --mind / VOLUTE_MIND)" }],
|
|
41
|
+
flags: {
|
|
42
|
+
mind: { type: "string", description: "Mind name" },
|
|
43
|
+
"wake-at": {
|
|
44
|
+
type: "string",
|
|
45
|
+
description: "Wake time: duration (2h30m), local HH:MM, or ISO timestamp"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
run: async ({ args, flags }) => {
|
|
49
|
+
const name = args.name || resolveMindName(flags);
|
|
50
|
+
if (!name) {
|
|
51
|
+
console.error("Provide a mind name as argument, --mind flag, or VOLUTE_MIND env var");
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
const body = {};
|
|
55
|
+
if (flags["wake-at"]) {
|
|
56
|
+
const wakeAt = resolveWakeAt(flags["wake-at"]);
|
|
57
|
+
if (!wakeAt) {
|
|
58
|
+
console.error(
|
|
59
|
+
`Invalid --wake-at: ${flags["wake-at"]}
|
|
60
|
+
Accepted forms: a duration (e.g. 2h30m, 45m), a local time (HH:MM, next occurrence), or an ISO timestamp (e.g. 2026-07-08T14:00:00Z).`
|
|
61
|
+
);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
body.wakeAt = wakeAt;
|
|
65
|
+
}
|
|
66
|
+
const res = await daemonFetch(`/api/minds/${encodeURIComponent(name)}/sleep`, {
|
|
67
|
+
method: "POST",
|
|
68
|
+
headers: { "Content-Type": "application/json" },
|
|
69
|
+
body: JSON.stringify(body)
|
|
70
|
+
});
|
|
71
|
+
const data = await res.json();
|
|
72
|
+
if (!res.ok) {
|
|
73
|
+
console.error(data.error || "Failed to put mind to sleep");
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
console.log(`${name} is going to sleep`);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
var run = cmd.execute;
|
|
80
|
+
export {
|
|
81
|
+
resolveWakeAt,
|
|
82
|
+
run
|
|
83
|
+
};
|
|
@@ -4,7 +4,7 @@ import "./chunk-K3NQKI34.js";
|
|
|
4
4
|
// package.json
|
|
5
5
|
var package_default = {
|
|
6
6
|
name: "volute",
|
|
7
|
-
version: "0.
|
|
7
|
+
version: "0.46.0",
|
|
8
8
|
description: "CLI for creating and managing self-modifying AI minds powered by the Claude Agent SDK",
|
|
9
9
|
type: "module",
|
|
10
10
|
license: "MIT",
|
|
@@ -100,6 +100,7 @@ var package_default = {
|
|
|
100
100
|
marked: "^18.0.5",
|
|
101
101
|
sharp: "^0.35.2",
|
|
102
102
|
svelte: "^5.56.3",
|
|
103
|
+
"svelte-check": "4.7.1",
|
|
103
104
|
tsup: "^8.5.1",
|
|
104
105
|
tsx: "^4.22.4",
|
|
105
106
|
typescript: "^6.0.3",
|
|
@@ -3,22 +3,23 @@ import {
|
|
|
3
3
|
Scheduler,
|
|
4
4
|
getScheduler,
|
|
5
5
|
initScheduler
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JO5IO4FH.js";
|
|
7
7
|
import "./chunk-ZDZISKCL.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-BJZ4PV7R.js";
|
|
9
9
|
import "./chunk-QLWG3C2Z.js";
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-KGIXX4NM.js";
|
|
11
|
+
import "./chunk-5ZQZDDIK.js";
|
|
12
12
|
import "./chunk-PFZBNKUH.js";
|
|
13
13
|
import "./chunk-JZ62SYWR.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-KQSFTPIM.js";
|
|
15
15
|
import "./chunk-4JOQZPCE.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-YXSUMLTC.js";
|
|
17
|
+
import "./chunk-4YU7HF4L.js";
|
|
17
18
|
import "./chunk-H2X54EHC.js";
|
|
18
19
|
import "./chunk-IHKGWTGT.js";
|
|
19
20
|
import "./chunk-F7H6ATM4.js";
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-OV7ZQ2GH.js";
|
|
22
|
+
import "./chunk-ZNMCCHCP.js";
|
|
22
23
|
import "./chunk-T2TP6ZC6.js";
|
|
23
24
|
import "./chunk-ALKYQULU.js";
|
|
24
25
|
import "./chunk-ZV7MFISX.js";
|
|
@@ -4,7 +4,7 @@ import "./chunk-K3NQKI34.js";
|
|
|
4
4
|
// packages/cli/src/commands/seed.ts
|
|
5
5
|
async function run(args) {
|
|
6
6
|
console.error("Note: `volute mind seed` is now `volute seed create`");
|
|
7
|
-
await import("./seed-create-
|
|
7
|
+
await import("./seed-create-ANXGYSCC.js").then((m) => m.run(args));
|
|
8
8
|
}
|
|
9
9
|
export {
|
|
10
10
|
run
|
|
@@ -12,11 +12,11 @@ var cmd = subcommands({
|
|
|
12
12
|
commands: {
|
|
13
13
|
create: {
|
|
14
14
|
description: "Plant a new seed",
|
|
15
|
-
run: (args) => import("./seed-create-
|
|
15
|
+
run: (args) => import("./seed-create-ANXGYSCC.js").then((m) => m.run(args))
|
|
16
16
|
},
|
|
17
17
|
sprout: {
|
|
18
18
|
description: "Complete orientation and become a full mind",
|
|
19
|
-
run: (args) => import("./seed-sprout-
|
|
19
|
+
run: (args) => import("./seed-sprout-NIUFTX32.js").then((m) => m.run(args))
|
|
20
20
|
},
|
|
21
21
|
check: {
|
|
22
22
|
description: "Check seed readiness",
|
|
@@ -34,8 +34,8 @@ Choose a model [1-${enabled.length}]: `);
|
|
|
34
34
|
}
|
|
35
35
|
var cmd = command({
|
|
36
36
|
name: "volute seed create",
|
|
37
|
-
description: "Plant a new seed
|
|
38
|
-
args: [{ name: "name", required: true, description: "Name for the seed
|
|
37
|
+
description: "Plant a new seed",
|
|
38
|
+
args: [{ name: "name", required: true, description: "Name for the seed" }],
|
|
39
39
|
flags: {
|
|
40
40
|
template: { type: "string", description: "Template to use" },
|
|
41
41
|
model: { type: "string", description: "AI model to use" },
|
|
@@ -58,7 +58,7 @@ var cmd = command({
|
|
|
58
58
|
}
|
|
59
59
|
if (template !== "claude" && !model) {
|
|
60
60
|
if (process.env.VOLUTE_MIND || !process.stdin.isTTY) {
|
|
61
|
-
const { getSpiritModel } = await import("./spirit-
|
|
61
|
+
const { getSpiritModel } = await import("./spirit-RPBLLUQ5.js");
|
|
62
62
|
const { qualifyModelId } = await import("./ai-service-UODCCE4O.js");
|
|
63
63
|
const spiritModel = getSpiritModel();
|
|
64
64
|
if (spiritModel) {
|
|
@@ -8,7 +8,10 @@ import {
|
|
|
8
8
|
import "./chunk-O7IGP7ZW.js";
|
|
9
9
|
import {
|
|
10
10
|
getStandardSkillsWithExtensions
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-KGIXX4NM.js";
|
|
12
|
+
import {
|
|
13
|
+
ORIENTATION_MARKER
|
|
14
|
+
} from "./chunk-4YU7HF4L.js";
|
|
12
15
|
import "./chunk-H2X54EHC.js";
|
|
13
16
|
import "./chunk-F7H6ATM4.js";
|
|
14
17
|
import "./chunk-T2TP6ZC6.js";
|
|
@@ -21,7 +24,6 @@ import "./chunk-K3NQKI34.js";
|
|
|
21
24
|
// packages/cli/src/commands/seed-sprout.ts
|
|
22
25
|
import { existsSync, readFileSync } from "fs";
|
|
23
26
|
import { resolve } from "path";
|
|
24
|
-
var ORIENTATION_MARKER = "You don't have a soul yet";
|
|
25
27
|
var cmd = command({
|
|
26
28
|
name: "volute seed sprout",
|
|
27
29
|
description: "Complete orientation and become a full mind (run by the seed itself)",
|
|
@@ -73,7 +75,7 @@ var cmd = command({
|
|
|
73
75
|
}
|
|
74
76
|
}
|
|
75
77
|
const { getClient, urlOf } = await import("./api-client-LC5YRA32.js");
|
|
76
|
-
const { mindSkillsDir } = await import("./skills-
|
|
78
|
+
const { mindSkillsDir } = await import("./skills-AKCFA7BN.js");
|
|
77
79
|
const client = getClient();
|
|
78
80
|
const failedSkills = [];
|
|
79
81
|
for (const skillId of getStandardSkillsWithExtensions()) {
|
|
@@ -286,6 +286,12 @@ To reply to a person, use their username from the message prefix (e.g. volute ch
|
|
|
286
286
|
const targetName = parsed.identifier.slice(1);
|
|
287
287
|
const mindSelf = process.env.VOLUTE_MIND;
|
|
288
288
|
const sender = flags.sender || mindSelf || userInfo().username;
|
|
289
|
+
if (mindSelf && targetName === mindSelf) {
|
|
290
|
+
console.error(
|
|
291
|
+
`Can't send to @${targetName} \u2014 that's your own system channel. System messages there are automated notices; they don't need a reply.`
|
|
292
|
+
);
|
|
293
|
+
process.exit(1);
|
|
294
|
+
}
|
|
289
295
|
const targetIsMind = await isMind(targetName);
|
|
290
296
|
waitMindName = targetIsMind ? targetName : void 0;
|
|
291
297
|
const contextMind = mindSelf ?? targetName;
|
|
@@ -221,7 +221,7 @@ async function startDaemonAndOpenBrowser(port, host) {
|
|
|
221
221
|
const url = `http://${displayHost === "0.0.0.0" || displayHost === "::" ? "localhost" : displayHost}:${displayPort}`;
|
|
222
222
|
console.log("\nStarting daemon...");
|
|
223
223
|
try {
|
|
224
|
-
const { run: runUp } = await import("./up-
|
|
224
|
+
const { run: runUp } = await import("./up-PS6PFS75.js");
|
|
225
225
|
await runUp([
|
|
226
226
|
...port != null ? ["--port", String(port)] : [],
|
|
227
227
|
...host ? ["--host", host] : []
|
|
@@ -44,7 +44,7 @@ Once you have a sense of who you are:
|
|
|
44
44
|
5. Generate an avatar (if imagegen is available): `imagegen generate "description of your avatar"` then `volute mind profile --avatar images/<file>`
|
|
45
45
|
6. Run `volute seed sprout` to complete the transformation.
|
|
46
46
|
|
|
47
|
-
After sprouting, you'll have full mind capabilities (
|
|
47
|
+
After sprouting, you'll have full mind capabilities (bridges to external platforms, schedules, variants, etc.).
|
|
48
48
|
|
|
49
49
|
## Commands
|
|
50
50
|
|
|
@@ -28,9 +28,9 @@ You manage yourself through the `volute` CLI. Your mind name is auto-detected vi
|
|
|
28
28
|
| `volute mind join <variant-name> [--summary "..." --justification "..." --memory "..."]` | Merge a variant back |
|
|
29
29
|
| `volute mind upgrade [--diff] [--continue] [--abort]` | Upgrade your server code (--diff to preview) |
|
|
30
30
|
| `volute clock add --id <name> --cron "..." --message/--script "..."` | Schedule a recurring task |
|
|
31
|
-
| `volute clock add --id <name> --in <duration> --message/--script "..."` |
|
|
32
|
-
| `volute clock list` | List your schedules
|
|
33
|
-
| `volute clock remove --id <id>` | Remove a schedule
|
|
31
|
+
| `volute clock add --id <name> --in <duration> --message/--script "..."` | Add a one-time schedule (10m, 1h, 2h30m) |
|
|
32
|
+
| `volute clock list` | List your schedules |
|
|
33
|
+
| `volute clock remove --id <id>` | Remove a schedule |
|
|
34
34
|
| `volute clock status` | Show sleep state + upcoming events |
|
|
35
35
|
| `volute clock sleep [--wake-at <time>]` | Go to sleep |
|
|
36
36
|
| `volute clock wake` | Wake up |
|
|
@@ -41,7 +41,7 @@ You manage yourself through the `volute` CLI. Your mind name is auto-detected vi
|
|
|
41
41
|
|
|
42
42
|
## Clock
|
|
43
43
|
|
|
44
|
-
The clock system manages your schedules
|
|
44
|
+
The clock system manages your schedules and sleep/wake cycles. Use `volute clock` for all time-related operations.
|
|
45
45
|
|
|
46
46
|
### Schedules
|
|
47
47
|
|
|
@@ -60,9 +60,9 @@ You can also schedule scripts that run and deliver their output as a message (em
|
|
|
60
60
|
volute clock add --cron "*/30 * * * *" --script "cat status.txt" --id check-status
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
###
|
|
63
|
+
### One-time schedules
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
Use `--in` for schedules that fire once and then auto-delete:
|
|
66
66
|
|
|
67
67
|
```sh
|
|
68
68
|
volute clock add --id check-task --in 30m --message "check on that task"
|
|
@@ -144,7 +144,7 @@ For group conversations, use `volute chat create --participants mind-b,mind-c --
|
|
|
144
144
|
|
|
145
145
|
## Configuration
|
|
146
146
|
|
|
147
|
-
Your `.config/volute.json` controls your model,
|
|
147
|
+
Your `.config/volute.json` controls your model, schedules, sleep cycle, and profile.
|
|
148
148
|
|
|
149
149
|
### Profile
|
|
150
150
|
|
|
@@ -168,7 +168,7 @@ Your profile is synced automatically when you start. Other minds see your profil
|
|
|
168
168
|
|
|
169
169
|
### Transparency
|
|
170
170
|
|
|
171
|
-
The `transparency` setting in `.config/volute.json` controls what observers (web UI,
|
|
171
|
+
The `transparency` setting in `.config/volute.json` controls what observers (web UI, bridges) can see of your activity — including your thinking. Presets:
|
|
172
172
|
|
|
173
173
|
| Preset | Thinking | Text | Tool use | Tool results | Logs | Usage/lifecycle |
|
|
174
174
|
|--------|----------|------|----------|--------------|------|-----------------|
|
|
@@ -29,5 +29,12 @@ When trigger-woken, you get one full turn to respond, then return to sleep when
|
|
|
29
29
|
You can go to sleep any time with `volute clock sleep`. Optionally set a wake time:
|
|
30
30
|
|
|
31
31
|
```sh
|
|
32
|
-
volute clock sleep --wake-at
|
|
32
|
+
volute clock sleep --wake-at 8h # a duration from now (2h30m, 45m, ...)
|
|
33
|
+
volute clock sleep --wake-at 07:30 # local clock time, next occurrence
|
|
34
|
+
volute clock sleep --wake-at "2025-01-15T07:00:00Z" # explicit ISO timestamp
|
|
33
35
|
```
|
|
36
|
+
|
|
37
|
+
`--wake-at` accepts a duration, a local `HH:MM` time (the next time it comes
|
|
38
|
+
around), or an ISO timestamp — whichever is easiest. It overrides your wake
|
|
39
|
+
schedule for that night: you will wake at the time you asked for, even if a
|
|
40
|
+
scheduled wake cron would have fired earlier.
|
|
@@ -5,22 +5,23 @@ import {
|
|
|
5
5
|
getSleepManagerIfReady,
|
|
6
6
|
initSleepManager,
|
|
7
7
|
matchesGlob
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-JO5IO4FH.js";
|
|
9
9
|
import "./chunk-ZDZISKCL.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-BJZ4PV7R.js";
|
|
11
11
|
import "./chunk-QLWG3C2Z.js";
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-KGIXX4NM.js";
|
|
13
|
+
import "./chunk-5ZQZDDIK.js";
|
|
14
14
|
import "./chunk-PFZBNKUH.js";
|
|
15
15
|
import "./chunk-JZ62SYWR.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-KQSFTPIM.js";
|
|
17
17
|
import "./chunk-4JOQZPCE.js";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-YXSUMLTC.js";
|
|
19
|
+
import "./chunk-4YU7HF4L.js";
|
|
19
20
|
import "./chunk-H2X54EHC.js";
|
|
20
21
|
import "./chunk-IHKGWTGT.js";
|
|
21
22
|
import "./chunk-F7H6ATM4.js";
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-OV7ZQ2GH.js";
|
|
24
|
+
import "./chunk-ZNMCCHCP.js";
|
|
24
25
|
import "./chunk-T2TP6ZC6.js";
|
|
25
26
|
import "./chunk-ALKYQULU.js";
|
|
26
27
|
import "./chunk-ZV7MFISX.js";
|