volute 0.55.0 → 0.56.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.
Files changed (160) hide show
  1. package/dist/{activity-events-TFAJBNBW.js → activity-events-YASF46HS.js} +2 -2
  2. package/dist/{ai-service-KEK2V3AP.js → ai-service-3UFNG6GI.js} +2 -4
  3. package/dist/{archive-FOHGXHPT.js → archive-L2OFBGDQ.js} +2 -2
  4. package/dist/{auth-Y27LTNZK.js → auth-N2F5ASAB.js} +3 -3
  5. package/dist/auto-upgrade-O4MQPYQF.js +46 -0
  6. package/dist/{avatar-image-SN576P45.js → avatar-image-QEKKUFDF.js} +2 -2
  7. package/dist/{backup-GDCWH6MC.js → backup-TPM7QQBQ.js} +12 -12
  8. package/dist/{channels-AFJWGX7W.js → channels-JP3GYTPX.js} +16 -16
  9. package/dist/{chat-HVPOZK3O.js → chat-7YCF4ZU5.js} +3 -3
  10. package/dist/{chunk-CKOA4LWV.js → chunk-2B4E6SL7.js} +7 -7
  11. package/dist/{chunk-NM5FDH4T.js → chunk-2LFTJNVH.js} +2 -2
  12. package/dist/{chunk-G3XAB4DK.js → chunk-2QLWAYIU.js} +1 -1
  13. package/dist/{chunk-KS62IHE2.js → chunk-45MCH4G4.js} +1 -1
  14. package/dist/{chunk-QVS3C4DK.js → chunk-4RZS7XCV.js} +4 -4
  15. package/dist/{chunk-DUV4EMNW.js → chunk-6LICEQGP.js} +2 -2
  16. package/dist/{chunk-LAUCO2HC.js → chunk-APDEUAIE.js} +1 -1
  17. package/dist/{chunk-XAG53RWY.js → chunk-CLH357FI.js} +1 -1
  18. package/dist/{chunk-HTSWDOJE.js → chunk-CVPCRWWC.js} +1 -1
  19. package/dist/{chunk-Z7TNIIHW.js → chunk-E2SN3ZOJ.js} +2 -39
  20. package/dist/{chunk-NCRG4SBR.js → chunk-ELQU2GBT.js} +23 -33
  21. package/dist/{chunk-OUGD5L5U.js → chunk-EPRLTYJR.js} +8 -8
  22. package/dist/{chunk-VTFXZPC3.js → chunk-EYFBT2KP.js} +8 -8
  23. package/dist/{chunk-PRZUBJ4K.js → chunk-FYMIGUJ5.js} +1 -1
  24. package/dist/{chunk-7XKPG66D.js → chunk-G7A5LEVI.js} +5 -5
  25. package/dist/{chunk-UEZC5MNB.js → chunk-GAAATVTM.js} +11 -11
  26. package/dist/{chunk-OFU6WJJZ.js → chunk-I3OJ342S.js} +2 -2
  27. package/dist/{chunk-FZUPIS3T.js → chunk-IABDYN4N.js} +3 -3
  28. package/dist/{chunk-TMTAHKYP.js → chunk-IOMBP2T5.js} +12 -12
  29. package/dist/{chunk-W3OIPJPB.js → chunk-IQROTVBG.js} +1 -1
  30. package/dist/{chunk-4VAQKLMU.js → chunk-IRNM4LSF.js} +3 -3
  31. package/dist/{chunk-OKM67ZWH.js → chunk-KN3UHV7O.js} +8 -3
  32. package/dist/{chunk-FSXPPOPM.js → chunk-KXM4K46T.js} +1 -1
  33. package/dist/{chunk-Z4Q6TQWL.js → chunk-LRRPKZBD.js} +2 -2
  34. package/dist/{chunk-OIOW3FPT.js → chunk-NA2NJXY4.js} +1 -1
  35. package/dist/{chunk-GLM7TVWP.js → chunk-OHHS5PSI.js} +1 -1
  36. package/dist/{chunk-CKPAVQNK.js → chunk-OPTA3BJ4.js} +36 -24
  37. package/dist/{chunk-HLWQ3P3R.js → chunk-PAO7JZNW.js} +16 -16
  38. package/dist/{chunk-6HBGUPBA.js → chunk-Q5M5QFKY.js} +2 -2
  39. package/dist/{chunk-IR2FW4W7.js → chunk-T7UMSTH2.js} +2 -2
  40. package/dist/{chunk-H6X6CKDN.js → chunk-TAVIVN2I.js} +2 -32
  41. package/dist/{chunk-BP2X5AIK.js → chunk-TGYKFUCF.js} +6 -6
  42. package/dist/{chunk-5U5GLZSD.js → chunk-TZ7OHGNL.js} +2 -2
  43. package/dist/{chunk-7AA4T2RT.js → chunk-UMQP5TC5.js} +1 -1
  44. package/dist/{chunk-3SFKY4GI.js → chunk-UNTDRIV2.js} +4 -4
  45. package/dist/{chunk-45QTYKQQ.js → chunk-V2M6PNLE.js} +2 -2
  46. package/dist/{chunk-IT4GEFDH.js → chunk-WTZD6LFW.js} +1 -1
  47. package/dist/{chunk-FLIEXG2T.js → chunk-XZP3FJ7Q.js} +1 -1
  48. package/dist/cli.js +26 -23
  49. package/dist/{clock-X7V3C7NL.js → clock-ZT5YT6HA.js} +2 -2
  50. package/dist/{cloud-sync-FM73SVFJ.js → cloud-sync-RTUXMYU2.js} +20 -20
  51. package/dist/{conversations-FH3ODBL7.js → conversations-ERMMPMOS.js} +3 -3
  52. package/dist/{create-P75ZFTVN.js → create-IUCFJXCE.js} +1 -1
  53. package/dist/{daemon-restart-JQMMMITM.js → daemon-restart-N2YOISNJ.js} +11 -6
  54. package/dist/daemon.js +125 -202
  55. package/dist/{db-BONH4SUG.js → db-BQFYIONA.js} +1 -1
  56. package/dist/{delivery-manager-H23Q23N7.js → delivery-manager-5EGCFN4K.js} +16 -16
  57. package/dist/{delivery-notices-S7TKOACE.js → delivery-notices-LZKZXWTX.js} +4 -4
  58. package/dist/{delivery-router-KHBVEVVL.js → delivery-router-U6Q22ZYU.js} +2 -2
  59. package/dist/doctor-225FYBAQ.js +454 -0
  60. package/dist/{down-UN2EDX2Y.js → down-3BQSPUAZ.js} +4 -4
  61. package/dist/echo-text-Y2DFTD7L.js +40 -0
  62. package/dist/{env-SQFCWW52.js → env-4YX5YNWZ.js} +2 -2
  63. package/dist/{exec-Z34TTUO3.js → exec-Y5VMDAVA.js} +2 -2
  64. package/dist/{export-VBNWM7I4.js → export-ASRHBMRG.js} +2 -2
  65. package/dist/{extensions-QD22GXZD.js → extensions-YEPEWURN.js} +20 -20
  66. package/dist/{files-DUGRXN6V.js → files-FASUDSZQ.js} +2 -2
  67. package/dist/{import-RDDUGGFI.js → import-O35Y7DSF.js} +5 -5
  68. package/dist/{isolation-UQPDO34R.js → isolation-ZOAUXYXA.js} +2 -2
  69. package/dist/{login-57MMYILL.js → login-54TZQQP4.js} +5 -5
  70. package/dist/{logout-YFZAJRPY.js → logout-4G46Z4RU.js} +1 -1
  71. package/dist/message-delivery-HBTMGWFU.js +46 -0
  72. package/dist/{mind-BARCLI7O.js → mind-IKMX7K7G.js} +8 -24
  73. package/dist/{mind-activity-tracker-UT23RGBF.js → mind-activity-tracker-ABAEIMA3.js} +3 -3
  74. package/dist/mind-service-LRVOQG2T.js +48 -0
  75. package/dist/{mind-sleep-24HV4RCA.js → mind-sleep-LZAFBDZD.js} +2 -2
  76. package/dist/{package-AUDBDKAO.js → package-X5O7OD2E.js} +3 -2
  77. package/dist/{prompts-MOBF3TMO.js → prompts-ZNOE3KN3.js} +2 -2
  78. package/dist/{registry-TRC2HJXR.js → registry-BTQXLDW6.js} +1 -1
  79. package/dist/{sandbox-VI7XWBIA.js → sandbox-OUFAGN45.js} +2 -2
  80. package/dist/scheduler-G6BCIVGP.js +27 -0
  81. package/dist/{seed-cmd-M6A7N7F3.js → seed-cmd-BGAW3WDY.js} +2 -2
  82. package/dist/{seed-create-TGFZW4IO.js → seed-create-SMCPEUFQ.js} +3 -3
  83. package/dist/{seed-readiness-XBH2MUNA.js → seed-readiness-RBANMSWW.js} +3 -3
  84. package/dist/{seed-sprout-3IC5ZVTI.js → seed-sprout-CSHV36N3.js} +6 -6
  85. package/dist/{send-DHYBAYK4.js → send-D3ADUBR5.js} +5 -5
  86. package/dist/{service-T4P5W6RS.js → service-SWEEBOOY.js} +3 -24
  87. package/dist/{service-install-R4SNYUVO.js → service-install-RCC26KDV.js} +4 -4
  88. package/dist/{setup-6KAH3GRW.js → setup-L5NZG2U3.js} +5 -5
  89. package/dist/{setup-WZSXHHRJ.js → setup-R7Q4HFJP.js} +1 -5
  90. package/dist/{skills-LKQCYFVP.js → skills-BCCU4OJW.js} +3 -3
  91. package/dist/sleep-manager-25P44HAO.js +42 -0
  92. package/dist/{spirit-FKXMGO3N.js → spirit-YPG2MU6W.js} +5 -5
  93. package/dist/spirit-availability-ZQM5IH4C.js +43 -0
  94. package/dist/{status-LCKTTIWS.js → status-BYPCJU6H.js} +4 -4
  95. package/dist/{system-events-ZYOCYAO2.js → system-events-CWC7CBKP.js} +2 -2
  96. package/dist/{systems-HL7SGSW7.js → systems-VDRUZXNF.js} +2 -2
  97. package/dist/{tailscale-F2IMBILZ.js → tailscale-4XY7B5A2.js} +1 -1
  98. package/dist/{template-staleness-IBD722PN.js → template-staleness-CL4V7BT7.js} +2 -2
  99. package/dist/{turn-tracker-BE34OI6O.js → turn-tracker-LZP5X6GZ.js} +6 -6
  100. package/dist/{up-J47J5JRB.js → up-3AAN4GYY.js} +4 -4
  101. package/dist/{update-ILCPVNDD.js → update-2MWXRE2S.js} +4 -4
  102. package/dist/{update-check-SZ7B5IFI.js → update-check-PJOZXZYJ.js} +2 -2
  103. package/dist/variant-cleanup-K7RFMSH7.js +24 -0
  104. package/dist/{version-notify-KIXYNHJC.js → version-notify-QIDHR6WO.js} +5 -5
  105. package/dist/web-assets/assets/{index-CoU1eUKE.js → index-Bfvls20e.js} +3 -3
  106. package/dist/web-assets/index.html +1 -1
  107. package/drizzle/0000_crazy_epoch.sql +232 -0
  108. package/drizzle/README.md +42 -0
  109. package/drizzle/meta/0000_snapshot.json +1420 -3
  110. package/drizzle/meta/_journal.json +2 -128
  111. package/package.json +3 -2
  112. package/dist/auto-upgrade-2MZF7NG3.js +0 -46
  113. package/dist/echo-text-ULEIFJJF.js +0 -40
  114. package/dist/message-delivery-LU4EP244.js +0 -46
  115. package/dist/migrate-init-infrastructure-Z72UJ5NT.js +0 -44
  116. package/dist/migrate-name-placeholder-64AEAWPE.js +0 -37
  117. package/dist/migrate-thread-config-SVF2M3D3.js +0 -90
  118. package/dist/mind-service-ZJCUBAUL.js +0 -48
  119. package/dist/scheduler-GLINVC2B.js +0 -27
  120. package/dist/seed-5JGR7ZRA.js +0 -11
  121. package/dist/sleep-manager-Q3ITFNOJ.js +0 -42
  122. package/dist/spirit-availability-5R2WYSWF.js +0 -43
  123. package/dist/sprout-VEW3CUNX.js +0 -11
  124. package/dist/variant-HHDTW74J.js +0 -62
  125. package/dist/variant-cleanup-JGJZ5KB4.js +0 -24
  126. package/drizzle/0000_baseline.sql +0 -152
  127. package/drizzle/0001_add_conversation_private.sql +0 -1
  128. package/drizzle/0002_turns.sql +0 -21
  129. package/drizzle/0003_turn_feed_links.sql +0 -11
  130. package/drizzle/0004_spirits.sql +0 -5
  131. package/drizzle/0005_meta_summaries.sql +0 -15
  132. package/drizzle/0006_channels.sql +0 -17
  133. package/drizzle/0007_drop_conversation_name_title.sql +0 -11
  134. package/drizzle/0008_performance_indexes.sql +0 -6
  135. package/drizzle/0009_mind_notices.sql +0 -14
  136. package/drizzle/0010_delivery_queue_redrive.sql +0 -10
  137. package/drizzle/0011_drop_turn_summary_event_id.sql +0 -3
  138. package/drizzle/0012_channel_gates.sql +0 -17
  139. package/drizzle/0013_variant_purpose.sql +0 -3
  140. package/drizzle/0014_system_events.sql +0 -26
  141. package/drizzle/0015_rename_session_to_thread.sql +0 -12
  142. package/drizzle/0016_brain_to_human.sql +0 -4
  143. package/drizzle/0017_event_history_rows.sql +0 -9
  144. package/drizzle/0018_api_tokens.sql +0 -20
  145. package/drizzle/meta/0001_snapshot.json +0 -7
  146. package/drizzle/meta/0002_snapshot.json +0 -7
  147. package/drizzle/meta/0003_snapshot.json +0 -7
  148. package/drizzle/meta/0004_snapshot.json +0 -7
  149. package/drizzle/meta/0005_snapshot.json +0 -7
  150. package/drizzle/meta/0006_snapshot.json +0 -7
  151. package/drizzle/meta/0007_snapshot.json +0 -7
  152. package/dist/{env-7AZFBPWX.js → env-IBW2QI6K.js} +5 -5
  153. package/dist/{login-4NUS72Z5.js → login-RJJTCVR3.js} +3 -3
  154. package/dist/{mind-contacts-PEXCDRXA.js → mind-contacts-KV64UDJS.js} +6 -6
  155. package/dist/{mind-history-RZMMCHMX.js → mind-history-H45GM2M2.js} +6 -6
  156. package/dist/{register-WNCSOTAU.js → register-OX4HRSGC.js} +3 -3
  157. package/dist/{restart-B4GNMVF2.js → restart-AGEGNSYQ.js} +4 -4
  158. package/dist/{skill-QYTBUDNQ.js → skill-B5OJEQUA.js} +4 -4
  159. package/dist/{start-BDHJVOVX.js → start-MUMNFR52.js} +3 -3
  160. package/dist/{stop-45QYSGYS.js → stop-EKERNYTX.js} +4 -4
