volute 0.40.1 → 0.41.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-IVHOHXQS.js → accept-AHAOUFBK.js} +1 -1
- package/dist/{activity-events-DS4QRWBY.js → activity-events-EQGBUEZ7.js} +4 -4
- package/dist/{ai-service-AUWIPWLP.js → ai-service-ZHEPFC3U.js} +5 -5
- package/dist/{api-client-NFM6GX2N.js → api-client-LC5YRA32.js} +1 -1
- package/dist/{archive-UDHFZN4G.js → archive-LJAXDDEY.js} +4 -4
- package/dist/{auth-X6ZITZ7D.js → auth-VYW2ECCE.js} +5 -5
- package/dist/{bridge-MSZC4HUT.js → bridge-F3ZJEKDN.js} +1 -1
- package/dist/{chat-JD3TJINV.js → chat-FO722GU2.js} +9 -9
- package/dist/{chunk-4UMXOMZ6.js → chunk-2I7OKOYV.js} +2 -2
- package/dist/{chunk-3Y7UDHO7.js → chunk-2R4JIZCB.js} +3 -3
- package/dist/{chunk-QYI65HCL.js → chunk-2RQIIKFC.js} +2 -2
- package/dist/{chunk-6SYHHEQ7.js → chunk-4ED2DBNC.js} +1 -1
- package/dist/{chunk-E25SO3QW.js → chunk-6TPRURK5.js} +3 -3
- package/dist/{chunk-ITH5ZLZJ.js → chunk-6ZAT5PYV.js} +1 -1
- package/dist/{chunk-LZ6CQYRO.js → chunk-AXNAK3HT.js} +10 -8
- package/dist/{chunk-PKGA23XM.js → chunk-CYUNO4BM.js} +1 -1
- package/dist/{chunk-MNUXL4XN.js → chunk-FEQPNCXB.js} +1 -1
- package/dist/{chunk-5EVW4KOD.js → chunk-FU5YDH6Q.js} +3 -3
- package/dist/{chunk-NERYUSER.js → chunk-GMFCSXWB.js} +1 -1
- package/dist/{chunk-YHWGN4FX.js → chunk-GSOEUMVO.js} +1 -1
- package/dist/{chunk-QV7P3TYO.js → chunk-JIGVTFIR.js} +5 -5
- package/dist/chunk-K3NQKI34.js +10 -0
- package/dist/{chunk-2HZRJ35V.js → chunk-MHFAWJCC.js} +1 -1
- package/dist/{chunk-I57LLNAQ.js → chunk-MU2B7A3L.js} +1 -1
- package/dist/{chunk-DNU6XLE2.js → chunk-N64Q7FMP.js} +1 -1
- package/dist/{chunk-SVXOBKQY.js → chunk-OQ7UEW67.js} +2 -2
- package/dist/{chunk-ANSTTB55.js → chunk-PP5CGT2P.js} +20 -21
- package/dist/{chunk-TOANT6FD.js → chunk-SWY4DJ67.js} +2 -2
- package/dist/{chunk-KMHC36CA.js → chunk-U7UASV36.js} +1 -1
- package/dist/{chunk-KAB6UGOL.js → chunk-UU3Q65US.js} +1 -1
- package/dist/{chunk-JYQQDI3M.js → chunk-V67XMNGP.js} +2 -2
- package/dist/{chunk-B4WPXYPI.js → chunk-VDODEQSJ.js} +6 -1
- package/dist/{chunk-S4SXBQ7F.js → chunk-VK2YD7VJ.js} +43 -35
- package/dist/{chunk-BLAXARBZ.js → chunk-W5Z2H3LU.js} +194 -1313
- package/dist/{chunk-46DYYHN6.js → chunk-WSRGS4XP.js} +34 -0
- package/dist/{chunk-AEAZRTEV.js → chunk-Y2XLASFJ.js} +1 -1
- package/dist/chunk-YATR5BXD.js +1212 -0
- package/dist/{chunk-YTNBO7S6.js → chunk-YN6ISG7A.js} +11 -11
- package/dist/cli.js +24 -24
- package/dist/{clock-YLDJUKBW.js → clock-BMLJ2TR6.js} +3 -3
- package/dist/{cloud-sync-MAQCJEFJ.js → cloud-sync-GV6O2HN2.js} +19 -18
- package/dist/{config-PO4EZLIK.js → config-QB7W3Z7P.js} +4 -4
- package/dist/connectors/discord-bridge.js +1 -1
- package/dist/connectors/slack-bridge.js +1 -1
- package/dist/connectors/telegram-bridge.js +1 -1
- package/dist/{conversations-AYLXPOGC.js → conversations-KW7IYESK.js} +5 -5
- package/dist/{create-ZMTGINV3.js → create-C3BBFYV7.js} +1 -1
- package/dist/{create-T4UJ64WB.js → create-CTPXWFTL.js} +5 -5
- package/dist/{daemon-client-H6MEKK2W.js → daemon-client-2MIPKY3E.js} +1 -1
- package/dist/{daemon-restart-LP2DR24J.js → daemon-restart-W47YDE5E.js} +9 -9
- package/dist/daemon.js +155 -111
- package/dist/db-D4FVCA5I.js +9 -0
- package/dist/{db-FSYOTHSN.js → db-IJL6B26S.js} +1 -1
- package/dist/{delete-TXVOH2OC.js → delete-NLXES2C7.js} +3 -3
- package/dist/delivery-manager-EB52CQ5X.js +33 -0
- package/dist/{delivery-router-T6CYTS3M.js → delivery-router-Y66OXJPM.js} +4 -4
- package/dist/down-JVHNXOFU.js +17 -0
- package/dist/echo-text-QVPS6QDM.js +32 -0
- package/dist/{env-77IOWG4U.js → env-IQ6Q2333.js} +1 -1
- package/dist/exec-R2WWZ6FH.js +17 -0
- package/dist/{export-TZKOCSCE.js → export-ZZ5WWBUH.js} +6 -6
- package/dist/{extension-35NB6GHW.js → extension-LZYHBNLV.js} +1 -1
- package/dist/{extensions-LQX2N7TI.js → extensions-AGANCIQA.js} +19 -18
- package/dist/{files-WNNVJWJB.js → files-Q2Z4LQZP.js} +4 -4
- package/dist/{import-BNNFCQ7U.js → import-MFYCBS4K.js} +11 -11
- package/dist/{isolation-4Q4P7HRV.js → isolation-7F3MA4G7.js} +4 -4
- package/dist/{join-E2EJEXZO.js → join-6SZCA5FX.js} +3 -3
- package/dist/{list-BYCEDASJ.js → list-KHJZJPEJ.js} +1 -1
- package/dist/{login-JNSIYFVH.js → login-GYTH67ES.js} +1 -1
- package/dist/{login-Y6UAYQVO.js → login-WY3DADVB.js} +3 -3
- package/dist/{logout-VHGWVH63.js → logout-TFZHWNVL.js} +3 -3
- package/dist/{logout-M6FI62BL.js → logout-YHQLOFLR.js} +1 -1
- package/dist/message-delivery-X4CZE2L6.js +41 -0
- package/dist/{mind-ELPD6VBP.js → mind-XIKEPJNS.js} +19 -19
- package/dist/{mind-activity-tracker-XFRVGXFS.js → mind-activity-tracker-RSIWUUJK.js} +5 -5
- package/dist/{mind-history-W4JPTPTV.js → mind-history-WHCNZ6I5.js} +1 -1
- package/dist/{mind-list-QROHCLGT.js → mind-list-H3HC2ZRG.js} +1 -1
- package/dist/mind-manager-VU3RGCXD.js +31 -0
- package/dist/{mind-profile-3LNKXNPA.js → mind-profile-7VYRJGFZ.js} +2 -2
- package/dist/mind-service-L7LMMDYJ.js +37 -0
- package/dist/{mind-sleep-PVCMLTAH.js → mind-sleep-ZL5ZXFTM.js} +1 -1
- package/dist/{mind-status-RAJFLRCN.js → mind-status-ZWULKOUO.js} +1 -1
- package/dist/{mind-wake-HZUOVE7J.js → mind-wake-HK5ORGUK.js} +1 -1
- package/dist/{package-GO3PHHUF.js → package-2X7UNSTQ.js} +6 -5
- package/dist/{read-OOINVR2H.js → read-CP7MYMJQ.js} +1 -1
- package/dist/{read-stdin-P6HCZUAA.js → read-stdin-4B5UYPPM.js} +1 -1
- package/dist/{register-ISOH34RF.js → register-XOBFEMI4.js} +1 -1
- package/dist/{registry-GV35XFT7.js → registry-RAXNFN7K.js} +5 -3
- package/dist/{reject-ZBWP62X5.js → reject-43AGXB6B.js} +1 -1
- package/dist/{restart-QBJV5455.js → restart-O5QIYQJT.js} +1 -1
- package/dist/{sandbox-5R32QKWQ.js → sandbox-O3GZTS7J.js} +5 -5
- package/dist/scheduler-SXELVRWO.js +31 -0
- package/dist/{schema-LYQUDL7G.js → schema-HHYJDG7B.js} +2 -2
- package/dist/{seed-MO2C7CWC.js → seed-I4CNKTKZ.js} +2 -2
- package/dist/{seed-check-3WXXRHTC.js → seed-check-HZPVFJKZ.js} +2 -2
- package/dist/{seed-cmd-ETIF4WD6.js → seed-cmd-YTQYWCZF.js} +4 -4
- package/dist/{seed-create-BPQC2IOR.js → seed-create-MDBTVADS.js} +7 -7
- package/dist/{seed-sprout-TX72K33T.js → seed-sprout-N6O5FBPY.js} +11 -11
- package/dist/{send-WO3CVG73.js → send-5XA7LRNB.js} +4 -4
- package/dist/{service-WMV6R6VJ.js → service-AY5TGWJX.js} +6 -6
- package/dist/service-install-NLGAVTQS.js +17 -0
- package/dist/{setup-OTEC3ZPM.js → setup-3434PQ5Q.js} +4 -4
- package/dist/{setup-ZTW4FVMQ.js → setup-47NBOCZL.js} +9 -9
- package/dist/{skill-QHACP7EU.js → skill-ICN6Y2ZF.js} +1 -1
- package/dist/{skills-JEWMHIIE.js → skills-YTLBAF32.js} +7 -7
- package/dist/sleep-manager-T3AXQB3R.js +35 -0
- package/dist/spirit-KTBHLULO.js +24 -0
- package/dist/{split-7AO4IO42.js → split-5YBEQTBF.js} +3 -3
- package/dist/{sprout-NFJZKYEW.js → sprout-4ZUJUNDQ.js} +2 -2
- package/dist/src-4LFGGNW7.js +2201 -0
- package/dist/{src-XNUXP2FP.js → src-O4PRLMKM.js} +1 -1
- package/dist/{src-2IMB3V27.js → src-OYWRPLC6.js} +1 -1
- package/dist/{start-2U57BBK7.js → start-LMXXRR3X.js} +1 -1
- package/dist/{status-BRYYYO7C.js → status-VMOZUIZ2.js} +7 -7
- package/dist/{stop-QILBDUAR.js → stop-TWDKVEUX.js} +1 -1
- package/dist/system-chat-HCPHUQGI.js +35 -0
- package/dist/{systems-3XTAHA35.js → systems-Y2WZV2K4.js} +4 -4
- package/dist/{tailscale-X4HRKRTW.js → tailscale-PK3AI5EV.js} +3 -3
- package/dist/template-hash-JARTCRGS.js +9 -0
- package/dist/turn-tracker-SZBSL7LK.js +35 -0
- package/dist/up-VGVPOB6J.js +19 -0
- package/dist/{update-OY2JYXYK.js → update-3ANTQO54.js} +7 -7
- package/dist/{update-check-IUB7QHAF.js → update-check-4O6DKUOF.js} +4 -4
- package/dist/{upgrade-25J6AE47.js → upgrade-RXFZR5FI.js} +3 -3
- package/dist/{variant-5LQOPCQA.js → variant-HHDTW74J.js} +1 -1
- package/dist/{version-notify-N37N2C4G.js → version-notify-SSNAWZMX.js} +21 -20
- package/dist/{volute-config-7FO6QKWU.js → volute-config-TS62GS6A.js} +1 -1
- package/package.json +5 -4
- package/templates/claude/package.json.tmpl +1 -1
- package/templates/codex/package.json.tmpl +1 -1
- package/templates/pi/package.json.tmpl +2 -1
- package/templates/pi/src/agent.ts +1 -1
- package/templates/pi/src/lib/content.ts +1 -1
- package/templates/pi/src/lib/event-handler.ts +1 -1
- package/templates/pi/src/lib/reply-instructions-extension.ts +1 -1
- package/templates/pi/src/lib/resolve-model.ts +4 -4
- package/templates/pi/src/lib/subagents.ts +2 -2
- package/dist/chunk-LMMQX4CK.js +0 -49
- package/dist/db-ZEPKEJJD.js +0 -9
- package/dist/delivery-manager-VNHLQTTO.js +0 -30
- package/dist/down-6DYO2QV7.js +0 -17
- package/dist/echo-text-QFCH3H6G.js +0 -31
- package/dist/exec-5DGKQ5V3.js +0 -17
- package/dist/message-delivery-7BCYJLH2.js +0 -40
- package/dist/mind-manager-EDCLALBF.js +0 -30
- package/dist/mind-service-WTOFVNLW.js +0 -36
- package/dist/scheduler-GQBDCGLU.js +0 -30
- package/dist/service-install-W3FQXJKB.js +0 -17
- package/dist/sleep-manager-5277OBHI.js +0 -34
- package/dist/spirit-NVXWSVKM.js +0 -24
- package/dist/src-OS75U2O7.js +0 -241910
- package/dist/system-chat-LQSJVY55.js +0 -34
- package/dist/template-hash-DMHSLRDX.js +0 -9
- package/dist/up-4H7TL6WB.js +0 -19
package/dist/daemon.js
CHANGED
|
@@ -6,31 +6,31 @@ import {
|
|
|
6
6
|
rejectPending,
|
|
7
7
|
stageFile,
|
|
8
8
|
validateFilePath
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-GSOEUMVO.js";
|
|
10
10
|
import {
|
|
11
11
|
findOpenClawSession,
|
|
12
12
|
importOpenClawConnectors,
|
|
13
13
|
importPiSession,
|
|
14
14
|
parseNameFromIdentity
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-OQ7UEW67.js";
|
|
16
16
|
import {
|
|
17
17
|
checkForUpdate,
|
|
18
18
|
checkForUpdateCached,
|
|
19
19
|
getCurrentVersion
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-FEQPNCXB.js";
|
|
21
21
|
import {
|
|
22
22
|
isHomeOnlyArchive
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-MU2B7A3L.js";
|
|
24
24
|
import {
|
|
25
25
|
computeTemplateHash
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-UU3Q65US.js";
|
|
27
27
|
import {
|
|
28
28
|
PLATFORMS,
|
|
29
29
|
echoTextToChannel,
|
|
30
30
|
fixModelEscapes,
|
|
31
31
|
getPlatformDriver,
|
|
32
32
|
routeOutboundBridge
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-AXNAK3HT.js";
|
|
34
34
|
import {
|
|
35
35
|
getBridgeConfig,
|
|
36
36
|
readBridgesConfig,
|
|
@@ -39,35 +39,24 @@ import {
|
|
|
39
39
|
resolveChannelMapping,
|
|
40
40
|
setBridgeConfig,
|
|
41
41
|
setChannelMapping
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-CYUNO4BM.js";
|
|
43
43
|
import {
|
|
44
|
-
PROMPT_DEFAULTS,
|
|
45
|
-
PROMPT_KEYS,
|
|
46
44
|
RestartTracker,
|
|
47
45
|
RotatingLog,
|
|
48
46
|
announceToSystem,
|
|
49
|
-
assignSession,
|
|
50
47
|
clearDeliveredNotices,
|
|
51
|
-
completeOrphanedTurns,
|
|
52
|
-
completeTurn,
|
|
53
|
-
createTurn,
|
|
54
48
|
deleteSystemsConfig,
|
|
55
49
|
deliverMessage,
|
|
56
50
|
drainNotices,
|
|
57
51
|
ensureSystemChannel,
|
|
58
52
|
formatNotices,
|
|
59
53
|
generateSystemReply,
|
|
60
|
-
getActiveTurnId,
|
|
61
54
|
getAllDiscoveredExtensions,
|
|
62
55
|
getAllDiscoveredExtensionsDetailed,
|
|
63
56
|
getDeliveryManager,
|
|
64
57
|
getExtensionStandardSkills,
|
|
65
|
-
getLastToolUseEventId,
|
|
66
58
|
getLoadedExtensions,
|
|
67
59
|
getMindManager,
|
|
68
|
-
getMindPromptDefaults,
|
|
69
|
-
getPrompt,
|
|
70
|
-
getPromptIfCustom,
|
|
71
60
|
getScheduler,
|
|
72
61
|
getSleepManagerIfReady,
|
|
73
62
|
getTokenBudget,
|
|
@@ -77,17 +66,14 @@ import {
|
|
|
77
66
|
initMindManager,
|
|
78
67
|
initScheduler,
|
|
79
68
|
initSleepManager,
|
|
80
|
-
initSummarizer,
|
|
81
69
|
initTokenBudget,
|
|
82
70
|
installNpmExtension,
|
|
83
71
|
isConversationId,
|
|
84
72
|
joinSystemChannel,
|
|
85
73
|
linkToolResultToTurn,
|
|
86
74
|
loadAllExtensions,
|
|
87
|
-
markErrored,
|
|
88
75
|
notifyExtensionsDaemonStart,
|
|
89
76
|
notifyExtensionsDaemonStop,
|
|
90
|
-
publish as publish2,
|
|
91
77
|
publishTypingForChannels,
|
|
92
78
|
readSystemsConfig,
|
|
93
79
|
recordInbound,
|
|
@@ -97,34 +83,29 @@ import {
|
|
|
97
83
|
setExtensionEnabled,
|
|
98
84
|
startMindFull,
|
|
99
85
|
stopMindFull,
|
|
100
|
-
subscribe as subscribe3,
|
|
101
|
-
subscribeAll,
|
|
102
|
-
substitute,
|
|
103
|
-
summarizeOrphanedTurns,
|
|
104
|
-
summarizeTurn,
|
|
105
86
|
syncProviderToMinds,
|
|
106
87
|
tagUntaggedInbound,
|
|
107
88
|
tagUntaggedOutbound,
|
|
108
|
-
takeErrored,
|
|
109
|
-
trackToolUse,
|
|
110
89
|
uninstallNpmExtension,
|
|
111
90
|
writeSystemsConfig
|
|
112
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-W5Z2H3LU.js";
|
|
113
92
|
import {
|
|
114
93
|
loadMergedEnv,
|
|
115
94
|
mindEnvPath,
|
|
116
95
|
readEnv,
|
|
117
96
|
sharedEnvPath,
|
|
118
97
|
writeEnv
|
|
119
|
-
} from "./chunk-
|
|
120
|
-
import "./chunk-
|
|
98
|
+
} from "./chunk-6ZAT5PYV.js";
|
|
99
|
+
import "./chunk-YN6ISG7A.js";
|
|
121
100
|
import {
|
|
122
101
|
applyInitFiles,
|
|
102
|
+
applyTemplateHomeFiles,
|
|
123
103
|
composeTemplate,
|
|
124
104
|
copyTemplateToDir,
|
|
125
105
|
findTemplatesRoot,
|
|
106
|
+
isKnownTemplate,
|
|
126
107
|
listFiles
|
|
127
|
-
} from "./chunk-
|
|
108
|
+
} from "./chunk-WSRGS4XP.js";
|
|
128
109
|
import {
|
|
129
110
|
SEED_SKILLS,
|
|
130
111
|
STANDARD_SKILLS,
|
|
@@ -144,7 +125,7 @@ import {
|
|
|
144
125
|
syncBuiltinSkills,
|
|
145
126
|
uninstallSkill,
|
|
146
127
|
updateSkill
|
|
147
|
-
} from "./chunk-
|
|
128
|
+
} from "./chunk-JIGVTFIR.js";
|
|
148
129
|
import {
|
|
149
130
|
addMessage,
|
|
150
131
|
createChannel,
|
|
@@ -176,25 +157,48 @@ import {
|
|
|
176
157
|
setConversationPrivate,
|
|
177
158
|
subscribe as subscribe2,
|
|
178
159
|
updateChannelSettings
|
|
179
|
-
} from "./chunk-
|
|
160
|
+
} from "./chunk-2R4JIZCB.js";
|
|
180
161
|
import {
|
|
181
162
|
readVoluteConfig,
|
|
182
163
|
writeVoluteConfig
|
|
183
164
|
} from "./chunk-CU6OFXMM.js";
|
|
184
|
-
import "./chunk-
|
|
165
|
+
import "./chunk-U7UASV36.js";
|
|
185
166
|
import {
|
|
186
167
|
getActiveMinds,
|
|
187
168
|
onMindEvent,
|
|
188
169
|
stopAll
|
|
189
|
-
} from "./chunk-
|
|
170
|
+
} from "./chunk-PP5CGT2P.js";
|
|
190
171
|
import {
|
|
191
172
|
extractTextContent
|
|
192
|
-
} from "./chunk-
|
|
173
|
+
} from "./chunk-GMFCSXWB.js";
|
|
174
|
+
import {
|
|
175
|
+
PROMPT_DEFAULTS,
|
|
176
|
+
PROMPT_KEYS,
|
|
177
|
+
assignSession,
|
|
178
|
+
completeOrphanedTurns,
|
|
179
|
+
completeTurn,
|
|
180
|
+
createTurn,
|
|
181
|
+
getActiveTurnId,
|
|
182
|
+
getLastToolUseEventId,
|
|
183
|
+
getMindPromptDefaults,
|
|
184
|
+
getPrompt,
|
|
185
|
+
getPromptIfCustom,
|
|
186
|
+
initSummarizer,
|
|
187
|
+
markErrored,
|
|
188
|
+
publish as publish2,
|
|
189
|
+
subscribe as subscribe3,
|
|
190
|
+
subscribeAll,
|
|
191
|
+
substitute,
|
|
192
|
+
summarizeOrphanedTurns,
|
|
193
|
+
summarizeTurn,
|
|
194
|
+
takeErrored,
|
|
195
|
+
trackToolUse
|
|
196
|
+
} from "./chunk-YATR5BXD.js";
|
|
193
197
|
import {
|
|
194
198
|
exec,
|
|
195
199
|
gitExec,
|
|
196
200
|
resolveVoluteBin
|
|
197
|
-
} from "./chunk-
|
|
201
|
+
} from "./chunk-Y2XLASFJ.js";
|
|
198
202
|
import {
|
|
199
203
|
chownMindDir,
|
|
200
204
|
createMindUser,
|
|
@@ -202,7 +206,7 @@ import {
|
|
|
202
206
|
ensureVoluteGroup,
|
|
203
207
|
isIsolationEnabled,
|
|
204
208
|
wrapForIsolation
|
|
205
|
-
} from "./chunk-
|
|
209
|
+
} from "./chunk-4ED2DBNC.js";
|
|
206
210
|
import {
|
|
207
211
|
getAiConfig,
|
|
208
212
|
getAvailableModels,
|
|
@@ -219,12 +223,12 @@ import {
|
|
|
219
223
|
setProviderRefreshHook,
|
|
220
224
|
setUtilityModel,
|
|
221
225
|
unqualifyModelId
|
|
222
|
-
} from "./chunk-
|
|
226
|
+
} from "./chunk-VK2YD7VJ.js";
|
|
223
227
|
import {
|
|
224
228
|
isSetupComplete,
|
|
225
229
|
readGlobalConfig,
|
|
226
230
|
writeGlobalConfig
|
|
227
|
-
} from "./chunk-
|
|
231
|
+
} from "./chunk-N64Q7FMP.js";
|
|
228
232
|
import {
|
|
229
233
|
approveUser,
|
|
230
234
|
changePassword,
|
|
@@ -243,11 +247,11 @@ import {
|
|
|
243
247
|
syncMindProfile,
|
|
244
248
|
updateUserProfile,
|
|
245
249
|
verifyUser
|
|
246
|
-
} from "./chunk-
|
|
250
|
+
} from "./chunk-6TPRURK5.js";
|
|
247
251
|
import {
|
|
248
252
|
broadcast,
|
|
249
253
|
subscribe
|
|
250
|
-
} from "./chunk-
|
|
254
|
+
} from "./chunk-2RQIIKFC.js";
|
|
251
255
|
import {
|
|
252
256
|
logBuffer,
|
|
253
257
|
logger_default
|
|
@@ -272,12 +276,13 @@ import {
|
|
|
272
276
|
removeMind,
|
|
273
277
|
setMindRunning,
|
|
274
278
|
setMindStage,
|
|
279
|
+
setMindTemplate,
|
|
275
280
|
setMindTemplateHash,
|
|
276
281
|
stateDir,
|
|
277
282
|
validateMindName,
|
|
278
283
|
voluteHome,
|
|
279
284
|
voluteSystemDir
|
|
280
|
-
} from "./chunk-
|
|
285
|
+
} from "./chunk-VDODEQSJ.js";
|
|
281
286
|
import {
|
|
282
287
|
activity,
|
|
283
288
|
channels,
|
|
@@ -289,8 +294,8 @@ import {
|
|
|
289
294
|
systemPrompts,
|
|
290
295
|
turns,
|
|
291
296
|
users
|
|
292
|
-
} from "./chunk-
|
|
293
|
-
import "./chunk-
|
|
297
|
+
} from "./chunk-MHFAWJCC.js";
|
|
298
|
+
import "./chunk-K3NQKI34.js";
|
|
294
299
|
|
|
295
300
|
// packages/daemon/src/daemon.ts
|
|
296
301
|
import { randomBytes } from "crypto";
|
|
@@ -627,9 +632,9 @@ async function cleanExpiredLogs() {
|
|
|
627
632
|
}
|
|
628
633
|
|
|
629
634
|
// packages/daemon/src/web/api/system.ts
|
|
635
|
+
import { getOAuthProvider, getOAuthProviders } from "@earendil-works/pi-ai/oauth";
|
|
636
|
+
import { getBuiltinProviders } from "@earendil-works/pi-ai/providers/all";
|
|
630
637
|
import { zValidator } from "@hono/zod-validator";
|
|
631
|
-
import { getProviders } from "@mariozechner/pi-ai";
|
|
632
|
-
import { getOAuthProvider, getOAuthProviders } from "@mariozechner/pi-ai/oauth";
|
|
633
638
|
import { Hono } from "hono";
|
|
634
639
|
import { streamSSE } from "hono/streaming";
|
|
635
640
|
import { z } from "zod";
|
|
@@ -1200,7 +1205,7 @@ var app = new Hono().post("/restart", requireAdmin, (c) => {
|
|
|
1200
1205
|
if (!key) return c.json({ error: "No key available" }, 404);
|
|
1201
1206
|
return c.json({ key });
|
|
1202
1207
|
}).get("/ai/providers", requireAdmin, (c) => {
|
|
1203
|
-
const allProviders =
|
|
1208
|
+
const allProviders = getBuiltinProviders();
|
|
1204
1209
|
const oauthProviders = getOAuthProviders();
|
|
1205
1210
|
const oauthMap = new Map(oauthProviders.map((p) => [p.id, p]));
|
|
1206
1211
|
const ai = getAiConfig();
|
|
@@ -1223,8 +1228,8 @@ var app = new Hono().post("/restart", requireAdmin, (c) => {
|
|
|
1223
1228
|
};
|
|
1224
1229
|
});
|
|
1225
1230
|
return c.json(result);
|
|
1226
|
-
}).get("/ai/models", requireAdmin, (c) => {
|
|
1227
|
-
const models = getAvailableModels();
|
|
1231
|
+
}).get("/ai/models", requireAdmin, async (c) => {
|
|
1232
|
+
const models = await getAvailableModels();
|
|
1228
1233
|
const enabled = new Set(getEnabledModels());
|
|
1229
1234
|
return c.json(
|
|
1230
1235
|
models.map((m) => ({
|
|
@@ -1318,6 +1323,15 @@ var app = new Hono().post("/restart", requireAdmin, (c) => {
|
|
|
1318
1323
|
if (existing)
|
|
1319
1324
|
Object.assign(existing, { url: info.url, instructions: info.instructions });
|
|
1320
1325
|
},
|
|
1326
|
+
onDeviceCode: (info) => {
|
|
1327
|
+
const existing = oauthFlows.get(flowId);
|
|
1328
|
+
if (existing)
|
|
1329
|
+
Object.assign(existing, {
|
|
1330
|
+
url: info.verificationUri,
|
|
1331
|
+
instructions: `Enter code: ${info.userCode}`
|
|
1332
|
+
});
|
|
1333
|
+
},
|
|
1334
|
+
onSelect: async (_prompt) => void 0,
|
|
1321
1335
|
onPrompt: async (_prompt) => {
|
|
1322
1336
|
if (promptPromise) {
|
|
1323
1337
|
const existing = oauthFlows.get(flowId);
|
|
@@ -1484,7 +1498,7 @@ function needsRefresh(oauth) {
|
|
|
1484
1498
|
}
|
|
1485
1499
|
async function refreshApiKeyCache() {
|
|
1486
1500
|
const ai = getAiConfig();
|
|
1487
|
-
const providers = getConfiguredProviders();
|
|
1501
|
+
const providers = await getConfiguredProviders();
|
|
1488
1502
|
for (const id of oauthHealth.keys()) {
|
|
1489
1503
|
if (!providers.includes(id)) oauthHealth.delete(id);
|
|
1490
1504
|
}
|
|
@@ -2002,7 +2016,7 @@ var app4 = new Hono4().post("/:platform/inbound", zValidator3("json", inboundSch
|
|
|
2002
2016
|
}
|
|
2003
2017
|
const participants = await getParticipants(channel.id);
|
|
2004
2018
|
if (!participants.some((p) => p.userId === puppet.id)) {
|
|
2005
|
-
const { addParticipant } = await import("./conversations-
|
|
2019
|
+
const { addParticipant } = await import("./conversations-KW7IYESK.js");
|
|
2006
2020
|
await addParticipant(channel.id, puppet.id);
|
|
2007
2021
|
}
|
|
2008
2022
|
const contentBlocks = body.content;
|
|
@@ -2095,8 +2109,8 @@ async function fanOutToBridgedMinds(opts) {
|
|
|
2095
2109
|
const participants = await getParticipants(opts.conversationId);
|
|
2096
2110
|
const mindParticipants = participants.filter((p) => p.userType === "mind");
|
|
2097
2111
|
const participantNames = participants.map((p) => p.username);
|
|
2098
|
-
const { getMindManager: getMindManager2 } = await import("./mind-manager-
|
|
2099
|
-
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-
|
|
2112
|
+
const { getMindManager: getMindManager2 } = await import("./mind-manager-VU3RGCXD.js");
|
|
2113
|
+
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-T3AXQB3R.js");
|
|
2100
2114
|
const manager = getMindManager2();
|
|
2101
2115
|
const sm = getSleepManagerIfReady2();
|
|
2102
2116
|
const targetMinds = mindParticipants.filter((ap) => {
|
|
@@ -2155,9 +2169,9 @@ var channels_default = app5;
|
|
|
2155
2169
|
// packages/daemon/src/web/api/config.ts
|
|
2156
2170
|
import { Hono as Hono6 } from "hono";
|
|
2157
2171
|
var config = new Hono6();
|
|
2158
|
-
config.get("/models", (c) => {
|
|
2172
|
+
config.get("/models", async (c) => {
|
|
2159
2173
|
const enabled = new Set(getEnabledModels());
|
|
2160
|
-
const all = getAvailableModels();
|
|
2174
|
+
const all = await getAvailableModels();
|
|
2161
2175
|
const models = all.map((m) => ({
|
|
2162
2176
|
id: m.id,
|
|
2163
2177
|
name: m.name,
|
|
@@ -2166,8 +2180,8 @@ config.get("/models", (c) => {
|
|
|
2166
2180
|
}));
|
|
2167
2181
|
return c.json(models);
|
|
2168
2182
|
});
|
|
2169
|
-
config.get("/providers", (c) => {
|
|
2170
|
-
const configured = getConfiguredProviders();
|
|
2183
|
+
config.get("/providers", async (c) => {
|
|
2184
|
+
const configured = await getConfiguredProviders();
|
|
2171
2185
|
return c.json(configured.map((id) => ({ id, configured: true })));
|
|
2172
2186
|
});
|
|
2173
2187
|
config.get("/status", (c) => {
|
|
@@ -2308,7 +2322,7 @@ async function notifyMind(mindName, message) {
|
|
|
2308
2322
|
const entry = await findMind(mindName);
|
|
2309
2323
|
if (!entry) return;
|
|
2310
2324
|
try {
|
|
2311
|
-
const { sendSystemMessage } = await import("./system-chat-
|
|
2325
|
+
const { sendSystemMessage } = await import("./system-chat-HCPHUQGI.js");
|
|
2312
2326
|
await sendSystemMessage(mindName, message);
|
|
2313
2327
|
} catch (err) {
|
|
2314
2328
|
logger_default.warn(`[file-sharing] notify mind ${mindName} failed`, logger_default.errorData(err));
|
|
@@ -3354,7 +3368,7 @@ async function cleanupVariant(variantName, projectRoot, variantPath, opts) {
|
|
|
3354
3368
|
logger_default.warn(`failed to stop variant ${variantName}`, logger_default.errorData(err));
|
|
3355
3369
|
}
|
|
3356
3370
|
}
|
|
3357
|
-
const { findMind: findMind2 } = await import("./registry-
|
|
3371
|
+
const { findMind: findMind2 } = await import("./registry-RAXNFN7K.js");
|
|
3358
3372
|
const variantEntry = await findMind2(variantName);
|
|
3359
3373
|
const branchName = variantEntry?.branch ?? variantName;
|
|
3360
3374
|
if (existsSync6(variantPath)) {
|
|
@@ -3611,7 +3625,7 @@ async function getMindStatus(name, port, registryRunning) {
|
|
|
3611
3625
|
const manager = getMindManager();
|
|
3612
3626
|
let status = "stopped";
|
|
3613
3627
|
try {
|
|
3614
|
-
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-
|
|
3628
|
+
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-T3AXQB3R.js");
|
|
3615
3629
|
if (getSleepManagerIfReady2()?.isSleeping(name)) {
|
|
3616
3630
|
status = "sleeping";
|
|
3617
3631
|
}
|
|
@@ -3743,7 +3757,8 @@ async function npmInstallAsMind(cwd, mindName) {
|
|
|
3743
3757
|
await exec("npm", ["install"], { cwd });
|
|
3744
3758
|
}
|
|
3745
3759
|
}
|
|
3746
|
-
async function mergeUpgradeAndRestart(mindName, dir, worktreeDir, upgradeVariantName, upgradeBranch, template) {
|
|
3760
|
+
async function mergeUpgradeAndRestart(mindName, dir, worktreeDir, upgradeVariantName, upgradeBranch, template, oldTemplate) {
|
|
3761
|
+
const templateChanged = template !== oldTemplate;
|
|
3747
3762
|
const mainStatus = (await gitExec(["status", "--porcelain"], { cwd: dir })).trim();
|
|
3748
3763
|
if (mainStatus) {
|
|
3749
3764
|
await gitExec(["add", "-A"], { cwd: dir });
|
|
@@ -3759,10 +3774,33 @@ async function mergeUpgradeAndRestart(mindName, dir, worktreeDir, upgradeVariant
|
|
|
3759
3774
|
await gitExec(["branch", "-D", upgradeBranch], { cwd: dir });
|
|
3760
3775
|
} catch {
|
|
3761
3776
|
}
|
|
3777
|
+
let switchWarning;
|
|
3778
|
+
if (templateChanged) {
|
|
3779
|
+
try {
|
|
3780
|
+
applyTemplateHomeFiles(resolve11(dir, "home"), template);
|
|
3781
|
+
await gitExec(["add", "home/"], { cwd: dir });
|
|
3782
|
+
try {
|
|
3783
|
+
await gitExec(["diff", "--cached", "--quiet"], { cwd: dir });
|
|
3784
|
+
} catch {
|
|
3785
|
+
await gitExec(["commit", "-m", `swap template-owned home files for ${template}`], {
|
|
3786
|
+
cwd: dir
|
|
3787
|
+
});
|
|
3788
|
+
}
|
|
3789
|
+
chownMindDir(dir, mindName);
|
|
3790
|
+
switchWarning = `Switched ${oldTemplate}\u2192${template}: config reset to ${template} defaults, mechanics doc replaced, conversation starts fresh (sessions aren't portable across runtimes).`;
|
|
3791
|
+
} catch (err) {
|
|
3792
|
+
logger_default.warn(`failed to swap template home files for ${mindName}`, logger_default.errorData(err));
|
|
3793
|
+
return {
|
|
3794
|
+
ok: true,
|
|
3795
|
+
warning: `Upgrade merged but template switch ${oldTemplate}\u2192${template} failed: ${err instanceof Error ? err.message : String(err)}. The mind is still registered as ${oldTemplate}; re-run the switch or fix home/ manually.`
|
|
3796
|
+
};
|
|
3797
|
+
}
|
|
3798
|
+
}
|
|
3762
3799
|
try {
|
|
3763
3800
|
await setMindTemplateHash(mindName, computeTemplateHash(template));
|
|
3801
|
+
await setMindTemplate(mindName, template);
|
|
3764
3802
|
} catch (err) {
|
|
3765
|
-
logger_default.warn(`failed to update template
|
|
3803
|
+
logger_default.warn(`failed to update template for ${mindName}`, logger_default.errorData(err));
|
|
3766
3804
|
}
|
|
3767
3805
|
try {
|
|
3768
3806
|
await npmInstallAsMind(dir, mindName);
|
|
@@ -3786,7 +3824,7 @@ async function mergeUpgradeAndRestart(mindName, dir, worktreeDir, upgradeVariant
|
|
|
3786
3824
|
warning: `Upgrade merged but mind restart failed: ${e instanceof Error ? e.message : String(e)}`
|
|
3787
3825
|
};
|
|
3788
3826
|
}
|
|
3789
|
-
return { ok: true };
|
|
3827
|
+
return { ok: true, warning: switchWarning };
|
|
3790
3828
|
}
|
|
3791
3829
|
async function importFromArchive(c, tempDir, nameOverride, manifest) {
|
|
3792
3830
|
const extractedMindDir = resolve11(tempDir, "mind");
|
|
@@ -4068,7 +4106,7 @@ async function proxyToMind(c, path) {
|
|
|
4068
4106
|
var app13 = new Hono15().post("/", requireAdminOrSystem, zValidator5("json", createMindSchema), async (c) => {
|
|
4069
4107
|
const body = c.req.valid("json");
|
|
4070
4108
|
const { name } = body;
|
|
4071
|
-
const template = body.template ?? resolveTemplate(body.model);
|
|
4109
|
+
const template = body.template ?? await resolveTemplate(body.model);
|
|
4072
4110
|
const nameErr = validateMindName(name);
|
|
4073
4111
|
if (nameErr) return c.json({ error: nameErr }, 400);
|
|
4074
4112
|
if (await findMind(name)) return c.json({ error: `Mind already exists: ${name}` }, 409);
|
|
@@ -4082,7 +4120,7 @@ var app13 = new Hono15().post("/", requireAdminOrSystem, zValidator5("json", cre
|
|
|
4082
4120
|
applyInitFiles(dest);
|
|
4083
4121
|
const { publicKeyPem } = generateIdentity(dest);
|
|
4084
4122
|
{
|
|
4085
|
-
const { readGlobalConfig: readGlobal } = await import("./setup-
|
|
4123
|
+
const { readGlobalConfig: readGlobal } = await import("./setup-3434PQ5Q.js");
|
|
4086
4124
|
const mindDefaults = readGlobal().mindDefaults;
|
|
4087
4125
|
const config2 = readVoluteConfig(dest);
|
|
4088
4126
|
if (!config2) throw new Error("Failed to read volute.json after identity generation");
|
|
@@ -4173,7 +4211,7 @@ The human who planted you described you as: "${body.description}"
|
|
|
4173
4211
|
}
|
|
4174
4212
|
let skillSet = body.skills ?? (body.stage === "seed" ? SEED_SKILLS : getStandardSkillsWithExtensions());
|
|
4175
4213
|
if (body.stage === "seed" && !body.skills) {
|
|
4176
|
-
const { isImagegenEnabled } = await import("./setup-
|
|
4214
|
+
const { isImagegenEnabled } = await import("./setup-3434PQ5Q.js");
|
|
4177
4215
|
if (isImagegenEnabled()) {
|
|
4178
4216
|
skillSet = [...skillSet, "imagegen"];
|
|
4179
4217
|
}
|
|
@@ -4191,7 +4229,7 @@ The human who planted you described you as: "${body.description}"
|
|
|
4191
4229
|
try {
|
|
4192
4230
|
const spiritEntry = await findMind("volute");
|
|
4193
4231
|
if (spiritEntry) {
|
|
4194
|
-
const { spiritDir } = await import("./spirit-
|
|
4232
|
+
const { spiritDir } = await import("./spirit-KTBHLULO.js");
|
|
4195
4233
|
const sDir = spiritEntry.dir ?? spiritDir();
|
|
4196
4234
|
const spiritConfig = readVoluteConfig(sDir) ?? {};
|
|
4197
4235
|
const schedules = spiritConfig.schedules ?? [];
|
|
@@ -4206,7 +4244,7 @@ The human who planted you described you as: "${body.description}"
|
|
|
4206
4244
|
});
|
|
4207
4245
|
spiritConfig.schedules = schedules;
|
|
4208
4246
|
writeVoluteConfig(sDir, spiritConfig);
|
|
4209
|
-
const { getScheduler: getScheduler2 } = await import("./scheduler-
|
|
4247
|
+
const { getScheduler: getScheduler2 } = await import("./scheduler-SXELVRWO.js");
|
|
4210
4248
|
getScheduler2().loadSchedules("volute", sDir);
|
|
4211
4249
|
}
|
|
4212
4250
|
}
|
|
@@ -4471,7 +4509,7 @@ ${user.trimEnd()}
|
|
|
4471
4509
|
const manager = getMindManager();
|
|
4472
4510
|
try {
|
|
4473
4511
|
if (context?.type === "reload") {
|
|
4474
|
-
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-
|
|
4512
|
+
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-T3AXQB3R.js");
|
|
4475
4513
|
const sleepState = getSleepManagerIfReady2()?.getState(name);
|
|
4476
4514
|
if (sleepState?.sleeping) {
|
|
4477
4515
|
logger_default.info(`skipping reload for ${name} during sleep \u2014 will apply on next wake`);
|
|
@@ -4566,7 +4604,7 @@ ${user.trimEnd()}
|
|
|
4566
4604
|
const name = c.req.param("name");
|
|
4567
4605
|
const entry = await findMind(name);
|
|
4568
4606
|
if (!entry) return c.json({ error: "Mind not found" }, 404);
|
|
4569
|
-
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-
|
|
4607
|
+
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-T3AXQB3R.js");
|
|
4570
4608
|
const sm = getSleepManagerIfReady2();
|
|
4571
4609
|
if (!sm) return c.json({ error: "Sleep manager not initialized" }, 503);
|
|
4572
4610
|
return c.json(sm.getState(name));
|
|
@@ -4574,7 +4612,7 @@ ${user.trimEnd()}
|
|
|
4574
4612
|
const name = c.req.param("name");
|
|
4575
4613
|
const entry = await findMind(name);
|
|
4576
4614
|
if (!entry) return c.json({ error: "Mind not found" }, 404);
|
|
4577
|
-
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-
|
|
4615
|
+
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-T3AXQB3R.js");
|
|
4578
4616
|
const sm = getSleepManagerIfReady2();
|
|
4579
4617
|
if (!sm) return c.json({ error: "Sleep manager not initialized" }, 503);
|
|
4580
4618
|
if (sm.isSleeping(name)) return c.json({ error: "Mind is already sleeping" }, 409);
|
|
@@ -4594,7 +4632,7 @@ ${user.trimEnd()}
|
|
|
4594
4632
|
const name = c.req.param("name");
|
|
4595
4633
|
const entry = await findMind(name);
|
|
4596
4634
|
if (!entry) return c.json({ error: "Mind not found" }, 404);
|
|
4597
|
-
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-
|
|
4635
|
+
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-T3AXQB3R.js");
|
|
4598
4636
|
const sm = getSleepManagerIfReady2();
|
|
4599
4637
|
if (!sm) return c.json({ error: "Sleep manager not initialized" }, 503);
|
|
4600
4638
|
const sleepState = sm.getState(name);
|
|
@@ -4609,7 +4647,7 @@ ${user.trimEnd()}
|
|
|
4609
4647
|
const name = c.req.param("name");
|
|
4610
4648
|
const entry = await findMind(name);
|
|
4611
4649
|
if (!entry) return c.json({ error: "Mind not found" }, 404);
|
|
4612
|
-
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-
|
|
4650
|
+
const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-T3AXQB3R.js");
|
|
4613
4651
|
const sm = getSleepManagerIfReady2();
|
|
4614
4652
|
if (!sm) return c.json({ error: "Sleep manager not initialized" }, 503);
|
|
4615
4653
|
const flushed = await sm.flushQueuedMessages(name);
|
|
@@ -4627,7 +4665,7 @@ ${user.trimEnd()}
|
|
|
4627
4665
|
if (body.avatar !== void 0) profile.avatar = basename(body.avatar);
|
|
4628
4666
|
config2.profile = profile;
|
|
4629
4667
|
writeVoluteConfig(dir, config2);
|
|
4630
|
-
const { syncMindProfile: syncMindProfile2 } = await import("./auth-
|
|
4668
|
+
const { syncMindProfile: syncMindProfile2 } = await import("./auth-VYW2ECCE.js");
|
|
4631
4669
|
await syncMindProfile2(name, profile);
|
|
4632
4670
|
broadcast({ type: "profile_updated", mind: name, summary: `${name} profile updated` });
|
|
4633
4671
|
return c.json({ ok: true });
|
|
@@ -4674,7 +4712,7 @@ ${user.trimEnd()}
|
|
|
4674
4712
|
const config2 = readVoluteConfig(dir);
|
|
4675
4713
|
const displayNameSet = !!config2?.profile?.displayName;
|
|
4676
4714
|
const avatarSet = !!config2?.profile?.avatar;
|
|
4677
|
-
const { isImagegenEnabled } = await import("./setup-
|
|
4715
|
+
const { isImagegenEnabled } = await import("./setup-3434PQ5Q.js");
|
|
4678
4716
|
const imagegenEnabled = isImagegenEnabled();
|
|
4679
4717
|
const done = [];
|
|
4680
4718
|
const remaining = [];
|
|
@@ -4712,7 +4750,7 @@ ${user.trimEnd()}
|
|
|
4712
4750
|
try {
|
|
4713
4751
|
const spiritEntry = await findMind("volute");
|
|
4714
4752
|
if (spiritEntry) {
|
|
4715
|
-
const { spiritDir } = await import("./spirit-
|
|
4753
|
+
const { spiritDir } = await import("./spirit-KTBHLULO.js");
|
|
4716
4754
|
const sDir = spiritEntry.dir ?? spiritDir();
|
|
4717
4755
|
const spiritConfig = readVoluteConfig(sDir);
|
|
4718
4756
|
if (spiritConfig?.schedules) {
|
|
@@ -4720,7 +4758,7 @@ ${user.trimEnd()}
|
|
|
4720
4758
|
spiritConfig.schedules = spiritConfig.schedules.filter((s) => s.id !== nurtureId);
|
|
4721
4759
|
if (spiritConfig.schedules.length === 0) spiritConfig.schedules = void 0;
|
|
4722
4760
|
writeVoluteConfig(sDir, spiritConfig);
|
|
4723
|
-
const { getScheduler: getScheduler2 } = await import("./scheduler-
|
|
4761
|
+
const { getScheduler: getScheduler2 } = await import("./scheduler-SXELVRWO.js");
|
|
4724
4762
|
getScheduler2().loadSchedules("volute", sDir);
|
|
4725
4763
|
}
|
|
4726
4764
|
}
|
|
@@ -4772,7 +4810,11 @@ ${user.trimEnd()}
|
|
|
4772
4810
|
body = await c.req.json();
|
|
4773
4811
|
} catch {
|
|
4774
4812
|
}
|
|
4775
|
-
const
|
|
4813
|
+
const oldTemplate = entry.template ?? "claude";
|
|
4814
|
+
const template = body.template ?? oldTemplate;
|
|
4815
|
+
if (!isKnownTemplate(template)) {
|
|
4816
|
+
return c.json({ error: `Unknown template: ${template}` }, 400);
|
|
4817
|
+
}
|
|
4776
4818
|
const UPGRADE_BRANCH = "upgrade";
|
|
4777
4819
|
const upgradeVariantName = `${mindName}-upgrade`;
|
|
4778
4820
|
const worktreeDir = resolve11(dir, ".variants", UPGRADE_BRANCH);
|
|
@@ -4841,7 +4883,8 @@ ${user.trimEnd()}
|
|
|
4841
4883
|
worktreeDir,
|
|
4842
4884
|
upgradeVariantName,
|
|
4843
4885
|
UPGRADE_BRANCH,
|
|
4844
|
-
template
|
|
4886
|
+
template,
|
|
4887
|
+
oldTemplate
|
|
4845
4888
|
);
|
|
4846
4889
|
return c.json(result);
|
|
4847
4890
|
} catch (err) {
|
|
@@ -4973,7 +5016,8 @@ ${user.trimEnd()}
|
|
|
4973
5016
|
worktreeDir,
|
|
4974
5017
|
upgradeVariantName,
|
|
4975
5018
|
UPGRADE_BRANCH,
|
|
4976
|
-
template
|
|
5019
|
+
template,
|
|
5020
|
+
oldTemplate
|
|
4977
5021
|
);
|
|
4978
5022
|
return c.json(result);
|
|
4979
5023
|
} catch (err) {
|
|
@@ -5149,7 +5193,7 @@ ${user.trimEnd()}
|
|
|
5149
5193
|
}
|
|
5150
5194
|
writeVoluteConfig(dir, existing);
|
|
5151
5195
|
if (body.unescapeNewlines !== void 0) {
|
|
5152
|
-
const { clearEchoTextCache } = await import("./echo-text-
|
|
5196
|
+
const { clearEchoTextCache } = await import("./echo-text-QVPS6QDM.js");
|
|
5153
5197
|
clearEchoTextCache(name);
|
|
5154
5198
|
}
|
|
5155
5199
|
const needsConfigJson = body.model !== void 0 || body.thinkingLevel !== void 0 || body.maxThinkingTokens !== void 0 || body.compaction !== void 0;
|
|
@@ -5226,7 +5270,7 @@ ${user.trimEnd()}
|
|
|
5226
5270
|
}
|
|
5227
5271
|
if (entry.mindType === "spirit" && body.model !== void 0) {
|
|
5228
5272
|
try {
|
|
5229
|
-
const { readGlobalConfig: readGlobalConfig2, writeGlobalConfig: writeGlobalConfig2 } = await import("./setup-
|
|
5273
|
+
const { readGlobalConfig: readGlobalConfig2, writeGlobalConfig: writeGlobalConfig2 } = await import("./setup-3434PQ5Q.js");
|
|
5230
5274
|
const globalConfig = readGlobalConfig2();
|
|
5231
5275
|
globalConfig.spiritModel = body.model;
|
|
5232
5276
|
writeGlobalConfig2(globalConfig);
|
|
@@ -5254,7 +5298,7 @@ ${user.trimEnd()}
|
|
|
5254
5298
|
if (!body.systemPrompt || !body.message) {
|
|
5255
5299
|
return c.json({ error: "systemPrompt and message required" }, 400);
|
|
5256
5300
|
}
|
|
5257
|
-
const { aiComplete: aiCompleteFn, isAiConfigured } = await import("./ai-service-
|
|
5301
|
+
const { aiComplete: aiCompleteFn, isAiConfigured } = await import("./ai-service-ZHEPFC3U.js");
|
|
5258
5302
|
if (!isAiConfigured()) {
|
|
5259
5303
|
return c.json({ error: "AI service not configured" }, 503);
|
|
5260
5304
|
}
|
|
@@ -5998,7 +6042,7 @@ var app15 = new Hono17().get("/:name/clock/status", requireSelf(), async (c) =>
|
|
|
5998
6042
|
const body = await c.req.text();
|
|
5999
6043
|
const message = `[webhook: ${event}] ${body}`;
|
|
6000
6044
|
try {
|
|
6001
|
-
const { sendSystemMessage } = await import("./system-chat-
|
|
6045
|
+
const { sendSystemMessage } = await import("./system-chat-HCPHUQGI.js");
|
|
6002
6046
|
await sendSystemMessage(name, message);
|
|
6003
6047
|
return c.json({ ok: true });
|
|
6004
6048
|
} catch (err) {
|
|
@@ -6052,7 +6096,7 @@ setup.get("/status", async (c) => {
|
|
|
6052
6096
|
let hasAccount = false;
|
|
6053
6097
|
if (hasSystem) {
|
|
6054
6098
|
try {
|
|
6055
|
-
const { listUsersByType: listUsersByType2 } = await import("./auth-
|
|
6099
|
+
const { listUsersByType: listUsersByType2 } = await import("./auth-VYW2ECCE.js");
|
|
6056
6100
|
const brains = await listUsersByType2("brain");
|
|
6057
6101
|
hasAccount = brains.length > 0;
|
|
6058
6102
|
} catch (err) {
|
|
@@ -6263,7 +6307,7 @@ setup.post("/account", async (c) => {
|
|
|
6263
6307
|
}
|
|
6264
6308
|
}
|
|
6265
6309
|
try {
|
|
6266
|
-
const { createUser: createUser2, updateUserProfile: updateUserProfile2 } = await import("./auth-
|
|
6310
|
+
const { createUser: createUser2, updateUserProfile: updateUserProfile2 } = await import("./auth-VYW2ECCE.js");
|
|
6267
6311
|
const user = await createUser2(body.username.trim(), body.password);
|
|
6268
6312
|
if (body.displayName?.trim()) {
|
|
6269
6313
|
await updateUserProfile2(user.id, { display_name: body.displayName.trim() });
|
|
@@ -6309,7 +6353,7 @@ setup.post("/models", async (c) => {
|
|
|
6309
6353
|
return c.json({ error: "Spirit model is required" }, 400);
|
|
6310
6354
|
}
|
|
6311
6355
|
try {
|
|
6312
|
-
const { setEnabledModels: setEnabledModels3, setUtilityModel: setUtilityModel2 } = await import("./ai-service-
|
|
6356
|
+
const { setEnabledModels: setEnabledModels3, setUtilityModel: setUtilityModel2 } = await import("./ai-service-ZHEPFC3U.js");
|
|
6313
6357
|
setEnabledModels3(body.models);
|
|
6314
6358
|
const config2 = readGlobalConfig();
|
|
6315
6359
|
config2.spiritModel = body.spiritModel.trim();
|
|
@@ -6327,15 +6371,15 @@ setup.post("/complete", async (c) => {
|
|
|
6327
6371
|
return c.json({ error: "Setup already complete" }, 400);
|
|
6328
6372
|
}
|
|
6329
6373
|
try {
|
|
6330
|
-
const { ensureSpiritProject, syncSpiritTemplate } = await import("./spirit-
|
|
6331
|
-
const { startSpiritFull } = await import("./mind-service-
|
|
6374
|
+
const { ensureSpiritProject, syncSpiritTemplate } = await import("./spirit-KTBHLULO.js");
|
|
6375
|
+
const { startSpiritFull } = await import("./mind-service-L7LMMDYJ.js");
|
|
6332
6376
|
await ensureSpiritProject();
|
|
6333
6377
|
await syncSpiritTemplate();
|
|
6334
6378
|
const warnings = [];
|
|
6335
6379
|
const config2 = readGlobalConfig();
|
|
6336
6380
|
if (config2.setup?.service && config2.setup?.type === "local") {
|
|
6337
6381
|
try {
|
|
6338
|
-
const { installUserService } = await import("./service-install-
|
|
6382
|
+
const { installUserService } = await import("./service-install-NLGAVTQS.js");
|
|
6339
6383
|
const installed = await installUserService(config2.port, config2.hostname);
|
|
6340
6384
|
if (!installed) {
|
|
6341
6385
|
warnings.push("Service installation is not supported on this platform.");
|
|
@@ -6363,8 +6407,8 @@ setup.post("/complete", async (c) => {
|
|
|
6363
6407
|
}
|
|
6364
6408
|
let spiritConversationId;
|
|
6365
6409
|
try {
|
|
6366
|
-
const { getOrCreateMindUser: getOrCreateMindUser2, listUsersByType: listUsersByType2 } = await import("./auth-
|
|
6367
|
-
const { createConversation: createConversation2, findDMConversation: findDMConversation2 } = await import("./conversations-
|
|
6410
|
+
const { getOrCreateMindUser: getOrCreateMindUser2, listUsersByType: listUsersByType2 } = await import("./auth-VYW2ECCE.js");
|
|
6411
|
+
const { createConversation: createConversation2, findDMConversation: findDMConversation2 } = await import("./conversations-KW7IYESK.js");
|
|
6368
6412
|
const spiritUser = await getOrCreateMindUser2("volute");
|
|
6369
6413
|
const brains = await listUsersByType2("brain");
|
|
6370
6414
|
const admin2 = brains.find((u) => u.role === "admin");
|
|
@@ -6386,8 +6430,8 @@ setup.post("/complete", async (c) => {
|
|
|
6386
6430
|
logger_default.info("setup complete state", { spiritConversationId, spiritStarted });
|
|
6387
6431
|
if (spiritConversationId && spiritStarted) {
|
|
6388
6432
|
try {
|
|
6389
|
-
const { deliverMessage: deliverMessage2 } = await import("./message-delivery-
|
|
6390
|
-
const { listUsersByType: listUsers2 } = await import("./auth-
|
|
6433
|
+
const { deliverMessage: deliverMessage2 } = await import("./message-delivery-X4CZE2L6.js");
|
|
6434
|
+
const { listUsersByType: listUsers2 } = await import("./auth-VYW2ECCE.js");
|
|
6391
6435
|
const admins = await listUsers2("brain");
|
|
6392
6436
|
const admin2 = admins.find((u) => u.role === "admin");
|
|
6393
6437
|
const adminName = admin2?.display_name || admin2?.username || "the admin";
|
|
@@ -7144,8 +7188,8 @@ var app21 = new Hono24().get("/:name/variants", async (c) => {
|
|
|
7144
7188
|
await cleanupVariant(variantName, projectRoot, variantEntry.dir);
|
|
7145
7189
|
if (variantName.endsWith("-upgrade") || variantName === "upgrade") {
|
|
7146
7190
|
try {
|
|
7147
|
-
const { computeTemplateHash: computeTemplateHash2 } = await import("./template-hash-
|
|
7148
|
-
const { setMindTemplateHash: setMindTemplateHash2 } = await import("./registry-
|
|
7191
|
+
const { computeTemplateHash: computeTemplateHash2 } = await import("./template-hash-JARTCRGS.js");
|
|
7192
|
+
const { setMindTemplateHash: setMindTemplateHash2 } = await import("./registry-RAXNFN7K.js");
|
|
7149
7193
|
const tmpl = parentEntry.template ?? "claude";
|
|
7150
7194
|
await setMindTemplateHash2(mindName, computeTemplateHash2(tmpl));
|
|
7151
7195
|
} catch (err) {
|
|
@@ -7917,18 +7961,18 @@ async function startDaemon(opts) {
|
|
|
7917
7961
|
const DAEMON_JSON_PATH = resolve17(systemDir, "daemon.json");
|
|
7918
7962
|
mkdirSync10(home, { recursive: true });
|
|
7919
7963
|
ensureSystemDir();
|
|
7920
|
-
const { migrateSetupCompleted } = await import("./setup-
|
|
7964
|
+
const { migrateSetupCompleted } = await import("./setup-3434PQ5Q.js");
|
|
7921
7965
|
migrateSetupCompleted();
|
|
7922
|
-
await (await import("./db-
|
|
7966
|
+
await (await import("./db-D4FVCA5I.js")).getDb();
|
|
7923
7967
|
try {
|
|
7924
7968
|
const { eq: eq7, and: and5 } = await import("drizzle-orm");
|
|
7925
|
-
const { users: users2 } = await import("./schema-
|
|
7926
|
-
const db = await (await import("./db-
|
|
7969
|
+
const { users: users2 } = await import("./schema-HHYJDG7B.js");
|
|
7970
|
+
const db = await (await import("./db-D4FVCA5I.js")).getDb();
|
|
7927
7971
|
await db.update(users2).set({ role: "system" }).where(and5(eq7(users2.user_type, "system"), eq7(users2.role, "user")));
|
|
7928
7972
|
} catch (err) {
|
|
7929
7973
|
logger_default.warn("failed to migrate system user role", logger_default.errorData(err));
|
|
7930
7974
|
}
|
|
7931
|
-
const { initSandbox } = await import("./sandbox-
|
|
7975
|
+
const { initSandbox } = await import("./sandbox-O3GZTS7J.js");
|
|
7932
7976
|
await initSandbox();
|
|
7933
7977
|
try {
|
|
7934
7978
|
await syncBuiltinSkills();
|
|
@@ -7955,7 +7999,7 @@ async function startDaemon(opts) {
|
|
|
7955
7999
|
logger_default.warn("failed to ensure #system channel", logger_default.errorData(err));
|
|
7956
8000
|
}
|
|
7957
8001
|
try {
|
|
7958
|
-
const { getOrCreateSystemUser: getOrCreateSystemUser2 } = await import("./auth-
|
|
8002
|
+
const { getOrCreateSystemUser: getOrCreateSystemUser2 } = await import("./auth-VYW2ECCE.js");
|
|
7959
8003
|
await getOrCreateSystemUser2();
|
|
7960
8004
|
} catch (err) {
|
|
7961
8005
|
logger_default.warn(
|
|
@@ -7964,12 +8008,12 @@ async function startDaemon(opts) {
|
|
|
7964
8008
|
);
|
|
7965
8009
|
}
|
|
7966
8010
|
const token = process.env.VOLUTE_DAEMON_TOKEN || randomBytes(32).toString("hex");
|
|
7967
|
-
const { readGlobalConfig: readGlobalConfig2 } = await import("./setup-
|
|
8011
|
+
const { readGlobalConfig: readGlobalConfig2 } = await import("./setup-3434PQ5Q.js");
|
|
7968
8012
|
const globalCfg = readGlobalConfig2();
|
|
7969
8013
|
let tls;
|
|
7970
8014
|
if (opts.tailscale || globalCfg.tailscale) {
|
|
7971
8015
|
try {
|
|
7972
|
-
const { getTailscaleTls } = await import("./tailscale-
|
|
8016
|
+
const { getTailscaleTls } = await import("./tailscale-PK3AI5EV.js");
|
|
7973
8017
|
const tlsConfig = await getTailscaleTls();
|
|
7974
8018
|
tls = { key: tlsConfig.key, cert: tlsConfig.cert };
|
|
7975
8019
|
logger_default.info("Tailscale HTTPS enabled", { hostname: tlsConfig.hostname });
|
|
@@ -8048,10 +8092,10 @@ async function startDaemon(opts) {
|
|
|
8048
8092
|
await Promise.all(workers);
|
|
8049
8093
|
}
|
|
8050
8094
|
try {
|
|
8051
|
-
const { isSetupComplete: isSetupComplete2 } = await import("./setup-
|
|
8095
|
+
const { isSetupComplete: isSetupComplete2 } = await import("./setup-3434PQ5Q.js");
|
|
8052
8096
|
if (isSetupComplete2()) {
|
|
8053
|
-
const { ensureSpiritProject, syncSpiritTemplate } = await import("./spirit-
|
|
8054
|
-
const { startSpiritFull } = await import("./mind-service-
|
|
8097
|
+
const { ensureSpiritProject, syncSpiritTemplate } = await import("./spirit-KTBHLULO.js");
|
|
8098
|
+
const { startSpiritFull } = await import("./mind-service-L7LMMDYJ.js");
|
|
8055
8099
|
await ensureSpiritProject();
|
|
8056
8100
|
await syncSpiritTemplate();
|
|
8057
8101
|
const spiritEntry = await findMind("volute");
|
|
@@ -8068,7 +8112,7 @@ async function startDaemon(opts) {
|
|
|
8068
8112
|
bridgeManager.startBridges(daemonPort).catch((err) => {
|
|
8069
8113
|
logger_default.warn("failed to start bridges", logger_default.errorData(err));
|
|
8070
8114
|
});
|
|
8071
|
-
import("./cloud-sync-
|
|
8115
|
+
import("./cloud-sync-GV6O2HN2.js").then(
|
|
8072
8116
|
({ consumeQueuedMessages }) => consumeQueuedMessages().catch((err) => {
|
|
8073
8117
|
logger_default.warn("failed to consume queued cloud messages", logger_default.errorData(err));
|
|
8074
8118
|
})
|
|
@@ -8076,7 +8120,7 @@ async function startDaemon(opts) {
|
|
|
8076
8120
|
logger_default.warn("failed to load cloud-sync module", logger_default.errorData(err));
|
|
8077
8121
|
});
|
|
8078
8122
|
try {
|
|
8079
|
-
const { backfillTemplateHashes, notifyVersionUpdate } = await import("./version-notify-
|
|
8123
|
+
const { backfillTemplateHashes, notifyVersionUpdate } = await import("./version-notify-SSNAWZMX.js");
|
|
8080
8124
|
backfillTemplateHashes();
|
|
8081
8125
|
notifyVersionUpdate().catch((err) => {
|
|
8082
8126
|
logger_default.warn("failed to send version update notifications", logger_default.errorData(err));
|