volute 0.38.0 → 0.39.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-N6HCHU4P.js → activity-events-CR4RIHJT.js} +2 -2
- package/dist/{ai-service-C2YNARGH.js → ai-service-PL7GKFQC.js} +3 -3
- package/dist/{archive-AWIJTVQV.js → archive-UEWIFRAR.js} +2 -2
- package/dist/{auth-2QOOPMBX.js → auth-OJ2YW3NR.js} +3 -3
- package/dist/{chat-XL7CVWVJ.js → chat-RQ5NV5EA.js} +2 -2
- package/dist/{chunk-PLL2FM7A.js → chunk-4BO4I7UF.js} +6 -6
- package/dist/{chunk-SNW2NPP4.js → chunk-6FSSMAXU.js} +1 -1
- package/dist/{chunk-TNZ5XQA4.js → chunk-6V2U3GFQ.js} +2 -2
- package/dist/{chunk-N42QMDID.js → chunk-7GZB3ZJP.js} +1 -1
- package/dist/{chunk-NGXQ2ESO.js → chunk-7OS7QFDF.js} +3 -3
- package/dist/{chunk-UIM5NHPP.js → chunk-7W3UWCQD.js} +2 -2
- package/dist/{chunk-ORNY3MZR.js → chunk-B7MWXFAH.js} +1 -1
- package/dist/{chunk-TEZRVSSB.js → chunk-CHCISTH7.js} +33 -31
- package/dist/{chunk-GVVVMZ4J.js → chunk-DZ4LYU6J.js} +1 -1
- package/dist/{chunk-KXXJYY62.js → chunk-EVKGKQ2P.js} +55 -37
- package/dist/{chunk-BIEWHAAM.js → chunk-IA2SZSLB.js} +1 -1
- package/dist/{chunk-VUM2K6EN.js → chunk-IBOU6Q3Y.js} +4 -4
- package/dist/{chunk-3F7XK5Q7.js → chunk-OEXOFBW5.js} +1 -1
- package/dist/{chunk-7AZQFSOV.js → chunk-OS5MRIEP.js} +1 -1
- package/dist/{chunk-2NHRJ3YO.js → chunk-QDWP435B.js} +2 -2
- package/dist/{chunk-5DPRTREW.js → chunk-QDWPM73D.js} +2 -2
- package/dist/{chunk-LN67VPZJ.js → chunk-QJ4GU5XT.js} +2 -2
- package/dist/{chunk-WC635OPK.js → chunk-RAVQXKAG.js} +1 -1
- package/dist/{chunk-A6FLW5XD.js → chunk-TCNCRDB5.js} +1 -1
- package/dist/{chunk-XLBQYIHH.js → chunk-TT4WT6Y7.js} +1 -1
- package/dist/{chunk-PMMHVSCR.js → chunk-WUH54G5S.js} +1 -1
- package/dist/{chunk-SZJWC2GA.js → chunk-X7GM2OPM.js} +2 -2
- package/dist/{chunk-LQ6Z4FXN.js → chunk-XOSAY7PY.js} +1 -1
- package/dist/{chunk-2TR2OPVA.js → chunk-Y4W3OS7Q.js} +7 -7
- package/dist/{chunk-JOJT34M2.js → chunk-Y5UC6G3O.js} +2 -2
- package/dist/cli.js +15 -15
- package/dist/{cloud-sync-PEM3IVI4.js → cloud-sync-NQCWJLYI.js} +15 -15
- package/dist/{conversations-G6YRSABR.js → conversations-EUXHBWJD.js} +3 -3
- package/dist/{create-PN73742N.js → create-3QH7DVLC.js} +1 -1
- package/dist/{daemon-restart-6QONRBTK.js → daemon-restart-UEB3PLKB.js} +7 -7
- package/dist/daemon.js +69 -69
- package/dist/{db-CBOCDYVA.js → db-32YFKMFL.js} +1 -1
- package/dist/delivery-manager-N34XKUGL.js +30 -0
- package/dist/{delivery-router-QTFEZ26O.js → delivery-router-EUW4RIWG.js} +2 -2
- package/dist/{down-5XZWH4ZP.js → down-TCEBGTMY.js} +5 -5
- package/dist/echo-text-N3BC3WNX.js +31 -0
- package/dist/{exec-ONYZEA5B.js → exec-2MFHTGOS.js} +3 -3
- package/dist/{export-JPDBQESV.js → export-JDAK3THX.js} +2 -2
- package/dist/{extensions-P477XR46.js → extensions-V7TXKAKM.js} +15 -15
- package/dist/{files-LAQ3NXQK.js → files-K5XV23H6.js} +2 -2
- package/dist/{import-EROF27RH.js → import-GZ5IYVV7.js} +5 -5
- package/dist/{isolation-G5J3MTKU.js → isolation-FPF4UTH2.js} +2 -2
- package/dist/{login-F6YMAVLE.js → login-BGF5JY3I.js} +1 -1
- package/dist/{logout-HHPH52KZ.js → logout-GQHI6KH6.js} +1 -1
- package/dist/{message-delivery-54IXVE5H.js → message-delivery-X7MKA3TA.js} +15 -15
- package/dist/{mind-G5HDKBKL.js → mind-QMJIWWWW.js} +5 -5
- package/dist/{mind-activity-tracker-42ENM32S.js → mind-activity-tracker-Z3KBQTVU.js} +3 -3
- package/dist/mind-manager-7GWTTKWD.js +30 -0
- package/dist/mind-service-MO2XJKJN.js +36 -0
- package/dist/{package-LYQHSDPG.js → package-IR4ZEQA2.js} +1 -1
- package/dist/{registry-KMELPC3X.js → registry-LWEOAO53.js} +1 -1
- package/dist/{sandbox-PQYEICEF.js → sandbox-KUAVC37A.js} +5 -5
- package/dist/scheduler-CGUPAEBA.js +30 -0
- package/dist/{seed-3KH4ZRJL.js → seed-GPBERPXJ.js} +1 -1
- package/dist/{seed-cmd-6A76SSAA.js → seed-cmd-PWF4FYFG.js} +2 -2
- package/dist/{seed-create-XXRRGZCO.js → seed-create-NTIICZVB.js} +3 -3
- package/dist/{seed-sprout-HLMUH2AI.js → seed-sprout-PRPFKGJF.js} +7 -7
- package/dist/{send-7CIP5GLS.js → send-IMHDYJHW.js} +2 -2
- package/dist/{service-RH6Q2XWR.js → service-DWBRRFXS.js} +4 -4
- package/dist/{service-install-AIQBLE6P.js → service-install-KEBDNZVE.js} +5 -5
- package/dist/{setup-NPAZXBIJ.js → setup-4CWQ53VV.js} +7 -7
- package/dist/{setup-PF7JSFMO.js → setup-IFYS3TLS.js} +2 -2
- package/dist/{skills-NVOWS5NY.js → skills-FJ5W73AV.js} +5 -5
- package/dist/sleep-manager-6QRMUNHK.js +34 -0
- package/dist/{spirit-ZFYG4JOH.js → spirit-U6MDQLYT.js} +7 -7
- package/dist/{sprout-FLBCETYG.js → sprout-ABX2G76C.js} +1 -1
- package/dist/{status-TGOKAFW3.js → status-C6BBWNU3.js} +5 -5
- package/dist/system-chat-D343HYGR.js +34 -0
- package/dist/{tailscale-LTYNKIPZ.js → tailscale-2KKXDMNK.js} +1 -1
- package/dist/{up-YRZAEZ3Z.js → up-ZU6ILVMA.js} +6 -6
- package/dist/{update-ZCTQ6UGY.js → update-V26PT4VN.js} +5 -5
- package/dist/{update-check-IKS7SGK5.js → update-check-XRERV36Y.js} +2 -2
- package/dist/{version-notify-764EXVQQ.js → version-notify-ZBMY2TEX.js} +16 -16
- package/dist/web-assets/assets/index-B1zwqwt8.css +1 -0
- package/dist/web-assets/assets/index-D1guJF1i.js +73 -0
- package/dist/web-assets/index.html +2 -2
- package/package.json +1 -1
- package/templates/codex/src/agent.ts +6 -0
- package/dist/delivery-manager-IMCRV6A3.js +0 -30
- package/dist/echo-text-ADKLNTIA.js +0 -31
- package/dist/mind-manager-5G6P2EAT.js +0 -30
- package/dist/mind-service-FDATHL6X.js +0 -36
- package/dist/scheduler-ZRUZNQI5.js +0 -30
- package/dist/sleep-manager-VPPQXBPH.js +0 -34
- package/dist/system-chat-YUIT7RA6.js +0 -34
- package/dist/web-assets/assets/index-BI7hUTBr.js +0 -73
- package/dist/web-assets/assets/index-BJifO9h_.css +0 -1
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
broadcast,
|
|
4
4
|
publish,
|
|
5
5
|
subscribe
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7GZB3ZJP.js";
|
|
7
7
|
import "./chunk-T2TP6ZC6.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-QDWP435B.js";
|
|
9
9
|
import "./chunk-CJ26DXZL.js";
|
|
10
10
|
import "./chunk-K3NQKI34.js";
|
|
11
11
|
export {
|
|
@@ -17,10 +17,10 @@ import {
|
|
|
17
17
|
setEnabledModels,
|
|
18
18
|
setUtilityModel,
|
|
19
19
|
unqualifyModelId
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-B7MWXFAH.js";
|
|
21
|
+
import "./chunk-TCNCRDB5.js";
|
|
22
22
|
import "./chunk-T2TP6ZC6.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-QDWP435B.js";
|
|
24
24
|
import "./chunk-CJ26DXZL.js";
|
|
25
25
|
import "./chunk-K3NQKI34.js";
|
|
26
26
|
export {
|
|
@@ -5,8 +5,8 @@ import {
|
|
|
5
5
|
extractArchive,
|
|
6
6
|
isHomeOnlyArchive,
|
|
7
7
|
readManifest
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-IA2SZSLB.js";
|
|
9
|
+
import "./chunk-QDWP435B.js";
|
|
10
10
|
import "./chunk-CJ26DXZL.js";
|
|
11
11
|
import "./chunk-K3NQKI34.js";
|
|
12
12
|
export {
|
|
@@ -17,10 +17,10 @@ import {
|
|
|
17
17
|
syncMindProfile,
|
|
18
18
|
updateUserProfile,
|
|
19
19
|
verifyUser
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-7W3UWCQD.js";
|
|
21
|
+
import "./chunk-7GZB3ZJP.js";
|
|
22
22
|
import "./chunk-T2TP6ZC6.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-QDWP435B.js";
|
|
24
24
|
import "./chunk-CJ26DXZL.js";
|
|
25
25
|
import "./chunk-K3NQKI34.js";
|
|
26
26
|
export {
|
|
@@ -12,7 +12,7 @@ var cmd = subcommands({
|
|
|
12
12
|
commands: {
|
|
13
13
|
send: {
|
|
14
14
|
description: "Send a message",
|
|
15
|
-
run: (args) => import("./send-
|
|
15
|
+
run: (args) => import("./send-IMHDYJHW.js").then((m) => m.run(args))
|
|
16
16
|
},
|
|
17
17
|
list: {
|
|
18
18
|
description: "List conversations",
|
|
@@ -32,7 +32,7 @@ var cmd = subcommands({
|
|
|
32
32
|
},
|
|
33
33
|
files: {
|
|
34
34
|
description: "List pending incoming files",
|
|
35
|
-
run: (args) => import("./files-
|
|
35
|
+
run: (args) => import("./files-K5XV23H6.js").then((m) => m.run(args))
|
|
36
36
|
},
|
|
37
37
|
accept: {
|
|
38
38
|
description: "Accept a pending file",
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
import {
|
|
3
3
|
findBridgeForChannel,
|
|
4
4
|
getBridgeConfig
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-XOSAY7PY.js";
|
|
6
6
|
import {
|
|
7
7
|
publish,
|
|
8
8
|
recordOutbound
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-CHCISTH7.js";
|
|
10
10
|
import {
|
|
11
11
|
readEnv,
|
|
12
12
|
sharedEnvPath
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-WUH54G5S.js";
|
|
14
14
|
import {
|
|
15
15
|
addMessage,
|
|
16
16
|
findDMConversation,
|
|
@@ -18,14 +18,14 @@ import {
|
|
|
18
18
|
getChannelName,
|
|
19
19
|
getConversation,
|
|
20
20
|
getParticipants
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-QDWPM73D.js";
|
|
22
22
|
import {
|
|
23
23
|
readVoluteConfig
|
|
24
24
|
} from "./chunk-CU6OFXMM.js";
|
|
25
25
|
import {
|
|
26
26
|
getOrCreateMindUser,
|
|
27
27
|
getUserByUsername
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-7W3UWCQD.js";
|
|
29
29
|
import {
|
|
30
30
|
logger_default
|
|
31
31
|
} from "./chunk-T2TP6ZC6.js";
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
import {
|
|
36
36
|
mindDir,
|
|
37
37
|
voluteSystemDir
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-QDWP435B.js";
|
|
39
39
|
import {
|
|
40
40
|
__export
|
|
41
41
|
} from "./chunk-K3NQKI34.js";
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
exec,
|
|
4
4
|
execInherit
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-OEXOFBW5.js";
|
|
6
6
|
import {
|
|
7
7
|
voluteSystemDir
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-QDWP435B.js";
|
|
9
9
|
|
|
10
10
|
// packages/daemon/src/lib/config/service-mode.ts
|
|
11
11
|
import { execFileSync } from "child_process";
|
|
@@ -7,14 +7,14 @@ import {
|
|
|
7
7
|
modeLabel,
|
|
8
8
|
pollHealth,
|
|
9
9
|
startService
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-6V2U3GFQ.js";
|
|
11
11
|
import {
|
|
12
12
|
readGlobalConfig
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-TCNCRDB5.js";
|
|
14
14
|
import {
|
|
15
15
|
voluteHome,
|
|
16
16
|
voluteSystemDir
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-QDWP435B.js";
|
|
18
18
|
|
|
19
19
|
// src/commands/up.ts
|
|
20
20
|
import { spawn } from "child_process";
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
loadMergedEnv
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WUH54G5S.js";
|
|
5
5
|
import {
|
|
6
6
|
spiritDir
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-Y4W3OS7Q.js";
|
|
8
8
|
import {
|
|
9
9
|
hashSkillDir,
|
|
10
10
|
importSkillFromDir,
|
|
11
11
|
removeSharedSkill,
|
|
12
12
|
sharedSkillsDir
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-IBOU6Q3Y.js";
|
|
14
14
|
import {
|
|
15
15
|
addMessage,
|
|
16
16
|
createChannel,
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
getParticipants,
|
|
21
21
|
joinChannel,
|
|
22
22
|
publish as publish2
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-QDWPM73D.js";
|
|
24
24
|
import {
|
|
25
25
|
readVoluteConfig,
|
|
26
26
|
writeVoluteConfig
|
|
@@ -28,45 +28,46 @@ import {
|
|
|
28
28
|
import {
|
|
29
29
|
isSandboxEnabled,
|
|
30
30
|
wrapForSandbox
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-EVKGKQ2P.js";
|
|
32
|
+
import {
|
|
33
|
+
markIdle,
|
|
34
|
+
onMindEvent
|
|
35
|
+
} from "./chunk-DZ4LYU6J.js";
|
|
32
36
|
import {
|
|
33
37
|
extractTextContent,
|
|
34
38
|
getRoutingConfig,
|
|
35
39
|
resolveDeliveryMode,
|
|
36
40
|
resolveRoute
|
|
37
|
-
} from "./chunk-
|
|
38
|
-
import {
|
|
39
|
-
markIdle
|
|
40
|
-
} from "./chunk-GVVVMZ4J.js";
|
|
41
|
+
} from "./chunk-OS5MRIEP.js";
|
|
41
42
|
import {
|
|
42
43
|
exec
|
|
43
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-OEXOFBW5.js";
|
|
44
45
|
import {
|
|
45
46
|
chownMindDir,
|
|
46
47
|
isIsolationEnabled,
|
|
47
48
|
mindUserName,
|
|
48
49
|
wrapForIsolation
|
|
49
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-6FSSMAXU.js";
|
|
50
51
|
import {
|
|
51
52
|
getOrCreateMindUser,
|
|
52
53
|
getOrCreateSystemUser,
|
|
53
54
|
getUser,
|
|
54
55
|
getUserByUsername,
|
|
55
56
|
syncMindProfile
|
|
56
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-7W3UWCQD.js";
|
|
57
58
|
import {
|
|
58
59
|
publish,
|
|
59
60
|
subscribe
|
|
60
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-7GZB3ZJP.js";
|
|
61
62
|
import {
|
|
62
63
|
aiCompleteUtility,
|
|
63
64
|
getAiConfig,
|
|
64
65
|
resolveApiKey
|
|
65
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-B7MWXFAH.js";
|
|
66
67
|
import {
|
|
67
68
|
readGlobalConfig,
|
|
68
69
|
writeGlobalConfig
|
|
69
|
-
} from "./chunk-
|
|
70
|
+
} from "./chunk-TCNCRDB5.js";
|
|
70
71
|
import {
|
|
71
72
|
logger_default
|
|
72
73
|
} from "./chunk-T2TP6ZC6.js";
|
|
@@ -79,7 +80,7 @@ import {
|
|
|
79
80
|
stateDir,
|
|
80
81
|
voluteHome,
|
|
81
82
|
voluteSystemDir
|
|
82
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-QDWP435B.js";
|
|
83
84
|
import {
|
|
84
85
|
activity,
|
|
85
86
|
conversationParticipants,
|
|
@@ -1639,7 +1640,7 @@ var MindManager = class {
|
|
|
1639
1640
|
let spawnArgs;
|
|
1640
1641
|
if (isIsolationEnabled()) {
|
|
1641
1642
|
[spawnCmd, spawnArgs] = await wrapForIsolation(baseBin, baseArgs, name);
|
|
1642
|
-
} else if (isSandboxEnabled()) {
|
|
1643
|
+
} else if (isSandboxEnabled() && target.template !== "codex") {
|
|
1643
1644
|
[spawnCmd, spawnArgs] = await wrapForSandbox(baseBin, baseArgs, dir, name, [
|
|
1644
1645
|
dir,
|
|
1645
1646
|
mindStateDir,
|
|
@@ -1769,7 +1770,7 @@ var MindManager = class {
|
|
|
1769
1770
|
if (this.shuttingDown || this.stopping.has(name)) return;
|
|
1770
1771
|
mlog.error(`mind ${name} exited with code ${code}`);
|
|
1771
1772
|
try {
|
|
1772
|
-
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-
|
|
1773
|
+
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-6QRMUNHK.js");
|
|
1773
1774
|
const sleepState = getSleepManagerIfReady2()?.getState(name);
|
|
1774
1775
|
if (sleepState?.sleeping) {
|
|
1775
1776
|
mlog.info(`${name} is sleeping \u2014 skipping crash recovery`);
|
|
@@ -1782,15 +1783,15 @@ var MindManager = class {
|
|
|
1782
1783
|
(err) => mlog.warn(`failed to clear turn state for ${name} after crash`, logger_default.errorData(err))
|
|
1783
1784
|
);
|
|
1784
1785
|
try {
|
|
1785
|
-
const { getDeliveryManager: getDeliveryManager2 } = await import("./delivery-manager-
|
|
1786
|
+
const { getDeliveryManager: getDeliveryManager2 } = await import("./delivery-manager-N34XKUGL.js");
|
|
1786
1787
|
getDeliveryManager2().clearMindSessions(name);
|
|
1787
1788
|
} catch (err) {
|
|
1788
1789
|
if (!(err instanceof Error && err.message.includes("not initialized"))) {
|
|
1789
1790
|
mlog.warn(`failed to clear delivery state for ${name} after crash`, logger_default.errorData(err));
|
|
1790
1791
|
}
|
|
1791
1792
|
}
|
|
1792
|
-
import("./mind-activity-tracker-
|
|
1793
|
-
import("./activity-events-
|
|
1793
|
+
import("./mind-activity-tracker-Z3KBQTVU.js").then(({ markIdle: markIdle2 }) => markIdle2(name)).catch((err) => mlog.warn(`failed to mark ${name} idle after crash`, logger_default.errorData(err)));
|
|
1794
|
+
import("./activity-events-CR4RIHJT.js").then(
|
|
1794
1795
|
({ publish: publish4 }) => publish4({ type: "mind_stopped", mind: name, summary: `${name} crashed (exit ${code})` })
|
|
1795
1796
|
).catch((err) => mlog.warn(`failed to publish crash event for ${name}`, logger_default.errorData(err)));
|
|
1796
1797
|
const { shouldRestart, delay, attempt } = this.restartTracker.recordCrash(name);
|
|
@@ -1841,7 +1842,7 @@ var MindManager = class {
|
|
|
1841
1842
|
mlog.warn(`failed to clear turn state for ${name} on stop`, logger_default.errorData(err));
|
|
1842
1843
|
}
|
|
1843
1844
|
try {
|
|
1844
|
-
const { getDeliveryManager: getDeliveryManager2 } = await import("./delivery-manager-
|
|
1845
|
+
const { getDeliveryManager: getDeliveryManager2 } = await import("./delivery-manager-N34XKUGL.js");
|
|
1845
1846
|
getDeliveryManager2().clearMindSessions(name);
|
|
1846
1847
|
} catch (err) {
|
|
1847
1848
|
if (!(err instanceof Error && err.message.includes("not initialized"))) {
|
|
@@ -1849,7 +1850,7 @@ var MindManager = class {
|
|
|
1849
1850
|
}
|
|
1850
1851
|
}
|
|
1851
1852
|
try {
|
|
1852
|
-
const { clearEchoTextCache } = await import("./echo-text-
|
|
1853
|
+
const { clearEchoTextCache } = await import("./echo-text-N3BC3WNX.js");
|
|
1853
1854
|
clearEchoTextCache(name);
|
|
1854
1855
|
} catch (err) {
|
|
1855
1856
|
mlog.debug(`failed to clear echo-text cache for ${name}`, logger_default.errorData(err));
|
|
@@ -2574,7 +2575,7 @@ async function installNpmExtension(pkg) {
|
|
|
2574
2575
|
throw new Error(`Extension "${pkg}" is already installed`);
|
|
2575
2576
|
}
|
|
2576
2577
|
const dir = ensureExtensionsNpmDir();
|
|
2577
|
-
const { exec: exec2 } = await import("./exec-
|
|
2578
|
+
const { exec: exec2 } = await import("./exec-2MFHTGOS.js");
|
|
2578
2579
|
try {
|
|
2579
2580
|
await exec2("npm", ["install", pkg], { cwd: dir });
|
|
2580
2581
|
} catch (err) {
|
|
@@ -2595,7 +2596,7 @@ async function uninstallNpmExtension(pkg) {
|
|
|
2595
2596
|
packages.splice(idx, 1);
|
|
2596
2597
|
writeExtensionsConfig(packages);
|
|
2597
2598
|
try {
|
|
2598
|
-
const { exec: exec2 } = await import("./exec-
|
|
2599
|
+
const { exec: exec2 } = await import("./exec-2MFHTGOS.js");
|
|
2599
2600
|
await exec2("npm", ["uninstall", pkg], { cwd: extensionsNpmDir() });
|
|
2600
2601
|
} catch (err) {
|
|
2601
2602
|
logger_default.warn(
|
|
@@ -3370,7 +3371,7 @@ async function wakeMind(name) {
|
|
|
3370
3371
|
async function startSpiritFull(name) {
|
|
3371
3372
|
const entry = await findMind(name);
|
|
3372
3373
|
if (entry?.dir) {
|
|
3373
|
-
const { registerMindDir } = await import("./delivery-router-
|
|
3374
|
+
const { registerMindDir } = await import("./delivery-router-EUW4RIWG.js");
|
|
3374
3375
|
registerMindDir(name, entry.dir);
|
|
3375
3376
|
}
|
|
3376
3377
|
await getMindManager().startMind(name);
|
|
@@ -3392,8 +3393,8 @@ async function stopSpiritFull(name) {
|
|
|
3392
3393
|
}).catch((err) => logger_default.error("failed to publish spirit_stopped activity", logger_default.errorData(err)));
|
|
3393
3394
|
}
|
|
3394
3395
|
async function ensureCreatorDM(mindName, creatorUsername) {
|
|
3395
|
-
const { getOrCreateMindUser: getOrCreateMindUser2, getUserByUsername: getUserByUsername2 } = await import("./auth-
|
|
3396
|
-
const { findDMConversation: findDMConversation2, createConversation: createConversation2 } = await import("./conversations-
|
|
3396
|
+
const { getOrCreateMindUser: getOrCreateMindUser2, getUserByUsername: getUserByUsername2 } = await import("./auth-OJ2YW3NR.js");
|
|
3397
|
+
const { findDMConversation: findDMConversation2, createConversation: createConversation2 } = await import("./conversations-EUXHBWJD.js");
|
|
3397
3398
|
const mindUser = await getOrCreateMindUser2(mindName);
|
|
3398
3399
|
const creatorUser = await getUserByUsername2(creatorUsername);
|
|
3399
3400
|
if (!creatorUser) {
|
|
@@ -3737,7 +3738,7 @@ var SleepManager = class {
|
|
|
3737
3738
|
const db = await getDb();
|
|
3738
3739
|
const rows = await db.select().from(deliveryQueue).where(and2(eq4(deliveryQueue.mind, name), eq4(deliveryQueue.status, "sleep-queued"))).all();
|
|
3739
3740
|
if (rows.length === 0) return 0;
|
|
3740
|
-
const { deliverMessage: deliverMessage2 } = await import("./message-delivery-
|
|
3741
|
+
const { deliverMessage: deliverMessage2 } = await import("./message-delivery-X7MKA3TA.js");
|
|
3741
3742
|
const delivered = [];
|
|
3742
3743
|
for (const row of rows) {
|
|
3743
3744
|
try {
|
|
@@ -4410,6 +4411,7 @@ var DeliveryManager = class {
|
|
|
4410
4411
|
if (payload.conversationId) {
|
|
4411
4412
|
typingMap.set(payload.conversationId, baseName, { persistent: true });
|
|
4412
4413
|
}
|
|
4414
|
+
onMindEvent(baseName, "delivery", payload.channel);
|
|
4413
4415
|
const enrichedPayload = await this.enrichWithProfiles(baseName, session, payload);
|
|
4414
4416
|
const body = JSON.stringify({
|
|
4415
4417
|
...enrichedPayload,
|
|
@@ -4647,7 +4649,7 @@ var DeliveryManager = class {
|
|
|
4647
4649
|
`To accept this channel, add a routing rule for "${channel}" to your routes.json.`,
|
|
4648
4650
|
`Messages are being held until a route is configured.`
|
|
4649
4651
|
].filter((line) => line !== null).join("\n");
|
|
4650
|
-
const { sendSystemMessage: sendSystemMessage2 } = await import("./system-chat-
|
|
4652
|
+
const { sendSystemMessage: sendSystemMessage2 } = await import("./system-chat-D343HYGR.js");
|
|
4651
4653
|
await sendSystemMessage2(mindName, notification);
|
|
4652
4654
|
}
|
|
4653
4655
|
async persistToQueue(mindName, session, payload, status = "pending") {
|
|
@@ -5170,7 +5172,7 @@ async function generateSystemReply(conversationId, mindName, message) {
|
|
|
5170
5172
|
if (config.sleep.schedule?.wake) contextParts.push(`Wake cron: ${config.sleep.schedule.wake}`);
|
|
5171
5173
|
}
|
|
5172
5174
|
try {
|
|
5173
|
-
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-
|
|
5175
|
+
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-6QRMUNHK.js");
|
|
5174
5176
|
const sm = getSleepManagerIfReady2();
|
|
5175
5177
|
if (sm) {
|
|
5176
5178
|
const state = sm.getState(mindName);
|
|
@@ -1,30 +1,59 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
readGlobalConfig
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-TCNCRDB5.js";
|
|
5
5
|
import {
|
|
6
6
|
logger_default
|
|
7
7
|
} from "./chunk-T2TP6ZC6.js";
|
|
8
|
-
import {
|
|
9
|
-
getBaseName,
|
|
10
|
-
readRegistry,
|
|
11
|
-
voluteHome,
|
|
12
|
-
voluteSystemDir,
|
|
13
|
-
voluteUserHome
|
|
14
|
-
} from "./chunk-2NHRJ3YO.js";
|
|
15
8
|
|
|
16
9
|
// packages/daemon/src/lib/mind/sandbox.ts
|
|
17
|
-
import {
|
|
10
|
+
import { execFileSync } from "child_process";
|
|
18
11
|
var slog = logger_default.child("sandbox");
|
|
19
12
|
var sandboxManager = null;
|
|
20
13
|
function isSandboxEnabled() {
|
|
21
14
|
if (process.env.VOLUTE_SANDBOX === "0") return false;
|
|
22
15
|
return readGlobalConfig().setup?.isolation === "sandbox";
|
|
23
16
|
}
|
|
17
|
+
function findRipgrep() {
|
|
18
|
+
if (process.env.VOLUTE_RIPGREP_PATH) {
|
|
19
|
+
try {
|
|
20
|
+
execFileSync(process.env.VOLUTE_RIPGREP_PATH, ["--version"], {
|
|
21
|
+
encoding: "utf-8",
|
|
22
|
+
timeout: 5e3
|
|
23
|
+
});
|
|
24
|
+
return process.env.VOLUTE_RIPGREP_PATH;
|
|
25
|
+
} catch {
|
|
26
|
+
slog.warn(
|
|
27
|
+
`VOLUTE_RIPGREP_PATH set to ${process.env.VOLUTE_RIPGREP_PATH} but binary not executable \u2014 falling back to system PATH`
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
return execFileSync("which", ["rg"], { encoding: "utf-8" }).trim() || null;
|
|
33
|
+
} catch {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
24
37
|
async function initSandbox() {
|
|
25
38
|
if (!isSandboxEnabled()) return;
|
|
26
39
|
try {
|
|
27
40
|
const { SandboxManager } = await import("@anthropic-ai/sandbox-runtime");
|
|
41
|
+
const rgPath = findRipgrep();
|
|
42
|
+
const ripgrepConfig = rgPath ? { command: rgPath } : void 0;
|
|
43
|
+
const { errors, warnings } = SandboxManager.checkDependencies(ripgrepConfig);
|
|
44
|
+
if (warnings.length > 0) {
|
|
45
|
+
slog.warn(`sandbox dependency warnings: ${warnings.join(", ")}`);
|
|
46
|
+
}
|
|
47
|
+
if (errors.length > 0) {
|
|
48
|
+
if (process.platform === "darwin") {
|
|
49
|
+
slog.warn(`sandbox dependency issues (non-fatal on macOS): ${errors.join(", ")}`);
|
|
50
|
+
} else {
|
|
51
|
+
slog.error(
|
|
52
|
+
`sandbox dependencies missing \u2014 minds will run without sandbox isolation: ${errors.join(", ")}`
|
|
53
|
+
);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
28
57
|
const config = {
|
|
29
58
|
network: {
|
|
30
59
|
allowedDomains: ["*"],
|
|
@@ -36,7 +65,8 @@ async function initSandbox() {
|
|
|
36
65
|
denyRead: [],
|
|
37
66
|
allowWrite: [],
|
|
38
67
|
denyWrite: []
|
|
39
|
-
}
|
|
68
|
+
},
|
|
69
|
+
...ripgrepConfig ? { ripgrep: ripgrepConfig } : {}
|
|
40
70
|
};
|
|
41
71
|
await SandboxManager.initialize(config);
|
|
42
72
|
sandboxManager = SandboxManager;
|
|
@@ -47,45 +77,33 @@ async function initSandbox() {
|
|
|
47
77
|
);
|
|
48
78
|
}
|
|
49
79
|
}
|
|
50
|
-
async function
|
|
51
|
-
const home = voluteHome();
|
|
80
|
+
async function buildSandboxReadConfig(_mindName, mindDir) {
|
|
52
81
|
const userHome = process.env.HOME || "";
|
|
53
|
-
const
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
82
|
+
const denyRead = [];
|
|
83
|
+
const allowRead = [mindDir];
|
|
84
|
+
if (userHome) {
|
|
85
|
+
denyRead.push(userHome);
|
|
86
|
+
} else {
|
|
87
|
+
slog.warn("$HOME is not set \u2014 sandbox read restrictions will be limited");
|
|
59
88
|
}
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const otherDir = resolve(mindsDir, entry.name);
|
|
65
|
-
if (otherDir !== mindDir) {
|
|
66
|
-
deny.push(otherDir);
|
|
67
|
-
}
|
|
89
|
+
if (process.env.VOLUTE_ISOLATION === "user") {
|
|
90
|
+
const usersDir = process.platform === "darwin" ? "/Users" : "/home";
|
|
91
|
+
if (!denyRead.includes(usersDir)) {
|
|
92
|
+
denyRead.push(usersDir);
|
|
68
93
|
}
|
|
69
|
-
} catch (err) {
|
|
70
|
-
slog.warn("failed to read minds registry for deny-read list", logger_default.errorData(err));
|
|
71
|
-
}
|
|
72
|
-
if (userHome) {
|
|
73
|
-
deny.push(resolve(userHome, ".ssh"));
|
|
74
|
-
deny.push(resolve(userHome, ".aws"));
|
|
75
|
-
deny.push(resolve(userHome, ".gnupg"));
|
|
76
|
-
deny.push(resolve(userHome, ".config"));
|
|
77
94
|
}
|
|
78
|
-
return
|
|
95
|
+
return { denyRead, allowRead };
|
|
79
96
|
}
|
|
80
97
|
function shellEscape(s) {
|
|
81
98
|
return `'${s.replace(/'/g, "'\\''")}'`;
|
|
82
99
|
}
|
|
83
100
|
async function wrapForSandbox(cmd, args, mindDir, mindName, allowWrite) {
|
|
84
101
|
if (!sandboxManager) return [cmd, args];
|
|
85
|
-
const denyRead = await
|
|
102
|
+
const { denyRead, allowRead } = await buildSandboxReadConfig(mindName, mindDir);
|
|
86
103
|
const customConfig = {
|
|
87
104
|
filesystem: {
|
|
88
105
|
denyRead,
|
|
106
|
+
allowRead,
|
|
89
107
|
allowWrite: allowWrite ?? [mindDir],
|
|
90
108
|
denyWrite: []
|
|
91
109
|
}
|
|
@@ -106,7 +124,7 @@ async function wrapForSandbox(cmd, args, mindDir, mindName, allowWrite) {
|
|
|
106
124
|
export {
|
|
107
125
|
isSandboxEnabled,
|
|
108
126
|
initSandbox,
|
|
109
|
-
|
|
127
|
+
buildSandboxReadConfig,
|
|
110
128
|
shellEscape,
|
|
111
129
|
wrapForSandbox
|
|
112
130
|
};
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import {
|
|
3
3
|
exec,
|
|
4
4
|
gitExec
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-OEXOFBW5.js";
|
|
6
6
|
import {
|
|
7
7
|
readGlobalConfig,
|
|
8
8
|
writeGlobalConfig
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-TCNCRDB5.js";
|
|
10
10
|
import {
|
|
11
11
|
logger_default
|
|
12
12
|
} from "./chunk-T2TP6ZC6.js";
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
mindDir,
|
|
16
16
|
readRegistry,
|
|
17
17
|
voluteHome
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-QDWP435B.js";
|
|
19
19
|
import {
|
|
20
20
|
sharedSkills
|
|
21
21
|
} from "./chunk-CJ26DXZL.js";
|
|
@@ -46,7 +46,7 @@ async function initDefaultSkills() {
|
|
|
46
46
|
const config = readGlobalConfig();
|
|
47
47
|
let extensionSkills = [];
|
|
48
48
|
try {
|
|
49
|
-
const { getExtensionStandardSkills } = await import("./extensions-
|
|
49
|
+
const { getExtensionStandardSkills } = await import("./extensions-V7TXKAKM.js");
|
|
50
50
|
extensionSkills = getExtensionStandardSkills();
|
|
51
51
|
} catch (err) {
|
|
52
52
|
logger_default.warn("failed to load extension standard skills during init", logger_default.errorData(err));
|
|
@@ -17,7 +17,7 @@ import { mkdirSync } from "fs";
|
|
|
17
17
|
import { homedir } from "os";
|
|
18
18
|
import { dirname, resolve } from "path";
|
|
19
19
|
import { fileURLToPath } from "url";
|
|
20
|
-
import { and, eq, isNull } from "drizzle-orm";
|
|
20
|
+
import { and, eq, inArray, isNull } from "drizzle-orm";
|
|
21
21
|
function voluteHome() {
|
|
22
22
|
if (process.env.VOLUTE_HOME) return process.env.VOLUTE_HOME;
|
|
23
23
|
const dir = dirname(fileURLToPath(import.meta.url));
|
|
@@ -61,7 +61,7 @@ function rowToEntry(row) {
|
|
|
61
61
|
}
|
|
62
62
|
async function readRegistry() {
|
|
63
63
|
const db2 = await getDb();
|
|
64
|
-
const rows = await db2.select().from(minds).where(and(isNull(minds.parent),
|
|
64
|
+
const rows = await db2.select().from(minds).where(and(isNull(minds.parent), inArray(minds.mind_type, ["mind", "spirit"])));
|
|
65
65
|
return rows.map(rowToEntry);
|
|
66
66
|
}
|
|
67
67
|
async function readAllMinds() {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
subscribe
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-7GZB3ZJP.js";
|
|
5
5
|
import {
|
|
6
6
|
logger_default
|
|
7
7
|
} from "./chunk-T2TP6ZC6.js";
|
|
8
8
|
import {
|
|
9
9
|
getDb
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-QDWP435B.js";
|
|
11
11
|
import {
|
|
12
12
|
channels,
|
|
13
13
|
conversationParticipants,
|