package/dist/daemon.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  readBackupState,
7
7
  resticVersion,
8
8
  runBackup
9
- } from "./chunk-IR2FW4W7.js";
9
+ } from "./chunk-T7UMSTH2.js";
10
10
  import {
11
11
  acceptPending,
12
12
  formatFileSize,
@@ -14,20 +14,20 @@ import {
14
14
  rejectPending,
15
15
  stageFile,
16
16
  validateFilePath
17
- } from "./chunk-KS62IHE2.js";
18
- import {
19
- getMemoryStatus
20
- } from "./chunk-5RBEEAKW.js";
17
+ } from "./chunk-45MCH4G4.js";
21
18
  import {
22
19
  findOpenClawSession,
23
20
  importOpenClawConnectors,
24
21
  importPiSession,
25
22
  parseNameFromIdentity
26
- } from "./chunk-NM5FDH4T.js";
23
+ } from "./chunk-2LFTJNVH.js";
24
+ import {
25
+ getMemoryStatus
26
+ } from "./chunk-5RBEEAKW.js";
27
27
  import {
28
28
  SPIRIT_NOTICE_PREFIX,
29
29
  ensureSpiritAvailable
30
- } from "./chunk-3SFKY4GI.js";
30
+ } from "./chunk-UNTDRIV2.js";
31
31
  import {
32
32
  TEMPLATE_BRANCH,
33
33
  UpgradeInProgressError,
@@ -45,29 +45,29 @@ import {
45
45
  upgradeDiff,
46
46
  upgradeInProgress,
47
47
  validateBranchName
48
- } from "./chunk-OUGD5L5U.js";
48
+ } from "./chunk-EPRLTYJR.js";
49
49
  import {
50
50
  isTemplateStale
51
- } from "./chunk-FSXPPOPM.js";
51
+ } from "./chunk-KXM4K46T.js";
52
52
  import {
53
53
  computeTemplateHash
54
54
  } from "./chunk-YU5EYQAE.js";
