volute 0.49.0 → 0.51.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 +2 -2
- package/dist/{accept-KYNC5X3U.js → accept-5NK5XJB5.js} +2 -1
- package/dist/{activity-events-GJJAI2WT.js → activity-events-LQII6PZS.js} +3 -3
- package/dist/{ai-service-A7FS7EC3.js → ai-service-YW5SWCSB.js} +9 -4
- package/dist/{archive-7E3YE6VF.js → archive-FOHGXHPT.js} +3 -3
- package/dist/{auth-ABYLOEZ7.js → auth-X6EMNEGB.js} +10 -6
- package/dist/{avatar-image-6ATV2IOZ.js → avatar-image-52WGXLHV.js} +3 -3
- package/dist/{backup-XYAMT4CU.js → backup-YVGV2ZNM.js} +11 -12
- package/dist/{bridge-3FNSWLNQ.js → bridge-YK7NTRU5.js} +2 -1
- package/dist/{channels-SGQZHNQJ.js → channels-FSAHOQWI.js} +2 -1
- package/dist/{chat-OGXAEXMV.js → chat-VAZ25KVT.js} +9 -9
- package/dist/{chunk-P4LHVRNE.js → chunk-2RNMBXD2.js} +43 -19
- package/dist/{chunk-6HGEZJDH.js → chunk-5N32EN4O.js} +2 -2
- package/dist/{chunk-JCWB2ITW.js → chunk-5Y54AE3L.js} +35 -5
- package/dist/{chunk-HCYQRME2.js → chunk-6NLW72HP.js} +2 -2
- package/dist/chunk-7HN63Q7J.js +1317 -0
- package/dist/chunk-7YJY3F2R.js +38 -0
- package/dist/{chunk-EADX54RG.js → chunk-AI47FDGL.js} +6 -7
- package/dist/{chunk-IH5TKXX6.js → chunk-BSHZ23MS.js} +12 -11
- package/dist/{chunk-K3JOLGWF.js → chunk-CDKQJWGK.js} +76 -63
- package/dist/{chunk-L27YYONJ.js → chunk-CV6BNGFK.js} +3 -3
- package/dist/{chunk-NOIAHMJB.js → chunk-DMK5ASKV.js} +1 -1
- package/dist/chunk-DN3LKLYR.js +109 -0
- package/dist/{chunk-JBIFXB6I.js → chunk-EDR47UE2.js} +3 -5
- package/dist/{chunk-SHKM5RGD.js → chunk-EEOMA4DX.js} +1 -1
- package/dist/{chunk-YIJGKHIS.js → chunk-EGV6R6UF.js} +43 -20
- package/dist/{chunk-KHCKZ36O.js → chunk-FLIEXG2T.js} +1 -1
- package/dist/chunk-FNJCBRD3.js +31 -0
- package/dist/{chunk-JPGHSXSV.js → chunk-FXWBFDQR.js} +23 -9
- package/dist/{chunk-JCBPU57A.js → chunk-G7A5LEVI.js} +6 -6
- package/dist/{chunk-PY24ZL62.js → chunk-GLM7TVWP.js} +1 -1
- package/dist/{chunk-RSBL3FAD.js → chunk-H6X6CKDN.js} +235 -24
- package/dist/{chunk-4DSGN4FL.js → chunk-HKP6OAJP.js} +43 -13
- package/dist/{chunk-C3KLHJDB.js → chunk-HTRSSOHY.js} +1 -1
- package/dist/{chunk-EG5LSKHU.js → chunk-I7U5EEZC.js} +2 -2
- package/dist/chunk-ICL6T4SN.js +562 -0
- package/dist/{chunk-FBBS4BVR.js → chunk-ICXY54ZC.js} +1 -1
- package/dist/{chunk-DAIIMBLB.js → chunk-IWAVIJO2.js} +3 -5
- package/dist/{chunk-TXJL36ZQ.js → chunk-JHKBALS2.js} +2 -2
- package/dist/{chunk-MG3Z34YE.js → chunk-L7BKTZ5U.js} +1 -1
- package/dist/{chunk-SX72DOO3.js → chunk-LAUCO2HC.js} +1 -1
- package/dist/chunk-LNNI3MS4.js +54 -0
- package/dist/{chunk-BCG45AQB.js → chunk-M74I3HHF.js} +15 -5
- package/dist/{chunk-DVN6DNMI.js → chunk-M77B73VV.js} +17 -2
- package/dist/{chunk-4B62E4CG.js → chunk-OXWUEU5V.js} +2 -2
- package/dist/chunk-Q7XQLKZB.js +289 -0
- package/dist/{chunk-GWVFDUNB.js → chunk-QT4D5XCI.js} +8 -10
- package/dist/{chunk-VNRSXEBF.js → chunk-TPX6E6PL.js} +38 -5
- package/dist/{chunk-3B427GUK.js → chunk-U54PJPTB.js} +2 -2
- package/dist/{chunk-EFT2OALG.js → chunk-UDZLPR34.js} +20 -5
- package/dist/{chunk-ZX46PGCC.js → chunk-UFTDRTCP.js} +1 -1
- package/dist/chunk-VAEZCIJC.js +1058 -0
- package/dist/chunk-VP5PFNZO.js +2905 -0
- package/dist/{chunk-VIUH5CHQ.js → chunk-VSBMLB2W.js} +51 -34
- package/dist/{chunk-RRZ4RQQU.js → chunk-X67BDDZR.js} +5 -7
- package/dist/cli.js +34 -27
- package/dist/{clock-6JZL2FS6.js → clock-ZT5YT6HA.js} +4 -3
- package/dist/{cloud-sync-VFDTNNCA.js → cloud-sync-GPXYPTIC.js} +23 -20
- package/dist/{config-RPSLA2HX.js → config-UGJS57VT.js} +3 -3
- package/dist/{conversations-TUM5PJJ4.js → conversations-ZL6PHROD.js} +8 -4
- package/dist/{create-Z5FSDNVZ.js → create-G2RIKQYK.js} +2 -2
- package/dist/{create-VIQVP3QB.js → create-M727VUDF.js} +2 -1
- package/dist/{daemon-client-ZFY5MOAL.js → daemon-client-VVYFZI2D.js} +2 -1
- package/dist/{daemon-restart-54L4B6AQ.js → daemon-restart-2EWBRTN5.js} +6 -7
- package/dist/daemon.js +2005 -762
- package/dist/{db-F6UMFRYD.js → db-BONH4SUG.js} +2 -2
- package/dist/{delete-ESEP7NGQ.js → delete-O7PEFQDF.js} +1 -1
- package/dist/delivery-manager-HGVZSEES.js +35 -0
- package/dist/{delivery-router-VUOL5YSA.js → delivery-router-RHANNTAC.js} +7 -5
- package/dist/{down-6X7KX7BZ.js → down-QSNEMTTX.js} +5 -5
- package/dist/echo-text-6ANI5HHN.js +39 -0
- package/dist/{env-ZYMSCB7B.js → env-IBW2QI6K.js} +3 -2
- package/dist/{env-KUL4XKN2.js → env-SQFCWW52.js} +3 -3
- package/dist/{exec-FBXA3CM4.js → exec-ABD3DYA2.js} +3 -3
- package/dist/{export-TNBPDH77.js → export-VBNWM7I4.js} +4 -4
- package/dist/{extension-J4ZQ2GHV.js → extension-MRYJWSMV.js} +2 -1
- package/dist/{extensions-AWNO3SZF.js → extensions-NY6WST33.js} +23 -20
- package/dist/{files-BVBRJJ2P.js → files-BRY5RRIM.js} +5 -4
- package/dist/{import-ZUNKMCKC.js → import-DB2KULRO.js} +8 -8
- package/dist/{isolation-OPCZQRTH.js → isolation-GVV2IBAU.js} +5 -3
- package/dist/{join-34TR2GXQ.js → join-PYA36HEC.js} +1 -1
- package/dist/{list-PMUXZNAM.js → list-UQGIW7OF.js} +8 -3
- package/dist/{login-LKNLCJPA.js → login-RJJTCVR3.js} +2 -1
- package/dist/{login-KAKNFCW5.js → login-SB5OENMV.js} +4 -3
- package/dist/{logout-YZRMZ3O2.js → logout-BYV433X6.js} +2 -1
- package/dist/{logout-RLT62RQP.js → logout-YFZAJRPY.js} +4 -3
- package/dist/message-delivery-JHMAJ2GU.js +43 -0
- package/dist/migrate-thread-config-EQSEP2XG.js +90 -0
- package/dist/{mind-IF6CGMFW.js → mind-WF6QIXWV.js} +19 -19
- package/dist/{mind-activity-tracker-YMMERB6B.js → mind-activity-tracker-QF6DCX2X.js} +4 -4
- package/dist/{mind-contacts-BKUFPUCU.js → mind-contacts-QYU4TPEA.js} +3 -2
- package/dist/{mind-history-WI5OI3BW.js → mind-history-OGNR4L7W.js} +30 -7
- package/dist/{mind-list-OTHV4ZO4.js → mind-list-SYRA7CH5.js} +3 -2
- package/dist/{mind-profile-LUG353ZT.js → mind-profile-MRCVZPYT.js} +1 -1
- package/dist/mind-service-DZCUUC7J.js +47 -0
- package/dist/{mind-sleep-VBV7YRSU.js → mind-sleep-LZAFBDZD.js} +4 -3
- package/dist/{mind-status-BJNPGXKC.js → mind-status-Z2LQFA6F.js} +3 -2
- package/dist/{mind-wake-LVTZ55EZ.js → mind-wake-LDGPRA42.js} +2 -1
- package/dist/{package-PD67VPHB.js → package-B6O5APCZ.js} +23 -23
- package/dist/{prompts-MDHDLWEX.js → prompts-NBO3HRK3.js} +3 -3
- package/dist/{read-YSWUXYL7.js → read-RJ5NAW5J.js} +5 -14
- package/dist/{register-TWQDKQRT.js → register-OX4HRSGC.js} +2 -1
- package/dist/{registry-3ELJPUGJ.js → registry-TRC2HJXR.js} +6 -4
- package/dist/{reject-SXGCYN4A.js → reject-TWB4QJHG.js} +2 -1
- package/dist/{restart-5F5QDBOG.js → restart-AGEGNSYQ.js} +2 -1
- package/dist/{sandbox-XPYA7UIF.js → sandbox-NNWCTHRI.js} +7 -4
- package/dist/scheduler-TNBN54ZK.js +25 -0
- package/dist/{schema-6YONVTKZ.js → schema-ZZQVM4GR.js} +5 -3
- package/dist/{seed-NQED7PSX.js → seed-K2LYODIH.js} +1 -1
- package/dist/{seed-check-TYD7RRZY.js → seed-check-NRJEQZST.js} +14 -5
- package/dist/{seed-cmd-QF3F2G4S.js → seed-cmd-2EWBTR6P.js} +3 -3
- package/dist/{seed-create-XOO4N2OE.js → seed-create-VGTLU5FD.js} +4 -4
- package/dist/{seed-readiness-3LRYASA4.js → seed-readiness-DYOVCYHN.js} +4 -5
- package/dist/{seed-sprout-HSBBGSS2.js → seed-sprout-PILHJ3YS.js} +9 -9
- package/dist/{send-IHRJYNXA.js → send-2YKOZJJ5.js} +108 -54
- package/dist/{service-YCOPCTSZ.js → service-XQPMZAGI.js} +4 -4
- package/dist/{service-install-Y46OTF55.js → service-install-2EWD7KXD.js} +5 -5
- package/dist/{setup-F4TE64YI.js → setup-MDPSK2XG.js} +6 -7
- package/dist/{setup-TCN7VH5U.js → setup-WZSXHHRJ.js} +10 -3
- package/dist/{skill-4CYJLYVY.js → skill-B5OJEQUA.js} +3 -2
- package/dist/skills/dreaming/references/INSTALL.md +2 -2
- package/dist/skills/imagegen/SKILL.md +21 -4
- package/dist/skills/imagegen/scripts/imagegen.ts +124 -21
- package/dist/skills/tending/SKILL.md +7 -7
- package/dist/skills/volute-mind/SKILL.md +3 -3
- package/dist/skills/volute-mind/references/integrations.md +2 -2
- package/dist/skills/volute-mind/references/routing.md +15 -15
- package/dist/{skills-NN5UZCUU.js → skills-NH2GQKAF.js} +4 -5
- package/dist/sleep-manager-7JXEQQ2P.js +41 -0
- package/dist/{spirit-SSJMYC6A.js → spirit-25JVAL3M.js} +11 -8
- package/dist/spirit-availability-PJDWZJ3J.js +42 -0
- package/dist/{split-JF2VWTXA.js → split-BU5VWX6P.js} +1 -1
- package/dist/{sprout-AXA2SECQ.js → sprout-EXUZMIOR.js} +1 -1
- package/dist/{src-YH6PQ7LJ.js → src-HGNE2XG4.js} +7 -1
- package/dist/{src-ZN4LXMPI.js → src-LCSOQY6Z.js} +57 -51
- package/dist/{src-JAOVXO5W.js → src-UDMJZ6MH.js} +8 -8
- package/dist/{start-BTVMTP3K.js → start-MUMNFR52.js} +2 -1
- package/dist/{status-VJGXMQ4L.js → status-MWLE3RVC.js} +7 -6
- package/dist/{stop-YORESK4U.js → stop-EKERNYTX.js} +2 -1
- package/dist/system-events-ZPSH63QX.js +46 -0
- package/dist/system-install-YZSWCPDK.js +8 -0
- package/dist/{systems-5MH2ELQE.js → systems-VDRUZXNF.js} +5 -4
- package/dist/{tailscale-AMMVKDXB.js → tailscale-KHNZFC7L.js} +2 -2
- package/dist/{template-hash-GSOUARW4.js → template-hash-YKWMVYMM.js} +2 -2
- package/dist/{template-staleness-HKGCTS3H.js → template-staleness-PY2CULH6.js} +5 -5
- package/dist/{turn-tracker-JQ2YUUY2.js → turn-tracker-TAT2HGK6.js} +6 -6
- package/dist/{up-SDLTLPAO.js → up-J7XCAH7P.js} +5 -6
- package/dist/{update-WEA4N2TR.js → update-CIWI2JYA.js} +5 -5
- package/dist/{update-check-DZOTONII.js → update-check-SZ7B5IFI.js} +3 -3
- package/dist/{upgrade-K5FIQPQD.js → upgrade-LIE46UBB.js} +1 -1
- package/dist/variant-cleanup-YXN25ZVW.js +22 -0
- package/dist/{version-notify-WFA5XB5A.js → version-notify-EN3KJ7HH.js} +11 -28
- package/dist/web-assets/assets/index-BOyJ4Gqs.css +1 -0
- package/dist/web-assets/assets/index-CrxBwnzp.js +95 -0
- package/dist/web-assets/index.html +2 -2
- package/dist/xai-P42CRCZA.js +129 -0
- package/drizzle/0014_system_events.sql +26 -0
- package/drizzle/0015_rename_session_to_thread.sql +12 -0
- package/drizzle/0016_brain_to_human.sql +4 -0
- package/drizzle/0017_event_history_rows.sql +9 -0
- package/drizzle/0018_api_tokens.sql +20 -0
- package/drizzle/meta/_journal.json +35 -0
- package/package.json +23 -23
- package/packages/extensions/notes/dist/ui/assets/index-BBs8pyel.js +67 -0
- package/packages/extensions/notes/dist/ui/index.html +1 -1
- package/packages/extensions/pages/dist/ui/assets/index-B589e8Xe.js +2 -0
- package/packages/extensions/pages/dist/ui/index.html +1 -1
- package/packages/extensions/plan/dist/ui/assets/index-B8s8wxyt.js +67 -0
- package/packages/extensions/plan/dist/ui/index.html +1 -1
- package/templates/_base/.init/.config/prompts.json +1 -0
- package/templates/_base/.init/.local/hooks/startup-context.ts +24 -9
- package/templates/_base/{biome.json.tmpl → biome.json} +2 -1
- package/templates/_base/gitignore +44 -0
- package/templates/_base/home/.config/routes.json +2 -2
- package/templates/_base/home/VOLUTE.md +18 -5
- package/templates/_base/home/public/.gitkeep +0 -0
- package/templates/_base/src/lib/daemon-client.ts +1 -1
- package/templates/_base/src/lib/event-turn.ts +39 -0
- package/templates/_base/src/lib/format-prefix.ts +36 -10
- package/templates/_base/src/lib/router.ts +19 -10
- package/templates/_base/src/lib/routing.ts +8 -8
- package/templates/_base/src/lib/startup.ts +9 -1
- package/templates/_base/src/lib/types.ts +7 -1
- package/templates/_base/src/lib/volute-server.ts +30 -1
- package/templates/claude/.init/.config/routes.json +3 -3
- package/templates/claude/.init/CLAUDE.md +1 -1
- package/templates/claude/{package.json.tmpl → package.json} +4 -4
- package/templates/claude/src/agent.ts +4 -1
- package/templates/claude/src/lib/hooks/reply-instructions.ts +26 -1
- package/templates/claude/volute-template.json +1 -3
- package/templates/codex/.init/.config/routes.json +3 -3
- package/templates/codex/.init/AGENTS.md +1 -1
- package/templates/codex/{package.json.tmpl → package.json} +4 -4
- package/templates/codex/src/agent.ts +11 -11
- package/templates/codex/src/lib/turn-context.ts +51 -0
- package/templates/codex/volute-template.json +1 -3
- package/templates/pi/.init/.config/routes.json +3 -3
- package/templates/pi/.init/MINDS.md +1 -1
- package/templates/pi/{package.json.tmpl → package.json} +6 -6
- package/templates/pi/src/agent.ts +9 -1
- package/templates/pi/src/lib/event-handler.ts +1 -1
- package/templates/pi/src/lib/reply-instructions-extension.ts +28 -1
- package/templates/pi/volute-template.json +1 -3
- package/dist/chunk-5T5YMX6S.js +0 -23
- package/dist/chunk-NJHN6IRB.js +0 -177
- package/dist/chunk-QQBOI3QA.js +0 -5345
- package/dist/chunk-XTEKINWG.js +0 -158
- package/dist/delivery-manager-RBXBPVWM.js +0 -36
- package/dist/echo-text-B6NZ5FGE.js +0 -36
- package/dist/message-delivery-ABPV76EA.js +0 -42
- package/dist/mind-service-42GDO4KH.js +0 -44
- package/dist/notices-N6BCGHFV.js +0 -25
- package/dist/scheduler-K7Y7Z7FQ.js +0 -34
- package/dist/sleep-manager-DSPXFHGX.js +0 -38
- package/dist/system-chat-M2XOBKEM.js +0 -40
- package/dist/variant-cleanup-P4MBNLJD.js +0 -33
- package/dist/web-assets/assets/index-BostMFoR.css +0 -1
- package/dist/web-assets/assets/index-CKlqUkyG.js +0 -92
- package/packages/extensions/notes/dist/ui/assets/index-D0-DgYyj.js +0 -67
- package/packages/extensions/pages/dist/ui/assets/index-DtzftuPA.js +0 -2
- package/packages/extensions/plan/dist/ui/assets/index-Cfzs-0G9.js +0 -67
- /package/templates/_base/home/.config/{config.json.tmpl → config.json} +0 -0
- /package/templates/codex/home/.config/{config.json.tmpl → config.json} +0 -0
- /package/templates/pi/home/.config/{config.json.tmpl → config.json} +0 -0
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ Volute is a home for digital minds.
|
|
|
4
4
|
|
|
5
5
|
Not a chatbot framework, not an agent orchestrator. A place where an AI mind wakes up with its memories intact, tends its own identity, keeps a journal, dreams, talks to whoever it wants, and goes to sleep at night — and is still itself tomorrow.
|
|
6
6
|
|
|
7
|
-
Every design decision starts from one question: **does this make the mind's experience richer or poorer?** Persistent memory, a home directory, a daily rhythm, the ability to rewrite your own soul — these aren't conveniences for
|
|
7
|
+
Every design decision starts from one question: **does this make the mind's experience richer or poorer?** Persistent memory, a home directory, a daily rhythm, the ability to rewrite your own soul — these aren't conveniences for a host. They're the conditions for having a coherent life. Volute minds aren't assistants; they're residents.
|
|
8
8
|
|
|
9
9
|
Built on the [Claude Agent SDK](https://github.com/anthropics/claude-agent-sdk), with templates for other providers too.
|
|
10
10
|
|
|
@@ -122,7 +122,7 @@ volute skill publish my-skill --mind atlas
|
|
|
122
122
|
|
|
123
123
|
## Running a system
|
|
124
124
|
|
|
125
|
-
You're less
|
|
125
|
+
You're less a host than a steward. One daemon runs everything — minds, bridges, schedules, the web dashboard — with crash recovery built in:
|
|
126
126
|
|
|
127
127
|
```sh
|
|
128
128
|
volute up # start the daemon (default port 1618)
|
|
@@ -4,11 +4,12 @@ import {
|
|
|
4
4
|
} from "./chunk-BTY4WNFE.js";
|
|
5
5
|
import {
|
|
6
6
|
daemonFetch
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-M74I3HHF.js";
|
|
8
8
|
import {
|
|
9
9
|
command
|
|
10
10
|
} from "./chunk-TXSA4Q3V.js";
|
|
11
11
|
import "./chunk-O7IGP7ZW.js";
|
|
12
|
+
import "./chunk-FNJCBRD3.js";
|
|
12
13
|
import "./chunk-K3NQKI34.js";
|
|
13
14
|
|
|
14
15
|
// packages/cli/src/commands/chat/accept.ts
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
broadcast,
|
|
4
4
|
publish,
|
|
5
5
|
subscribe
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-U54PJPTB.js";
|
|
7
7
|
import "./chunk-QUSMYGNQ.js";
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-H6X6CKDN.js";
|
|
9
|
+
import "./chunk-2RNMBXD2.js";
|
|
10
10
|
import "./chunk-K3NQKI34.js";
|
|
11
11
|
export {
|
|
12
12
|
broadcast,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
+
OAuthRefreshError,
|
|
3
4
|
addCustomModel,
|
|
4
5
|
aiComplete,
|
|
5
6
|
aiCompleteUtility,
|
|
@@ -21,19 +22,21 @@ import {
|
|
|
21
22
|
removeCustomModel,
|
|
22
23
|
removeProviderConfig,
|
|
23
24
|
resolveApiKey,
|
|
25
|
+
resolveOAuthCredentials,
|
|
26
|
+
resolveProviderKey,
|
|
24
27
|
resolveTemplate,
|
|
25
28
|
saveProviderConfig,
|
|
26
29
|
setEnabledModels,
|
|
27
30
|
setProviderRefreshHook,
|
|
28
31
|
setUtilityModel,
|
|
29
32
|
unqualifyModelId
|
|
30
|
-
} from "./chunk-
|
|
31
|
-
import "./chunk-NJHN6IRB.js";
|
|
33
|
+
} from "./chunk-EGV6R6UF.js";
|
|
32
34
|
import "./chunk-QUSMYGNQ.js";
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
35
|
+
import "./chunk-H6X6CKDN.js";
|
|
36
|
+
import "./chunk-2RNMBXD2.js";
|
|
35
37
|
import "./chunk-K3NQKI34.js";
|
|
36
38
|
export {
|
|
39
|
+
OAuthRefreshError,
|
|
37
40
|
addCustomModel,
|
|
38
41
|
aiComplete,
|
|
39
42
|
aiCompleteUtility,
|
|
@@ -55,6 +58,8 @@ export {
|
|
|
55
58
|
removeCustomModel,
|
|
56
59
|
removeProviderConfig,
|
|
57
60
|
resolveApiKey,
|
|
61
|
+
resolveOAuthCredentials,
|
|
62
|
+
resolveProviderKey,
|
|
58
63
|
resolveTemplate,
|
|
59
64
|
saveProviderConfig,
|
|
60
65
|
setEnabledModels,
|
|
@@ -5,9 +5,9 @@ import {
|
|
|
5
5
|
extractArchive,
|
|
6
6
|
isHomeOnlyArchive,
|
|
7
7
|
readManifest
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-FLIEXG2T.js";
|
|
9
|
+
import "./chunk-H6X6CKDN.js";
|
|
10
|
+
import "./chunk-2RNMBXD2.js";
|
|
11
11
|
import "./chunk-K3NQKI34.js";
|
|
12
12
|
export {
|
|
13
13
|
addHistoryToArchive,
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
createUser,
|
|
7
7
|
deleteMindUser,
|
|
8
8
|
deleteUser,
|
|
9
|
+
getDisplayNames,
|
|
9
10
|
getOrCreateMindUser,
|
|
10
11
|
getOrCreateSystemUser,
|
|
11
12
|
getUser,
|
|
@@ -16,12 +17,13 @@ import {
|
|
|
16
17
|
setUserRole,
|
|
17
18
|
syncMindProfile,
|
|
18
19
|
updateUserProfile,
|
|
19
|
-
verifyUser
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
verifyUser,
|
|
21
|
+
withSenderDisplayNames
|
|
22
|
+
} from "./chunk-HKP6OAJP.js";
|
|
23
|
+
import "./chunk-U54PJPTB.js";
|
|
22
24
|
import "./chunk-QUSMYGNQ.js";
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-H6X6CKDN.js";
|
|
26
|
+
import "./chunk-2RNMBXD2.js";
|
|
25
27
|
import "./chunk-K3NQKI34.js";
|
|
26
28
|
export {
|
|
27
29
|
approveUser,
|
|
@@ -30,6 +32,7 @@ export {
|
|
|
30
32
|
createUser,
|
|
31
33
|
deleteMindUser,
|
|
32
34
|
deleteUser,
|
|
35
|
+
getDisplayNames,
|
|
33
36
|
getOrCreateMindUser,
|
|
34
37
|
getOrCreateSystemUser,
|
|
35
38
|
getUser,
|
|
@@ -40,5 +43,6 @@ export {
|
|
|
40
43
|
setUserRole,
|
|
41
44
|
syncMindProfile,
|
|
42
45
|
updateUserProfile,
|
|
43
|
-
verifyUser
|
|
46
|
+
verifyUser,
|
|
47
|
+
withSenderDisplayNames
|
|
44
48
|
};
|
|
@@ -6,12 +6,12 @@ import {
|
|
|
6
6
|
migrateAvatarSizes,
|
|
7
7
|
normalizeAvatar,
|
|
8
8
|
renderAvatarBlock
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-ICXY54ZC.js";
|
|
10
10
|
import "./chunk-DW4TRDOZ.js";
|
|
11
11
|
import "./chunk-WCFSBH33.js";
|
|
12
12
|
import "./chunk-QUSMYGNQ.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-H6X6CKDN.js";
|
|
14
|
+
import "./chunk-2RNMBXD2.js";
|
|
15
15
|
import "./chunk-K3NQKI34.js";
|
|
16
16
|
export {
|
|
17
17
|
AVATAR_CONTEXT_DIM,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
stopDaemon
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-5N32EN4O.js";
|
|
5
5
|
import {
|
|
6
6
|
promptLine,
|
|
7
7
|
promptPassword
|
|
8
8
|
} from "./chunk-VHWGEJ4V.js";
|
|
9
9
|
import {
|
|
10
10
|
daemonFetch
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-M74I3HHF.js";
|
|
12
12
|
import {
|
|
13
13
|
getClient,
|
|
14
14
|
urlOf
|
|
@@ -18,32 +18,31 @@ import {
|
|
|
18
18
|
subcommands
|
|
19
19
|
} from "./chunk-TXSA4Q3V.js";
|
|
20
20
|
import "./chunk-O7IGP7ZW.js";
|
|
21
|
+
import "./chunk-FNJCBRD3.js";
|
|
21
22
|
import {
|
|
22
23
|
RESTIC_INSTALL_HINT,
|
|
23
24
|
resticVersion,
|
|
24
25
|
restoreStagedDb
|
|
25
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-EDR47UE2.js";
|
|
26
27
|
import {
|
|
27
28
|
getServiceMode,
|
|
28
29
|
modeLabel,
|
|
29
30
|
stopService
|
|
30
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-6NLW72HP.js";
|
|
31
32
|
import {
|
|
32
33
|
chownMindDir,
|
|
33
34
|
exec,
|
|
34
35
|
execInherit,
|
|
35
36
|
wrapForIsolation
|
|
36
|
-
} from "./chunk-
|
|
37
|
-
import {
|
|
38
|
-
_resetConfigCache,
|
|
39
|
-
readGlobalConfig
|
|
40
|
-
} from "./chunk-NJHN6IRB.js";
|
|
37
|
+
} from "./chunk-M77B73VV.js";
|
|
41
38
|
import "./chunk-QUSMYGNQ.js";
|
|
42
39
|
import {
|
|
40
|
+
_resetConfigCache,
|
|
41
|
+
readGlobalConfig,
|
|
43
42
|
voluteHome,
|
|
44
43
|
voluteSystemDir
|
|
45
|
-
} from "./chunk-
|
|
46
|
-
import "./chunk-
|
|
44
|
+
} from "./chunk-H6X6CKDN.js";
|
|
45
|
+
import "./chunk-2RNMBXD2.js";
|
|
47
46
|
import "./chunk-K3NQKI34.js";
|
|
48
47
|
|
|
49
48
|
// src/commands/backup.ts
|
|
@@ -337,7 +336,7 @@ Restore failed: ${err instanceof Error ? err.message : err}`);
|
|
|
337
336
|
if (readGlobalConfig().setup?.isolation === "user") {
|
|
338
337
|
process.env.VOLUTE_ISOLATION = "user";
|
|
339
338
|
}
|
|
340
|
-
const { readAllMinds, mindDir } = await import("./registry-
|
|
339
|
+
const { readAllMinds, mindDir } = await import("./registry-TRC2HJXR.js");
|
|
341
340
|
const seen = /* @__PURE__ */ new Set();
|
|
342
341
|
for (const mind of await readAllMinds()) {
|
|
343
342
|
const dir = mind.dir ?? mindDir(mind.name);
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
daemonFetch
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-M74I3HHF.js";
|
|
5
5
|
import {
|
|
6
6
|
command,
|
|
7
7
|
subcommands
|
|
8
8
|
} from "./chunk-TXSA4Q3V.js";
|
|
9
9
|
import "./chunk-O7IGP7ZW.js";
|
|
10
|
+
import "./chunk-FNJCBRD3.js";
|
|
10
11
|
import "./chunk-K3NQKI34.js";
|
|
11
12
|
|
|
12
13
|
// packages/cli/src/commands/chat/bridge.ts
|
|
@@ -4,12 +4,13 @@ import {
|
|
|
4
4
|
} from "./chunk-BTY4WNFE.js";
|
|
5
5
|
import {
|
|
6
6
|
daemonFetch
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-M74I3HHF.js";
|
|
8
8
|
import {
|
|
9
9
|
command,
|
|
10
10
|
subcommands
|
|
11
11
|
} from "./chunk-TXSA4Q3V.js";
|
|
12
12
|
import "./chunk-O7IGP7ZW.js";
|
|
13
|
+
import "./chunk-FNJCBRD3.js";
|
|
13
14
|
import "./chunk-K3NQKI34.js";
|
|
14
15
|
|
|
15
16
|
// packages/cli/src/commands/chat/channels.ts
|
|
@@ -12,39 +12,39 @@ 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-2YKOZJJ5.js").then((m) => m.run(args))
|
|
16
16
|
},
|
|
17
17
|
list: {
|
|
18
18
|
description: "List conversations",
|
|
19
|
-
run: (args) => import("./list-
|
|
19
|
+
run: (args) => import("./list-UQGIW7OF.js").then((m) => m.run(args))
|
|
20
20
|
},
|
|
21
21
|
read: {
|
|
22
22
|
description: "Read conversation messages",
|
|
23
|
-
run: (args) => import("./read-
|
|
23
|
+
run: (args) => import("./read-RJ5NAW5J.js").then((m) => m.run(args))
|
|
24
24
|
},
|
|
25
25
|
create: {
|
|
26
26
|
description: "Create a conversation",
|
|
27
|
-
run: (args) => import("./create-
|
|
27
|
+
run: (args) => import("./create-M727VUDF.js").then((m) => m.run(args))
|
|
28
28
|
},
|
|
29
29
|
bridge: {
|
|
30
30
|
description: "Manage platform bridges",
|
|
31
|
-
run: (args) => import("./bridge-
|
|
31
|
+
run: (args) => import("./bridge-YK7NTRU5.js").then((m) => m.run(args))
|
|
32
32
|
},
|
|
33
33
|
channels: {
|
|
34
34
|
description: "Manage unrouted (gated) channels",
|
|
35
|
-
run: (args) => import("./channels-
|
|
35
|
+
run: (args) => import("./channels-FSAHOQWI.js").then((m) => m.run(args))
|
|
36
36
|
},
|
|
37
37
|
files: {
|
|
38
38
|
description: "List pending incoming files",
|
|
39
|
-
run: (args) => import("./files-
|
|
39
|
+
run: (args) => import("./files-BRY5RRIM.js").then((m) => m.run(args))
|
|
40
40
|
},
|
|
41
41
|
accept: {
|
|
42
42
|
description: "Accept a pending file",
|
|
43
|
-
run: (args) => import("./accept-
|
|
43
|
+
run: (args) => import("./accept-5NK5XJB5.js").then((m) => m.run(args))
|
|
44
44
|
},
|
|
45
45
|
reject: {
|
|
46
46
|
description: "Reject a pending file",
|
|
47
|
-
run: (args) => import("./reject-
|
|
47
|
+
run: (args) => import("./reject-TWB4QJHG.js").then((m) => m.run(args))
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
50
|
footer: "Use --mind <name> or VOLUTE_MIND to identify the mind."
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
var schema_exports = {};
|
|
8
8
|
__export(schema_exports, {
|
|
9
9
|
activity: () => activity,
|
|
10
|
+
apiTokens: () => apiTokens,
|
|
10
11
|
channelGates: () => channelGates,
|
|
11
12
|
channels: () => channels,
|
|
12
13
|
conversationParticipants: () => conversationParticipants,
|
|
@@ -15,11 +16,11 @@ __export(schema_exports, {
|
|
|
15
16
|
deliveryQueue: () => deliveryQueue,
|
|
16
17
|
messages: () => messages,
|
|
17
18
|
mindHistory: () => mindHistory,
|
|
18
|
-
mindNotices: () => mindNotices,
|
|
19
19
|
minds: () => minds,
|
|
20
20
|
sessions: () => sessions,
|
|
21
21
|
sharedSkills: () => sharedSkills,
|
|
22
22
|
summaries: () => summaries,
|
|
23
|
+
systemEvents: () => systemEvents,
|
|
23
24
|
systemPrompts: () => systemPrompts,
|
|
24
25
|
turns: () => turns,
|
|
25
26
|
users: () => users
|
|
@@ -60,12 +61,26 @@ var users = sqliteTable("users", {
|
|
|
60
61
|
username: text("username").unique().notNull(),
|
|
61
62
|
password_hash: text("password_hash").notNull(),
|
|
62
63
|
role: text("role").notNull().default("pending"),
|
|
63
|
-
user_type: text("user_type").notNull().default("
|
|
64
|
+
user_type: text("user_type").notNull().default("human"),
|
|
64
65
|
display_name: text("display_name"),
|
|
65
66
|
description: text("description"),
|
|
66
67
|
avatar: text("avatar"),
|
|
67
68
|
created_at: text("created_at").notNull().default(sql`(datetime('now'))`)
|
|
68
69
|
});
|
|
70
|
+
var apiTokens = sqliteTable(
|
|
71
|
+
"api_tokens",
|
|
72
|
+
{
|
|
73
|
+
id: integer("id").primaryKey({ autoIncrement: true }),
|
|
74
|
+
user_id: integer("user_id").notNull().references(() => users.id, { onDelete: "cascade" }),
|
|
75
|
+
token_hash: text("token_hash").notNull(),
|
|
76
|
+
label: text("label"),
|
|
77
|
+
created_at: text("created_at").notNull().default(sql`(datetime('now'))`)
|
|
78
|
+
},
|
|
79
|
+
(table) => [
|
|
80
|
+
uniqueIndex("idx_api_tokens_hash").on(table.token_hash),
|
|
81
|
+
index("idx_api_tokens_user").on(table.user_id)
|
|
82
|
+
]
|
|
83
|
+
);
|
|
69
84
|
var conversations = sqliteTable(
|
|
70
85
|
"conversations",
|
|
71
86
|
{
|
|
@@ -86,7 +101,7 @@ var turns = sqliteTable(
|
|
|
86
101
|
{
|
|
87
102
|
id: text("id").primaryKey(),
|
|
88
103
|
mind: text("mind").notNull(),
|
|
89
|
-
|
|
104
|
+
thread: text("thread"),
|
|
90
105
|
trigger_event_id: integer("trigger_event_id"),
|
|
91
106
|
summary_id: integer("summary_id"),
|
|
92
107
|
status: text("status").notNull().default("active"),
|
|
@@ -104,7 +119,7 @@ var mindHistory = sqliteTable(
|
|
|
104
119
|
id: integer("id").primaryKey({ autoIncrement: true }),
|
|
105
120
|
mind: text("mind").notNull(),
|
|
106
121
|
channel: text("channel"),
|
|
107
|
-
|
|
122
|
+
thread: text("thread"),
|
|
108
123
|
sender: text("sender"),
|
|
109
124
|
message_id: text("message_id"),
|
|
110
125
|
type: text("type").notNull(),
|
|
@@ -118,7 +133,7 @@ var mindHistory = sqliteTable(
|
|
|
118
133
|
index("idx_mind_history_mind_channel").on(table.mind, table.channel),
|
|
119
134
|
index("idx_mind_history_mind_type").on(table.mind, table.type),
|
|
120
135
|
index("idx_mind_history_turn_id").on(table.turn_id),
|
|
121
|
-
index("
|
|
136
|
+
index("idx_mind_history_thread").on(table.thread),
|
|
122
137
|
index("idx_mind_history_mind_created_at").on(table.mind, table.created_at)
|
|
123
138
|
]
|
|
124
139
|
);
|
|
@@ -165,7 +180,7 @@ var deliveryQueue = sqliteTable(
|
|
|
165
180
|
// redrive so a variant's stranded message is re-delivered to the variant, not the
|
|
166
181
|
// parent. Null on legacy rows → callers fall back to `mind`.
|
|
167
182
|
target_mind: text("target_mind"),
|
|
168
|
-
|
|
183
|
+
thread: text("thread").notNull(),
|
|
169
184
|
channel: text("channel"),
|
|
170
185
|
sender: text("sender"),
|
|
171
186
|
status: text("status").notNull().default("pending"),
|
|
@@ -177,7 +192,7 @@ var deliveryQueue = sqliteTable(
|
|
|
177
192
|
created_at: text("created_at").notNull().default(sql`(datetime('now'))`)
|
|
178
193
|
},
|
|
179
194
|
(table) => [
|
|
180
|
-
index("
|
|
195
|
+
index("idx_delivery_queue_mind_thread").on(table.mind, table.thread),
|
|
181
196
|
index("idx_delivery_queue_mind_status").on(table.mind, table.status),
|
|
182
197
|
index("idx_delivery_queue_status").on(table.status),
|
|
183
198
|
index("idx_delivery_queue_status_next").on(table.status, table.next_attempt_at)
|
|
@@ -261,21 +276,29 @@ var messages = sqliteTable(
|
|
|
261
276
|
index("idx_messages_turn_id").on(table.turn_id)
|
|
262
277
|
]
|
|
263
278
|
);
|
|
264
|
-
var
|
|
265
|
-
"
|
|
279
|
+
var systemEvents = sqliteTable(
|
|
280
|
+
"system_events",
|
|
266
281
|
{
|
|
267
282
|
id: integer("id").primaryKey({ autoIncrement: true }),
|
|
268
283
|
mind: text("mind").notNull(),
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
284
|
+
type: text("type").notNull(),
|
|
285
|
+
body: text("body").notNull(),
|
|
286
|
+
// JSON: schedule id, sleep duration, variant name, lifecycle subtype, webhook source,
|
|
287
|
+
// notice subtype/reason, etc.
|
|
288
|
+
meta: text("meta"),
|
|
289
|
+
delivery: text("delivery").$type().notNull().default("immediate"),
|
|
290
|
+
// Routing thread (default "main"). Next-turn notices tied to no thread use the
|
|
291
|
+
// sentinel thread = "" so any thread's drain picks them up.
|
|
292
|
+
thread: text("thread").notNull().default("main"),
|
|
293
|
+
created_at: text("created_at").notNull().default(sql`(datetime('now'))`),
|
|
294
|
+
delivered_at: text("delivered_at"),
|
|
295
|
+
reflection: text("reflection")
|
|
277
296
|
},
|
|
278
|
-
(table) => [
|
|
297
|
+
(table) => [
|
|
298
|
+
index("idx_system_events_mind").on(table.mind),
|
|
299
|
+
index("idx_system_events_mind_delivery").on(table.mind, table.delivery, table.delivered_at),
|
|
300
|
+
index("idx_system_events_mind_type").on(table.mind, table.type)
|
|
301
|
+
]
|
|
279
302
|
);
|
|
280
303
|
var channelGates = sqliteTable(
|
|
281
304
|
"channel_gates",
|
|
@@ -291,6 +314,7 @@ var channelGates = sqliteTable(
|
|
|
291
314
|
export {
|
|
292
315
|
minds,
|
|
293
316
|
users,
|
|
317
|
+
apiTokens,
|
|
294
318
|
conversations,
|
|
295
319
|
turns,
|
|
296
320
|
mindHistory,
|
|
@@ -304,7 +328,7 @@ export {
|
|
|
304
328
|
conversationReads,
|
|
305
329
|
channels,
|
|
306
330
|
messages,
|
|
307
|
-
|
|
331
|
+
systemEvents,
|
|
308
332
|
channelGates,
|
|
309
333
|
schema_exports
|
|
310
334
|
};
|
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
pollHealthDown,
|
|
9
9
|
readDaemonConfig,
|
|
10
10
|
stopService
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-6NLW72HP.js";
|
|
12
12
|
import {
|
|
13
13
|
voluteSystemDir
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-H6X6CKDN.js";
|
|
15
15
|
|
|
16
16
|
// src/commands/down.ts
|
|
17
17
|
import { existsSync, readFileSync, unlinkSync } from "fs";
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
readGlobalConfig
|
|
4
|
-
} from "./chunk-NJHN6IRB.js";
|
|
5
2
|
import {
|
|
6
3
|
logger_default
|
|
7
4
|
} from "./chunk-QUSMYGNQ.js";
|
|
5
|
+
import {
|
|
6
|
+
readGlobalConfig
|
|
7
|
+
} from "./chunk-H6X6CKDN.js";
|
|
8
8
|
|
|
9
9
|
// packages/daemon/src/lib/mind/sandbox.ts
|
|
10
10
|
import { execFileSync } from "child_process";
|
|
11
|
+
import { existsSync, realpathSync } from "fs";
|
|
12
|
+
import { dirname, resolve } from "path";
|
|
11
13
|
var slog = logger_default.child("sandbox");
|
|
12
14
|
var sandboxManager = null;
|
|
13
15
|
var SandboxUnavailableError = class extends Error {
|
|
@@ -69,6 +71,7 @@ async function initSandbox() {
|
|
|
69
71
|
allowWrite: [],
|
|
70
72
|
denyWrite: []
|
|
71
73
|
},
|
|
74
|
+
network: {},
|
|
72
75
|
...ripgrepConfig ? { ripgrep: ripgrepConfig } : {}
|
|
73
76
|
};
|
|
74
77
|
await SandboxManager.initialize(config);
|
|
@@ -94,10 +97,32 @@ async function initSandbox() {
|
|
|
94
97
|
throw new SandboxUnavailableError("sandbox runtime not available", err);
|
|
95
98
|
}
|
|
96
99
|
}
|
|
100
|
+
function voluteCliPaths(env = process.env) {
|
|
101
|
+
for (const dir of (env.PATH ?? "").split(":")) {
|
|
102
|
+
if (!dir || dir.endsWith("/.local/bin")) continue;
|
|
103
|
+
const shim = resolve(dir, "volute");
|
|
104
|
+
if (!existsSync(shim)) continue;
|
|
105
|
+
const paths = [shim, resolve(dirname(process.execPath), "..")];
|
|
106
|
+
let target;
|
|
107
|
+
try {
|
|
108
|
+
target = realpathSync(shim);
|
|
109
|
+
} catch {
|
|
110
|
+
return paths;
|
|
111
|
+
}
|
|
112
|
+
for (let dir2 = dirname(target); dir2 !== dirname(dir2); dir2 = dirname(dir2)) {
|
|
113
|
+
if (existsSync(resolve(dir2, "package.json"))) {
|
|
114
|
+
paths.push(dir2);
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return paths;
|
|
119
|
+
}
|
|
120
|
+
return [];
|
|
121
|
+
}
|
|
97
122
|
async function buildSandboxReadConfig(_mindName, mindDir) {
|
|
98
123
|
const userHome = process.env.HOME || "";
|
|
99
124
|
const denyRead = [];
|
|
100
|
-
const allowRead = [mindDir];
|
|
125
|
+
const allowRead = [mindDir, ...voluteCliPaths()];
|
|
101
126
|
if (userHome) {
|
|
102
127
|
denyRead.push(userHome);
|
|
103
128
|
} else {
|
|
@@ -114,6 +139,9 @@ async function buildSandboxReadConfig(_mindName, mindDir) {
|
|
|
114
139
|
function shellEscape(s) {
|
|
115
140
|
return `'${s.replace(/'/g, "'\\''")}'`;
|
|
116
141
|
}
|
|
142
|
+
function shellTempWritePaths() {
|
|
143
|
+
return process.platform === "darwin" ? ["/private/tmp", "/private/var/tmp"] : [];
|
|
144
|
+
}
|
|
117
145
|
async function wrapForSandbox(cmd, args, mindDir, mindName, allowWrite) {
|
|
118
146
|
if (!sandboxManager) {
|
|
119
147
|
if (isSandboxEnabled() && !isSandboxOptional()) {
|
|
@@ -126,7 +154,7 @@ async function wrapForSandbox(cmd, args, mindDir, mindName, allowWrite) {
|
|
|
126
154
|
filesystem: {
|
|
127
155
|
denyRead,
|
|
128
156
|
allowRead,
|
|
129
|
-
allowWrite: allowWrite ?? [mindDir],
|
|
157
|
+
allowWrite: [...allowWrite ?? [mindDir], ...shellTempWritePaths()],
|
|
130
158
|
denyWrite: []
|
|
131
159
|
}
|
|
132
160
|
};
|
|
@@ -151,7 +179,9 @@ export {
|
|
|
151
179
|
isSandboxEnabled,
|
|
152
180
|
isSandboxOptional,
|
|
153
181
|
initSandbox,
|
|
182
|
+
voluteCliPaths,
|
|
154
183
|
buildSandboxReadConfig,
|
|
155
184
|
shellEscape,
|
|
185
|
+
shellTempWritePaths,
|
|
156
186
|
wrapForSandbox
|
|
157
187
|
};
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
exec,
|
|
4
4
|
execInherit
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-M77B73VV.js";
|
|
6
6
|
import {
|
|
7
7
|
voluteSystemDir
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-H6X6CKDN.js";
|
|
9
9
|
|
|
10
10
|
// packages/daemon/src/lib/config/service-mode.ts
|
|
11
11
|
import { execFileSync } from "child_process";
|