55
55
  import {
56
56
  cleanupVariant
57
- } from "./chunk-QVS3C4DK.js";
57
+ } from "./chunk-4RZS7XCV.js";
58
58
  import {
59
59
  isHomeOnlyArchive
60
- } from "./chunk-FLIEXG2T.js";
60
+ } from "./chunk-XZP3FJ7Q.js";
61
61
  import {
62
62
  evaluateSeedChecklist
63
- } from "./chunk-45QTYKQQ.js";
63
+ } from "./chunk-V2M6PNLE.js";
64
64
  import {
65
65
  PLATFORMS,
66
66
  echoTextToChannel,
67
67
  fixModelEscapes,
68
68
  getPlatformDriver,
69
69
  routeOutboundBridge
70
- } from "./chunk-VTFXZPC3.js";
70
+ } from "./chunk-EYFBT2KP.js";
71
71
  import {
72
72
  getBridgeConfig,
73
73
  readBridgesConfig,
@@ -76,12 +76,12 @@ import {
76
76
  resolveChannelMapping,
77
77
  setBridgeConfig,
78
78
  setChannelMapping
79
- } from "./chunk-G3XAB4DK.js";
79
+ } from "./chunk-2QLWAYIU.js";
80
80
  import {
81
81
  checkForUpdate,
82
82
  checkForUpdateCached,
83
83
  getCurrentVersion
84
- } from "./chunk-LAUCO2HC.js";
84
+ } from "./chunk-APDEUAIE.js";
85
85
  import {
86
86
  SESSION_MAX_AGE,
87
87
  announceSprout,
@@ -130,8 +130,8 @@ import {
130
130
  uninstallNpmExtension,
131
131
  willGateMessage,
132
132
  writeSystemsConfig
133
- } from "./chunk-NCRG4SBR.js";
134
- import "./chunk-UEZC5MNB.js";
133
+ } from "./chunk-ELQU2GBT.js";
134
+ import "./chunk-GAAATVTM.js";
135
135
  import {
136
136
  applyInitFiles,
137
137
  composeTemplate,
@@ -143,10 +143,10 @@ import {
143
143
  import {
144
144
  getScheduler,
145
145
  initScheduler
146
- } from "./chunk-CKOA4LWV.js";
146
+ } from "./chunk-2B4E6SL7.js";
147
147
  import {
148
148
  recordDeliveryFailure
149
- } from "./chunk-FZUPIS3T.js";
149
+ } from "./chunk-IABDYN4N.js";
150
150
  import {
151
151
  UnknownChannelError,
152
152
  checkStaleSend,
@@ -156,7 +156,7 @@ import {
156
156
  initDeliveryManager,
157
157
  isConversationId,
158
158
  publishTypingForChannels
159
- } from "./chunk-TMTAHKYP.js";
159
+ } from "./chunk-IOMBP2T5.js";
160
160
  import {
161
161
  MindStartupError,
162
162
  RestartTracker,
@@ -166,7 +166,7 @@ import {
166
166
  initMindManager,
167
167
  syncProviderToMinds,
168
168
  tryGetMindManager
169
- } from "./chunk-HLWQ3P3R.js";
169
+ } from "./chunk-PAO7JZNW.js";
170
170
  import {
171
171
  SYSTEM_MIND,
172
172
  assignSession,
@@ -187,11 +187,11 @@ import {
187
187
  takeErrored,
188
188
  trackToolUse,
189
189
  utcDateTimeStr
190
- } from "./chunk-BP2X5AIK.js";
190
+ } from "./chunk-TGYKFUCF.js";
191
191
  import {
192
192
  isSandboxEnabled,
193
193
  wrapForSandbox
194
- } from "./chunk-XAG53RWY.js";
194
+ } from "./chunk-CLH357FI.js";
195
195
  import {
196
196
  addMessage,
197
197
  createChannel,
@@ -227,15 +227,15 @@ import {
227
227
  subscribe as subscribe3,
228
228
  subscribeParticipantAdded,
229
229
  updateChannelSettings
230
- } from "./chunk-6HBGUPBA.js";
230
+ } from "./chunk-Q5M5QFKY.js";
231
231
  import {
232
232
  getActiveMinds,
233
233
  onMindEvent,
234
234
  stopAll
235
- } from "./chunk-7AA4T2RT.js";
235
+ } from "./chunk-UMQP5TC5.js";
236
236
  import {
237
237
  normalizeAvatar
238
- } from "./chunk-IT4GEFDH.js";
238
+ } from "./chunk-WTZD6LFW.js";
239
239
  import {
240
240
  safeResolveWithinBase
241
241
  } from "./chunk-DW4TRDOZ.js";
@@ -245,7 +245,7 @@ import {
245
245
  } from "./chunk-WCFSBH33.js";
246
246
  import {
247
247
  extractTextContent
248
- } from "./chunk-W3OIPJPB.js";
248
+ } from "./chunk-IQROTVBG.js";
249
249
  import {
250
250
  approveUser,
251
251
  changePassword,
@@ -267,14 +267,14 @@ import {
267
267
  updateUserProfile,
268
268
  verifyUser,
269
269
  withSenderDisplayNames
270
- } from "./chunk-OFU6WJJZ.js";
270
+ } from "./chunk-I3OJ342S.js";
271
271
  import {
272
272
  broadcast,
273
273
  getEventsSince,
274
274
  nextEventId,
275
275
  publish,
276
276
  subscribe
277
- } from "./chunk-PRZUBJ4K.js";
277
+ } from "./chunk-FYMIGUJ5.js";
278
278
  import {
279
279
  MIND_LEVEL_THREAD,
280
280
  captureReflection,
@@ -290,7 +290,7 @@ import {
290
290
  listEvents,
291
291
  parseMeta,
292
292
  recordNotice
293
- } from "./chunk-DUV4EMNW.js";
293
+ } from "./chunk-6LICEQGP.js";
294
294
  import {
295
295
  parseDbTimestamp,
296
296
  publish as publish2,
@@ -304,7 +304,7 @@ import {
304
304
  getPrompt,
305
305
  getPromptIfCustom,
306
306
  substitute
307
- } from "./chunk-HTSWDOJE.js";
307
+ } from "./chunk-CVPCRWWC.js";
308
308
  import {
309
309
  SEED_SKILLS,
310
310
  STANDARD_SKILLS,
@@ -325,8 +325,8 @@ import {
325
325
  syncBuiltinSkills,
326
326
  uninstallSkill,
327
327
  updateSkill
328
- } from "./chunk-4VAQKLMU.js";
329
- import "./chunk-CKPAVQNK.js";
328
+ } from "./chunk-IRNM4LSF.js";
329
+ import "./chunk-OPTA3BJ4.js";
330
330
  import {
331
331
  chownMindDir,
332
332
  chownMindFile,
@@ -338,14 +338,14 @@ import {
338
338
  isIsolationEnabled,
339
339
  resolveVoluteBin,
340
340
  wrapForIsolation
341
- } from "./chunk-OIOW3FPT.js";
341
+ } from "./chunk-NA2NJXY4.js";
342
342
  import {
343
343
  loadMergedEnv,
344
344
  mindEnvPath,
345
345
  readEnv,
346
346
  sharedEnvPath,
347
347
  writeEnv
348
- } from "./chunk-GLM7TVWP.js";
348
+ } from "./chunk-OHHS5PSI.js";
349
349
  import {
350
350
  OAuthRefreshError,
351
351
  addCustomModel,
@@ -371,7 +371,7 @@ import {
371
371
  setProviderRefreshHook,
372
372
  setUtilityModel,
373
373
  unqualifyModelId
374
- } from "./chunk-Z7TNIIHW.js";
374
+ } from "./chunk-E2SN3ZOJ.js";
375
375
  import {
376
376
  logBuffer,
377
377
  logger_default
@@ -410,7 +410,7 @@ import {
410
410
  voluteHome,
411
411
  voluteSystemDir,
412
412
  writeGlobalConfig
413
- } from "./chunk-H6X6CKDN.js";
413
+ } from "./chunk-TAVIVN2I.js";
414
414
  import {
415
415
  activity,
416
416
  channels,
@@ -540,7 +540,7 @@ var BackupManager = class {
540
540
  } catch (pubErr) {
541
541
  blog.error("failed to publish backup-failure activity", logger_default.errorData(pubErr));
542
542
  }
543
- const { deliverEvent: deliverEvent2 } = await import("./system-events-ZYOCYAO2.js");
543
+ const { deliverEvent: deliverEvent2 } = await import("./system-events-CWC7CBKP.js");
544
544
  await deliverEvent2(getSpiritName(), {
545
545
  type: "notice",
546
546
  meta: { subtype: "backup" },
@@ -1505,7 +1505,7 @@ var app = new Hono().post("/restart", requireAdmin, (c) => {
1505
1505
  config2.name = name.trim() || void 0;
1506
1506
  writeGlobalConfig(config2);
1507
1507
  if (config2.name !== previousName) {
1508
- const { notifySpiritSystemChange } = await import("./spirit-FKXMGO3N.js");
1508
+ const { notifySpiritSystemChange } = await import("./spirit-YPG2MU6W.js");
1509
1509
  await notifySpiritSystemChange();
1510
1510
  }
1511
1511
  return c.json({ name: config2.name ?? null });
@@ -2747,7 +2747,7 @@ async function fanOutToMinds(opts) {
2747
2747
  );
2748
2748
  }
2749
2749
  if (ap.userType === "system") {
2750
- import("./spirit-availability-5R2WYSWF.js").then(({ ensureSpiritAvailable: ensureSpiritAvailable2 }) => ensureSpiritAvailable2()).catch((err) => logger_default.warn("fan-out: on-demand spirit start failed", logger_default.errorData(err)));
2750
+ import("./spirit-availability-ZQM5IH4C.js").then(({ ensureSpiritAvailable: ensureSpiritAvailable2 }) => ensureSpiritAvailable2()).catch((err) => logger_default.warn("fan-out: on-demand spirit start failed", logger_default.errorData(err)));
2751
2751
  }
2752
2752
  }
2753
2753
  return null;
@@ -2880,7 +2880,7 @@ var app4 = new Hono5().post("/:platform/inbound", zValidator4("json", inboundSch
2880
2880
  }
2881
2881
  const participants = await getParticipants(channel.id);
2882
2882
  if (!participants.some((p) => p.userId === puppet.id)) {
2883
- const { addParticipant } = await import("./conversations-FH3ODBL7.js");
2883
+ const { addParticipant } = await import("./conversations-ERMMPMOS.js");
2884
2884
  await addParticipant(channel.id, puppet.id);
2885
2885
  }
2886
2886
  const contentBlocks = body.content;
@@ -3164,12 +3164,12 @@ async function notifyMind(mindName, message) {
3164
3164
  const entry = await findMind(mindName);
3165
3165
  if (!entry) return false;
3166
3166
  try {
3167
- const { deliverEvent: deliverEvent2 } = await import("./system-events-ZYOCYAO2.js");
3167
+ const { deliverEvent: deliverEvent2 } = await import("./system-events-CWC7CBKP.js");
3168
3168
  const result = await deliverEvent2(mindName, { type: "file-share", body: message });
3169
3169
  if (result.delivered) return true;
3170
3170
  if (result.id == null) return false;
3171
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-Q3ITFNOJ.js");
3172
- const { getBaseName: getBaseName2 } = await import("./registry-TRC2HJXR.js");
3171
+ const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-25P44HAO.js");
3172
+ const { getBaseName: getBaseName2 } = await import("./registry-BTQXLDW6.js");
3173
3173
  return getSleepManagerIfReady2()?.isSleeping(await getBaseName2(mindName)) ?? false;
3174
3174
  } catch (err) {
3175
3175
  logger_default.warn(`[file-sharing] notify mind ${mindName} failed`, logger_default.errorData(err));
@@ -5047,7 +5047,7 @@ async function getMindStatus(name, port, registryRunning, seed) {
5047
5047
  let status = "stopped";
5048
5048
  let wakeAt = null;
5049
5049
  try {
5050
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-Q3ITFNOJ.js");
5050
+ const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-25P44HAO.js");
5051
5051
  const sleepManager = getSleepManagerIfReady2();
5052
5052
  if (sleepManager?.isSleeping(name)) {
5053
5053
  status = "sleeping";
@@ -5415,7 +5415,7 @@ var app13 = new Hono16().post("/", requireAdminOrSystem, zValidator6("json", cre
5415
5415
  );
5416
5416
  }
5417
5417
  {
5418
- const { mindLimitError, readGlobalConfig: readGlobalConfig2 } = await import("./setup-WZSXHHRJ.js");
5418
+ const { mindLimitError, readGlobalConfig: readGlobalConfig2 } = await import("./setup-R7Q4HFJP.js");
5419
5419
  const limitError = mindLimitError(await countCappedMinds(), readGlobalConfig2().maxMinds);
5420
5420
  if (limitError) return c.json({ error: limitError }, 409);
5421
5421
  }
@@ -5430,7 +5430,7 @@ var app13 = new Hono16().post("/", requireAdminOrSystem, zValidator6("json", cre
5430
5430
  const { publicKeyPem } = generateIdentity(dest);
5431
5431
  let effectiveModel = body.model;
5432
5432
  {
5433
- const { readGlobalConfig: readGlobal } = await import("./setup-WZSXHHRJ.js");
5433
+ const { readGlobalConfig: readGlobal } = await import("./setup-R7Q4HFJP.js");
5434
5434
  const mindDefaults = readGlobal().mindDefaults;
5435
5435
  const config2 = readVoluteConfig(dest);
5436
5436
  if (!config2) throw new Error("Failed to read volute.json after identity generation");
@@ -5511,7 +5511,7 @@ Your creator described you as: "${body.description}"
5511
5511
  }
5512
5512
  let skillSet = body.skills ?? (body.stage === "seed" ? SEED_SKILLS : getStandardSkillsWithExtensions());
5513
5513
  if (body.stage === "seed" && !body.skills) {
5514
- const { isImagegenEnabled } = await import("./setup-WZSXHHRJ.js");
5514
+ const { isImagegenEnabled } = await import("./setup-R7Q4HFJP.js");
5515
5515
  if (isImagegenEnabled()) {
5516
5516
  skillSet = [...skillSet, "imagegen"];
5517
5517
  }
@@ -5533,7 +5533,7 @@ Your creator described you as: "${body.description}"
5533
5533
  const spiritName = getSpiritName();
5534
5534
  const spiritEntry = await findMind(spiritName);
5535
5535
  if (spiritEntry) {
5536
- const { spiritDir } = await import("./spirit-FKXMGO3N.js");
5536
+ const { spiritDir } = await import("./spirit-YPG2MU6W.js");
5537
5537
  const sDir = spiritEntry.dir ?? spiritDir();
5538
5538
  const spiritConfig = readVoluteConfig(sDir) ?? {};
5539
5539
  const schedules = spiritConfig.schedules ?? [];
@@ -5548,7 +5548,7 @@ Your creator described you as: "${body.description}"
5548
5548
  });
5549
5549
  spiritConfig.schedules = schedules;
5550
5550
  writeVoluteConfig(sDir, spiritConfig);
5551
- const { getScheduler: getScheduler2 } = await import("./scheduler-GLINVC2B.js");
5551
+ const { getScheduler: getScheduler2 } = await import("./scheduler-G6BCIVGP.js");
5552
5552
  getScheduler2().loadSchedules(spiritName, sDir);
5553
5553
  }
5554
5554
  }
@@ -5856,7 +5856,7 @@ ${user.trimEnd()}
5856
5856
  const manager = getMindManager();
5857
5857
  try {
5858
5858
  if (context?.type === "reload") {
5859
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-Q3ITFNOJ.js");
5859
+ const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-25P44HAO.js");
5860
5860
  const sleepState = getSleepManagerIfReady2()?.getState(name);
5861
5861
  if (sleepState?.sleeping) {
5862
5862
  logger_default.info(`skipping reload for ${name} during sleep \u2014 will apply on next wake`);
@@ -6005,7 +6005,7 @@ ${user.trimEnd()}
6005
6005
  const name = c.req.param("name");
6006
6006
  const entry = await findMind(name);
6007
6007
  if (!entry) return c.json({ error: "Mind not found" }, 404);
6008
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-Q3ITFNOJ.js");
6008
+ const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-25P44HAO.js");
6009
6009
  const sm = getSleepManagerIfReady2();
6010
6010
  if (!sm) return c.json({ error: "Sleep manager not initialized" }, 503);
6011
6011
  return c.json(sm.getState(name));
@@ -6013,7 +6013,7 @@ ${user.trimEnd()}
6013
6013
  const name = c.req.param("name");
6014
6014
  const entry = await findMind(name);
6015
6015
  if (!entry) return c.json({ error: "Mind not found" }, 404);
6016
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-Q3ITFNOJ.js");
6016
+ const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-25P44HAO.js");
6017
6017
  const sm = getSleepManagerIfReady2();
6018
6018
  if (!sm) return c.json({ error: "Sleep manager not initialized" }, 503);
6019
6019
  if (sm.isSleeping(name)) return c.json({ error: "Mind is already sleeping" }, 409);
@@ -6033,7 +6033,7 @@ ${user.trimEnd()}
6033
6033
  const name = c.req.param("name");
6034
6034
  const entry = await findMind(name);
6035
6035
  if (!entry) return c.json({ error: "Mind not found" }, 404);
6036
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-Q3ITFNOJ.js");
6036
+ const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-25P44HAO.js");
6037
6037
  const sm = getSleepManagerIfReady2();
6038
6038
  if (!sm) return c.json({ error: "Sleep manager not initialized" }, 503);
6039
6039
  const sleepState = sm.getState(name);
@@ -6048,7 +6048,7 @@ ${user.trimEnd()}
6048
6048
  const name = c.req.param("name");
6049
6049
  const entry = await findMind(name);
6050
6050
  if (!entry) return c.json({ error: "Mind not found" }, 404);
6051
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-Q3ITFNOJ.js");
6051
+ const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-25P44HAO.js");
6052
6052
  const sm = getSleepManagerIfReady2();
6053
6053
  if (!sm) return c.json({ error: "Sleep manager not initialized" }, 503);
6054
6054
  const flushed = await sm.flushQueuedMessages(name);
@@ -6076,7 +6076,7 @@ ${user.trimEnd()}
6076
6076
  }
6077
6077
  config2.profile = profile;
6078
6078
  writeVoluteConfig(dir, config2);
6079
- const { syncMindProfile: syncMindProfile2 } = await import("./auth-Y27LTNZK.js");
6079
+ const { syncMindProfile: syncMindProfile2 } = await import("./auth-N2F5ASAB.js");
6080
6080
  await syncMindProfile2(name, profile);
6081
6081
  broadcast({ type: "profile_updated", mind: name, summary: `${name} profile updated` });
6082
6082
  return c.json({ ok: true });
@@ -6120,7 +6120,7 @@ ${user.trimEnd()}
6120
6120
  });
6121
6121
  }
6122
6122
  if (!force) {
6123
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-Q3ITFNOJ.js");
6123
+ const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-25P44HAO.js");
6124
6124
  if (getSleepManagerIfReady2()?.isSleeping(name)) {
6125
6125
  return c.json({ output: "" });
6126
6126
  }
@@ -6175,7 +6175,7 @@ ${user.trimEnd()}
6175
6175
  }
6176
6176
  }
6177
6177
  const dir = entry.dir ?? mindDir(name);
6178
- const { evaluateSeedChecklist: evaluateSeedChecklist2 } = await import("./seed-readiness-XBH2MUNA.js");
6178
+ const { evaluateSeedChecklist: evaluateSeedChecklist2 } = await import("./seed-readiness-RBANMSWW.js");
6179
6179
  const checklist = evaluateSeedChecklist2(dir);
6180
6180
  const done = [];
6181
6181
  const remaining = [];
@@ -6217,7 +6217,7 @@ ${user.trimEnd()}
6217
6217
  try {
6218
6218
  const sproutedDir = entry.dir ?? mindDir(name);
6219
6219
  if (setupDefaultDreaming(sproutedDir).schedulesChanged) {
6220
- const { getScheduler: getScheduler2 } = await import("./scheduler-GLINVC2B.js");
6220
+ const { getScheduler: getScheduler2 } = await import("./scheduler-G6BCIVGP.js");
6221
6221
  getScheduler2().loadSchedules(name, sproutedDir);
6222
6222
  }
6223
6223
  } catch (err) {
@@ -6227,7 +6227,7 @@ ${user.trimEnd()}
6227
6227
  const spiritName = getSpiritName();
6228
6228
  const spiritEntry = await findMind(spiritName);
6229
6229
  if (spiritEntry) {
6230
- const { firstWeekSchedules, spiritDir } = await import("./spirit-FKXMGO3N.js");
6230
+ const { firstWeekSchedules, spiritDir } = await import("./spirit-YPG2MU6W.js");
6231
6231
  const sDir = spiritEntry.dir ?? spiritDir();
6232
6232
  const spiritConfig = readVoluteConfig(sDir);
6233
6233
  if (spiritConfig) {
@@ -6241,7 +6241,7 @@ ${user.trimEnd()}
6241
6241
  spiritConfig.schedules = schedules;
6242
6242
  writeVoluteConfig(sDir, spiritConfig);
6243
6243
  try {
6244
- const { getScheduler: getScheduler2 } = await import("./scheduler-GLINVC2B.js");
6244
+ const { getScheduler: getScheduler2 } = await import("./scheduler-G6BCIVGP.js");
6245
6245
  getScheduler2().loadSchedules(spiritName, sDir);
6246
6246
  } catch (err) {
6247
6247
  logger_default.warn(
@@ -6362,16 +6362,6 @@ ${user.trimEnd()}
6362
6362
  return c.json({ error: msg }, 500);
6363
6363
  }
6364
6364
  }
6365
- if (body.accept) {
6366
- if (upgradeInProgress(mindName)) {
6367
- try {
6368
- await abortUpgrade(mindName);
6369
- } catch (err) {
6370
- logger_default.warn(`failed to clean up legacy upgrade variant for ${mindName}`, logger_default.errorData(err));
6371
- }
6372
- }
6373
- return c.json({ error: "Upgrades now auto-merge. Run 'volute mind upgrade' again." }, 400);
6374
- }
6375
6365
  if (body.diff) {
6376
6366
  if (!existsSync7(resolve11(dir, ".git"))) {
6377
6367
  return c.json({ error: "Mind has no git history \u2014 nothing to diff against" }, 400);
@@ -6549,7 +6539,7 @@ ${user.trimEnd()}
6549
6539
  }
6550
6540
  writeVoluteConfig(dir, existing);
6551
6541
  if (body.unescapeNewlines !== void 0) {
6552
- const { clearEchoTextCache } = await import("./echo-text-ULEIFJJF.js");
6542
+ const { clearEchoTextCache } = await import("./echo-text-Y2DFTD7L.js");
6553
6543
  clearEchoTextCache(name);
6554
6544
  }
6555
6545
  const needsConfigJson = body.model !== void 0 || body.thinkingLevel !== void 0 || body.compaction !== void 0;
@@ -6586,7 +6576,7 @@ ${user.trimEnd()}
6586
6576
  }
6587
6577
  if (entry.mindType === "spirit" && body.model !== void 0) {
6588
6578
  try {
6589
- const { readGlobalConfig: readGlobalConfig2, writeGlobalConfig: writeGlobalConfig2 } = await import("./setup-WZSXHHRJ.js");
6579
+ const { readGlobalConfig: readGlobalConfig2, writeGlobalConfig: writeGlobalConfig2 } = await import("./setup-R7Q4HFJP.js");
6590
6580
  const globalConfig = readGlobalConfig2();
6591
6581
  globalConfig.spiritModel = body.model;
6592
6582
  writeGlobalConfig2(globalConfig);
@@ -6663,7 +6653,7 @@ ${user.trimEnd()}
6663
6653
  if (!body.systemPrompt || !body.message) {
6664
6654
  return c.json({ error: "systemPrompt and message required" }, 400);
6665
6655
  }
6666
- const { aiComplete: aiCompleteFn, isAiConfigured: isAiConfigured2 } = await import("./ai-service-KEK2V3AP.js");
6656
+ const { aiComplete: aiCompleteFn, isAiConfigured: isAiConfigured2 } = await import("./ai-service-3UFNG6GI.js");
6667
6657
  if (!isAiConfigured2()) {
6668
6658
  return c.json({ error: "AI service not configured" }, 503);
6669
6659
  }
@@ -6831,26 +6821,10 @@ ${user.trimEnd()}
6831
6821
  const detail = c.req.query("detail") === "1";
6832
6822
  const db = await getDb();
6833
6823
  const typeFilter = detail ? void 0 : sql3`${mindHistory.type} IN ('inbound','event','outbound','tool_use','tool_result','text','thinking','activity')`;
6834
- let rows;
6835
- if (turnId) {
6836
- rows = await db.select().from(mindHistory).where(and5(eq5(mindHistory.mind, name), eq5(mindHistory.turn_id, turnId), typeFilter)).orderBy(mindHistory.id);
6837
- } else {
6838
- const session = c.req.query("session");
6839
- const fromId = parseInt(c.req.query("from_id") ?? "", 10);
6840
- const toId = parseInt(c.req.query("to_id") ?? "", 10);
6841
- if (!session || Number.isNaN(fromId) || Number.isNaN(toId)) {
6842
- return c.json({ error: "turn_id, or session with from_id and to_id, required" }, 400);
6843
- }
6844
- rows = await db.select().from(mindHistory).where(
6845
- and5(
6846
- eq5(mindHistory.mind, name),
6847
- eq5(mindHistory.thread, session),
6848
- sql3`${mindHistory.id} >= ${fromId}`,
6849
- sql3`${mindHistory.id} <= ${toId}`,
6850
- typeFilter
6851
- )
6852
- ).orderBy(mindHistory.id);
6824
+ if (!turnId) {
6825
+ return c.json({ error: "turn_id required" }, 400);
6853
6826
  }
6827
+ const rows = await db.select().from(mindHistory).where(and5(eq5(mindHistory.mind, name), eq5(mindHistory.turn_id, turnId), typeFilter)).orderBy(mindHistory.id);
6854
6828
  return c.json(rows);
6855
6829
  }).get("/:name/history/cross-session", requireSelf(), async (c) => {
6856
6830
  const name = c.req.param("name");
@@ -7337,7 +7311,6 @@ var app15 = new Hono18().get("/:name/clock/status", requireSelf(), async (c) =>
7337
7311
  if (body.message) schedule.message = body.message;
7338
7312
  if (body.messages?.length) schedule.messages = body.messages;
7339
7313
  if (body.script) schedule.script = body.script;
7340
- if (body.channel) schedule.channel = body.channel;
7341
7314
  if (body.thread) schedule.thread = body.thread;
7342
7315
  if (body.whileSleeping) schedule.whileSleeping = body.whileSleeping;
7343
7316
  schedules.push(schedule);
@@ -7402,7 +7375,6 @@ var app15 = new Hono18().get("/:name/clock/status", requireSelf(), async (c) =>
7402
7375
  );
7403
7376
  }
7404
7377
  if (body.enabled !== void 0) schedules[idx].enabled = body.enabled;
7405
- if (body.channel !== void 0) schedules[idx].channel = body.channel || void 0;
7406
7378
  if (body.thread !== void 0) schedules[idx].thread = body.thread || void 0;
7407
7379
  if (body.whileSleeping !== void 0)
7408
7380
  schedules[idx].whileSleeping = body.whileSleeping || void 0;
@@ -7432,7 +7404,7 @@ var app15 = new Hono18().get("/:name/clock/status", requireSelf(), async (c) =>
7432
7404
  const entry = await findMind(name);
7433
7405
  if (!entry) return c.json({ error: "Mind not found" }, 404);
7434
7406
  const body = await c.req.text();
7435
- const { deliverEvent: deliverEvent2 } = await import("./system-events-ZYOCYAO2.js");
7407
+ const { deliverEvent: deliverEvent2 } = await import("./system-events-CWC7CBKP.js");
7436
7408
  const { id, delivered } = await deliverEvent2(name, {
7437
7409
  type: "webhook",
7438
7410
  body,
@@ -7491,7 +7463,7 @@ setup.get("/status", async (c) => {
7491
7463
  let hasAccount = false;
7492
7464
  if (hasSystem) {
7493
7465
  try {
7494
- const { listUsersByType: listUsersByType2 } = await import("./auth-Y27LTNZK.js");
7466
+ const { listUsersByType: listUsersByType2 } = await import("./auth-N2F5ASAB.js");
7495
7467
  const brains = await listUsersByType2("human");
7496
7468
  hasAccount = brains.length > 0;
7497
7469
  } catch (err) {
@@ -7506,32 +7478,6 @@ setup.get("/status", async (c) => {
7506
7478
  spiritName: config2.setup?.spiritName ?? null
7507
7479
  });
7508
7480
  });
7509
- setup.post("/configure", async (c) => {
7510
- if (isSetupComplete()) {
7511
- return c.json({ error: "Setup already complete" }, 400);
7512
- }
7513
- let body;
7514
- try {
7515
- body = await c.req.json();
7516
- } catch {
7517
- return c.json({ error: "Invalid JSON in request body" }, 400);
7518
- }
7519
- if (!body.name?.trim()) {
7520
- return c.json({ error: "System name is required" }, 400);
7521
- }
7522
- const setupType = body.type ?? "local";
7523
- if (setupType !== "local") {
7524
- return c.json({ error: "Web setup only supports local install type" }, 400);
7525
- }
7526
- try {
7527
- const config2 = writeSetupConfig(body.name.trim());
7528
- config2.setupCompleted = true;
7529
- writeGlobalConfig(config2);
7530
- return c.json({ ok: true, config: { name: config2.name, setup: config2.setup } });
7531
- } catch (err) {
7532
- return c.json({ error: `Failed to write configuration: ${err.message}` }, 500);
7533
- }
7534
- });
7535
7481
  setup.post("/system", async (c) => {
7536
7482
  if (isSetupComplete()) {
7537
7483
  return c.json({ error: "Setup already complete" }, 400);
@@ -7703,7 +7649,7 @@ setup.post("/account", async (c) => {
7703
7649
  }
7704
7650
  }
7705
7651
  try {
7706
- const { createUser: createUser2, updateUserProfile: updateUserProfile2 } = await import("./auth-Y27LTNZK.js");
7652
+ const { createUser: createUser2, updateUserProfile: updateUserProfile2 } = await import("./auth-N2F5ASAB.js");
7707
7653
  const user = await createUser2(body.username.trim(), body.password);
7708
7654
  if (body.displayName?.trim()) {
7709
7655
  await updateUserProfile2(user.id, { display_name: body.displayName.trim() });
@@ -7749,7 +7695,7 @@ setup.post("/models", async (c) => {
7749
7695
  return c.json({ error: "Spirit model is required" }, 400);
7750
7696
  }
7751
7697
  try {
7752
- const { setEnabledModels: setEnabledModels3, setUtilityModel: setUtilityModel2 } = await import("./ai-service-KEK2V3AP.js");
7698
+ const { setEnabledModels: setEnabledModels3, setUtilityModel: setUtilityModel2 } = await import("./ai-service-3UFNG6GI.js");
7753
7699
  setEnabledModels3(body.models);
7754
7700
  const config2 = readGlobalConfig();
7755
7701
  config2.spiritModel = body.spiritModel.trim();
@@ -7829,8 +7775,8 @@ setup.post("/complete", async (c) => {
7829
7775
  return c.json({ error: "Setup already complete" }, 400);
7830
7776
  }
7831
7777
  try {
7832
- const { ensureSpiritProject, syncSpiritTemplate } = await import("./spirit-FKXMGO3N.js");
7833
- const { startSpiritFull } = await import("./mind-service-ZJCUBAUL.js");
7778
+ const { ensureSpiritProject, syncSpiritTemplate } = await import("./spirit-YPG2MU6W.js");
7779
+ const { startSpiritFull } = await import("./mind-service-LRVOQG2T.js");
7834
7780
  await ensureSpiritProject();
7835
7781
  await syncSpiritTemplate();
7836
7782
  await notifyExtensionsSpiritReady();
@@ -7838,7 +7784,7 @@ setup.post("/complete", async (c) => {
7838
7784
  const config2 = readGlobalConfig();
7839
7785
  if (config2.setup?.service && config2.setup?.type === "local") {
7840
7786
  try {
7841
- const { installUserService } = await import("./service-install-R4SNYUVO.js");
7787
+ const { installUserService } = await import("./service-install-RCC26KDV.js");
7842
7788
  const installed = await installUserService(config2.port, config2.hostname);
7843
7789
  if (!installed) {
7844
7790
  warnings.push("Service installation is not supported on this platform.");
@@ -7868,8 +7814,8 @@ setup.post("/complete", async (c) => {
7868
7814
  }
7869
7815
  let spiritConversationId;
7870
7816
  try {
7871
- const { getOrCreateMindUser: getOrCreateMindUser2, listUsersByType: listUsersByType2 } = await import("./auth-Y27LTNZK.js");
7872
- const { createConversation: createConversation2, findDMConversation: findDMConversation2 } = await import("./conversations-FH3ODBL7.js");
7817
+ const { getOrCreateMindUser: getOrCreateMindUser2, listUsersByType: listUsersByType2 } = await import("./auth-N2F5ASAB.js");
7818
+ const { createConversation: createConversation2, findDMConversation: findDMConversation2 } = await import("./conversations-ERMMPMOS.js");
7873
7819
  const spiritUser = await getOrCreateMindUser2(spiritName);
7874
7820
  const brains = await listUsersByType2("human");
7875
7821
  const admin2 = brains.find((u) => u.role === "admin");
@@ -7891,8 +7837,8 @@ setup.post("/complete", async (c) => {
7891
7837
  logger_default.info("setup complete state", { spiritConversationId, spiritStarted });
7892
7838
  if (spiritConversationId && spiritStarted) {
7893
7839
  try {
7894
- const { deliverMessage: deliverMessage2 } = await import("./message-delivery-LU4EP244.js");
7895
- const { listUsersByType: listUsers2 } = await import("./auth-Y27LTNZK.js");
7840
+ const { deliverMessage: deliverMessage2 } = await import("./message-delivery-HBTMGWFU.js");
7841
+ const { listUsersByType: listUsers2 } = await import("./auth-N2F5ASAB.js");
7896
7842
  const admins = await listUsers2("human");
7897
7843
  const admin2 = admins.find((u) => u.role === "admin");
7898
7844
  if (admin2) {
@@ -9142,7 +9088,7 @@ var app22 = new Hono26().get("/:name/variants", async (c) => {
9142
9088
  if (variantName.endsWith("-upgrade") || variantName === "upgrade") {
9143
9089
  try {
9144
9090
  const { computeTemplateHash: computeTemplateHash2 } = await import("./template-hash-RJRMF6DT.js");
9145
- const { setMindTemplateHash: setMindTemplateHash2 } = await import("./registry-TRC2HJXR.js");
9091
+ const { setMindTemplateHash: setMindTemplateHash2 } = await import("./registry-BTQXLDW6.js");
9146
9092
  const tmpl = parentEntry.template ?? "claude";
9147
9093
  await setMindTemplateHash2(mindName, computeTemplateHash2(tmpl));
9148
9094
  } catch (err) {
@@ -10011,91 +9957,36 @@ async function startDaemon(opts) {
10011
9957
  const DAEMON_TOKEN_PATH = resolve18(systemDir, "daemon-token");
10012
9958
  mkdirSync10(home, { recursive: true });
10013
9959
  ensureSystemDir();
10014
- const { migrateConfigSecrets, migrateSetupCompleted } = await import("./setup-WZSXHHRJ.js");
10015
- migrateConfigSecrets();
10016
- migrateSetupCompleted();
10017
- const { migrateAiModelQualification } = await import("./ai-service-KEK2V3AP.js");
10018
- migrateAiModelQualification();
10019
- await (await import("./db-BONH4SUG.js")).getDb();
9960
+ await (await import("./db-BQFYIONA.js")).getDb();
10020
9961
  try {
10021
9962
  const { eq: eq9, and: and7 } = await import("drizzle-orm");
10022
9963
  const { users: users2 } = await import("./schema-ZZQVM4GR.js");
10023
- const db = await (await import("./db-BONH4SUG.js")).getDb();
9964
+ const db = await (await import("./db-BQFYIONA.js")).getDb();
10024
9965
  await db.update(users2).set({ role: "system" }).where(and7(eq9(users2.user_type, "system"), eq9(users2.role, "user")));
10025
9966
  } catch (err) {
10026
9967
  logger_default.warn("failed to migrate system user role", logger_default.errorData(err));
10027
9968
  }
10028
9969
  try {
10029
- const { migrateAvatarSizes } = await import("./avatar-image-SN576P45.js");
9970
+ const { migrateAvatarSizes } = await import("./avatar-image-QEKKUFDF.js");
10030
9971
  await migrateAvatarSizes();
10031
9972
  } catch (err) {
10032
9973
  logger_default.warn("avatar size migration failed", logger_default.errorData(err));
10033
9974
  }
10034
- try {
10035
- const { migrateThreadConfigs } = await import("./migrate-thread-config-SVF2M3D3.js");
10036
- await migrateThreadConfigs();
10037
- } catch (err) {
10038
- logger_default.warn("session\u2192thread config migration failed", logger_default.errorData(err));
10039
- }
10040
- try {
10041
- const { migrateNamePlaceholders } = await import("./migrate-name-placeholder-64AEAWPE.js");
10042
- await migrateNamePlaceholders();
10043
- } catch (err) {
10044
- logger_default.warn("{{name}} placeholder migration failed", logger_default.errorData(err));
10045
- }
10046
- try {
10047
- const { migrateInitInfrastructure } = await import("./migrate-init-infrastructure-Z72UJ5NT.js");
10048
- await migrateInitInfrastructure();
10049
- } catch (err) {
10050
- logger_default.warn("`.init/` infrastructure backfill failed", logger_default.errorData(err));
10051
- }
10052
- const { initSandbox } = await import("./sandbox-VI7XWBIA.js");
9975
+ const { initSandbox } = await import("./sandbox-OUFAGN45.js");
10053
9976
  await initSandbox();
10054
- try {
10055
- await syncBuiltinSkills();
10056
- } catch (err) {
10057
- logger_default.error("failed to sync built-in skills", logger_default.errorData(err));
10058
- }
10059
9977
  try {
10060
9978
  await loadAllExtensions(app_default, authMiddleware);
10061
9979
  notifyExtensionsDaemonStart();
10062
9980
  } catch (err) {
10063
9981
  logger_default.error("failed to load extensions", logger_default.errorData(err));
10064
9982
  }
10065
- await initDefaultSkills();
10066
- if (isAutoUpdateSkillsEnabled()) {
10067
- try {
10068
- await autoUpdateMindSkills();
10069
- } catch (err) {
10070
- logger_default.error("failed to auto-update mind skills", logger_default.errorData(err));
10071
- }
10072
- }
10073
- try {
10074
- await ensureSystemChannel();
10075
- } catch (err) {
10076
- logger_default.warn("failed to ensure #system channel", logger_default.errorData(err));
10077
- }
10078
- try {
10079
- await backfillSystemChannelMembers();
10080
- } catch (err) {
10081
- logger_default.warn("failed to backfill minds into #system", logger_default.errorData(err));
10082
- }
10083
- try {
10084
- const { getOrCreateSystemUser: getOrCreateSystemUser2 } = await import("./auth-Y27LTNZK.js");
10085
- await getOrCreateSystemUser2();
10086
- } catch (err) {
10087
- logger_default.warn(
10088
- "failed to ensure system user \u2014 system chat features will be unavailable",
10089
- logger_default.errorData(err)
10090
- );
10091
- }
10092
9983
  const token = process.env.VOLUTE_DAEMON_TOKEN || randomBytes3(32).toString("hex");
10093
- const { readGlobalConfig: readGlobalConfig2 } = await import("./setup-WZSXHHRJ.js");
9984
+ const { readGlobalConfig: readGlobalConfig2 } = await import("./setup-R7Q4HFJP.js");
10094
9985
  const globalCfg = readGlobalConfig2();
10095
9986
  let tls;
10096
9987
  if (opts.tailscale || globalCfg.tailscale) {
10097
9988
  try {
10098
- const { getTailscaleTls } = await import("./tailscale-F2IMBILZ.js");
9989
+ const { getTailscaleTls } = await import("./tailscale-4XY7B5A2.js");
10099
9990
  const tlsConfig = await getTailscaleTls();
10100
9991
  tls = { key: tlsConfig.key, cert: tlsConfig.cert };
10101
9992
  logger_default.info("Tailscale HTTPS enabled", { hostname: tlsConfig.hostname });
@@ -10127,6 +10018,38 @@ async function startDaemon(opts) {
10127
10018
  if (internalPort) daemonConfig.internalPort = internalPort;
10128
10019
  if (tls) daemonConfig.tls = true;
10129
10020
  writeDaemonConfig(systemDir, daemonConfig, token);
10021
+ try {
10022
+ await syncBuiltinSkills();
10023
+ } catch (err) {
10024
+ logger_default.error("failed to sync built-in skills", logger_default.errorData(err));
10025
+ }
10026
+ await initDefaultSkills();
10027
+ if (isAutoUpdateSkillsEnabled()) {
10028
+ try {
10029
+ await autoUpdateMindSkills();
10030
+ } catch (err) {
10031
+ logger_default.error("failed to auto-update mind skills", logger_default.errorData(err));
10032
+ }
10033
+ }
10034
+ try {
10035
+ await ensureSystemChannel();
10036
+ } catch (err) {
10037
+ logger_default.warn("failed to ensure #system channel", logger_default.errorData(err));
10038
+ }
10039
+ try {
10040
+ await backfillSystemChannelMembers();
10041
+ } catch (err) {
10042
+ logger_default.warn("failed to backfill minds into #system", logger_default.errorData(err));
10043
+ }
10044
+ try {
10045
+ const { getOrCreateSystemUser: getOrCreateSystemUser2 } = await import("./auth-N2F5ASAB.js");
10046
+ await getOrCreateSystemUser2();
10047
+ } catch (err) {
10048
+ logger_default.warn(
10049
+ "failed to ensure system user \u2014 system chat features will be unavailable",
10050
+ logger_default.errorData(err)
10051
+ );
10052
+ }
10130
10053
  const delivery = initDeliveryManager();
10131
10054
  const manager = initMindManager();
10132
10055
  manager.loadCrashAttempts();
@@ -10149,7 +10072,7 @@ async function startDaemon(opts) {
10149
10072
  const orphanedTurns = await completeOrphanedTurns();
10150
10073
  summarizeOrphanedTurns(orphanedTurns);
10151
10074
  try {
10152
- const { reconcileVariants } = await import("./variant-cleanup-JGJZ5KB4.js");
10075
+ const { reconcileVariants } = await import("./variant-cleanup-K7RFMSH7.js");
10153
10076
  await reconcileVariants();
10154
10077
  } catch (err) {
10155
10078
  logger_default.error("failed to reconcile variants", logger_default.errorData(err));
@@ -10183,15 +10106,15 @@ async function startDaemon(opts) {
10183
10106
  await Promise.all(workers);
10184
10107
  }
10185
10108
  try {
10186
- const { isSetupComplete: isSetupComplete2, getSpiritName: getSpiritName2 } = await import("./setup-WZSXHHRJ.js");
10109
+ const { isSetupComplete: isSetupComplete2, getSpiritName: getSpiritName2 } = await import("./setup-R7Q4HFJP.js");
10187
10110
  if (isSetupComplete2()) {
10188
- const { ensureSpiritProject, syncSpiritTemplate } = await import("./spirit-FKXMGO3N.js");
10189
- const { startSpiritFull } = await import("./mind-service-ZJCUBAUL.js");
10111
+ const { ensureSpiritProject, syncSpiritTemplate } = await import("./spirit-YPG2MU6W.js");
10112
+ const { startSpiritFull } = await import("./mind-service-LRVOQG2T.js");
10190
10113
  await ensureSpiritProject();
10191
10114
  const spiritName = getSpiritName2();
10192
10115
  const spiritEntry = await findMind(spiritName);
10193
10116
  if (spiritEntry?.dir) {
10194
- const { registerMindDir } = await import("./delivery-router-KHBVEVVL.js");
10117
+ const { registerMindDir } = await import("./delivery-router-U6Q22ZYU.js");
10195
10118
  registerMindDir(spiritName, spiritEntry.dir);
10196
10119
  }
10197
10120
  await syncSpiritTemplate();
@@ -10206,7 +10129,7 @@ async function startDaemon(opts) {
10206
10129
  bridgeManager.startBridges(daemonPort).catch((err) => {
10207
10130
  logger_default.warn("failed to start bridges", logger_default.errorData(err));
10208
10131
  });
10209
- import("./cloud-sync-FM73SVFJ.js").then(
10132
+ import("./cloud-sync-RTUXMYU2.js").then(
10210
10133
  ({ consumeQueuedMessages }) => consumeQueuedMessages().catch((err) => {
10211
10134
  logger_default.warn("failed to consume queued cloud messages", logger_default.errorData(err));
10212
10135
  })
@@ -10214,11 +10137,11 @@ async function startDaemon(opts) {
10214
10137
  logger_default.warn("failed to load cloud-sync module", logger_default.errorData(err));
10215
10138
  });
10216
10139
  try {
10217
- const { backfillTemplateHashes, notifyVersionUpdate, warnStaleTemplates } = await import("./version-notify-KIXYNHJC.js");
10140
+ const { backfillTemplateHashes, notifyVersionUpdate, warnStaleTemplates } = await import("./version-notify-QIDHR6WO.js");
10218
10141
  notifyVersionUpdate().catch((err) => {
10219
10142
  logger_default.warn("failed to send version update notifications", logger_default.errorData(err));
10220
10143
  }).then(() => backfillTemplateHashes()).then(() => warnStaleTemplates()).then(async () => {
10221
- const { runAutoUpgrades } = await import("./auto-upgrade-2MZF7NG3.js");
10144
+ const { runAutoUpgrades } = await import("./auto-upgrade-O4MQPYQF.js");
10222
10145
  await runAutoUpgrades();
10223
10146
  }).catch((err) => {
10224
10147
  logger_default.warn("template staleness/auto-upgrade pass failed", logger_default.errorData(err));