volute 0.54.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 (204) hide show
  1. package/dist/{activity-events-LQII6PZS.js → activity-events-YASF46HS.js} +3 -3
  2. package/dist/{ai-service-YW5SWCSB.js → ai-service-3UFNG6GI.js} +3 -5
  3. package/dist/{archive-FOHGXHPT.js → archive-L2OFBGDQ.js} +2 -2
  4. package/dist/{auth-KRDSM55Q.js → auth-N2F5ASAB.js} +4 -4
  5. package/dist/auto-upgrade-O4MQPYQF.js +46 -0
  6. package/dist/{avatar-image-52WGXLHV.js → avatar-image-QEKKUFDF.js} +3 -3
  7. package/dist/{backup-QRNX6RK7.js → backup-TPM7QQBQ.js} +13 -13
  8. package/dist/{channels-CKCY64TD.js → channels-JP3GYTPX.js} +18 -18
  9. package/dist/{chat-ZUGNL5GS.js → chat-7YCF4ZU5.js} +3 -3
  10. package/dist/{chunk-QUSMYGNQ.js → chunk-2674KIGI.js} +1 -0
  11. package/dist/{chunk-444RR3YF.js → chunk-2B4E6SL7.js} +14 -14
  12. package/dist/chunk-2GATCSZK.js +520 -0
  13. package/dist/{chunk-I7U5EEZC.js → chunk-2LFTJNVH.js} +2 -2
  14. package/dist/{chunk-L7BKTZ5U.js → chunk-2QLWAYIU.js} +2 -2
  15. package/dist/{chunk-F6D766VQ.js → chunk-45MCH4G4.js} +2 -2
  16. package/dist/{chunk-OGPVJ53N.js → chunk-4RZS7XCV.js} +5 -5
  17. package/dist/{chunk-HKGYZVWN.js → chunk-6LICEQGP.js} +38 -4
  18. package/dist/{chunk-LAUCO2HC.js → chunk-APDEUAIE.js} +1 -1
  19. package/dist/{chunk-5Y54AE3L.js → chunk-CLH357FI.js} +2 -2
  20. package/dist/{chunk-OAYY3WF3.js → chunk-CVPCRWWC.js} +1 -12
  21. package/dist/{chunk-EGV6R6UF.js → chunk-E2SN3ZOJ.js} +5 -40
  22. package/dist/{chunk-LGXVGIWN.js → chunk-ELQU2GBT.js} +193 -69
  23. package/dist/{chunk-OT5SXF7L.js → chunk-EPRLTYJR.js} +28 -14
  24. package/dist/{chunk-ATZF2RNJ.js → chunk-EYFBT2KP.js} +15 -15
  25. package/dist/{chunk-U54PJPTB.js → chunk-FYMIGUJ5.js} +2 -2
  26. package/dist/{chunk-7XKPG66D.js → chunk-G7A5LEVI.js} +5 -5
  27. package/dist/{chunk-RGHF3OK5.js → chunk-GAAATVTM.js} +17 -17
  28. package/dist/{chunk-7LT3YZUR.js → chunk-I3OJ342S.js} +2 -2
  29. package/dist/{chunk-3LHUXY3E.js → chunk-IABDYN4N.js} +4 -4
  30. package/dist/{chunk-VDUCLVZI.js → chunk-IOMBP2T5.js} +28 -26
  31. package/dist/{chunk-YSRYCS3N.js → chunk-IQROTVBG.js} +2 -2
  32. package/dist/{chunk-PPSN2MLC.js → chunk-IRNM4LSF.js} +9 -6
  33. package/dist/{chunk-ZNHL5KQJ.js → chunk-KN3UHV7O.js} +8 -3
  34. package/dist/{chunk-CV6BNGFK.js → chunk-KXM4K46T.js} +4 -4
  35. package/dist/{chunk-Z4Q6TQWL.js → chunk-LRRPKZBD.js} +2 -2
  36. package/dist/{chunk-LNNI3MS4.js → chunk-MNKPAAQF.js} +9 -2
  37. package/dist/{chunk-OIOW3FPT.js → chunk-NA2NJXY4.js} +1 -1
  38. package/dist/{chunk-GLM7TVWP.js → chunk-OHHS5PSI.js} +1 -1
  39. package/dist/{chunk-CKPAVQNK.js → chunk-OPTA3BJ4.js} +36 -24
  40. package/dist/{chunk-X67BDDZR.js → chunk-P3GXOT2X.js} +48 -2
  41. package/dist/{chunk-WHL6PKYP.js → chunk-PAO7JZNW.js} +52 -48
  42. package/dist/{chunk-TPX6E6PL.js → chunk-Q5M5QFKY.js} +3 -3
  43. package/dist/{chunk-OYF25B62.js → chunk-T7UMSTH2.js} +3 -3
  44. package/dist/{chunk-H6X6CKDN.js → chunk-TAVIVN2I.js} +2 -32
  45. package/dist/{chunk-56IT2ZXF.js → chunk-TGYKFUCF.js} +9 -15
  46. package/dist/{chunk-5U5GLZSD.js → chunk-TZ7OHGNL.js} +2 -2
  47. package/dist/{chunk-UFTDRTCP.js → chunk-UMQP5TC5.js} +2 -2
  48. package/dist/{chunk-LKUGUQUW.js → chunk-UNTDRIV2.js} +5 -5
  49. package/dist/{chunk-CLCHOXLR.js → chunk-V2M6PNLE.js} +5 -5
  50. package/dist/{chunk-ICXY54ZC.js → chunk-WTZD6LFW.js} +2 -2
  51. package/dist/{chunk-FLIEXG2T.js → chunk-XZP3FJ7Q.js} +1 -1
  52. package/dist/{chunk-HTRSSOHY.js → chunk-YU5EYQAE.js} +1 -1
  53. package/dist/cli.js +26 -23
  54. package/dist/{clock-X7V3C7NL.js → clock-ZT5YT6HA.js} +2 -2
  55. package/dist/{cloud-sync-52YNJRMR.js → cloud-sync-RTUXMYU2.js} +23 -23
  56. package/dist/{conversations-ZL6PHROD.js → conversations-ERMMPMOS.js} +4 -4
  57. package/dist/{create-G2RIKQYK.js → create-IUCFJXCE.js} +1 -1
  58. package/dist/{daemon-restart-QWHN5VMU.js → daemon-restart-N2YOISNJ.js} +11 -6
  59. package/dist/daemon.js +230 -279
  60. package/dist/{db-BONH4SUG.js → db-BQFYIONA.js} +1 -1
  61. package/dist/{db-I4EH5SLF.js → db-JH3NTERX.js} +17 -3
  62. package/dist/delivery-manager-5EGCFN4K.js +41 -0
  63. package/dist/{delivery-notices-RZQ6GONP.js → delivery-notices-LZKZXWTX.js} +6 -6
  64. package/dist/{delivery-router-QS4NLJR6.js → delivery-router-U6Q22ZYU.js} +3 -3
  65. package/dist/doctor-225FYBAQ.js +454 -0
  66. package/dist/{down-UN2EDX2Y.js → down-3BQSPUAZ.js} +4 -4
  67. package/dist/echo-text-Y2DFTD7L.js +40 -0
  68. package/dist/{env-SQFCWW52.js → env-4YX5YNWZ.js} +2 -2
  69. package/dist/{exec-Z34TTUO3.js → exec-Y5VMDAVA.js} +2 -2
  70. package/dist/{export-VBNWM7I4.js → export-ASRHBMRG.js} +2 -2
  71. package/dist/{extensions-QT65JGV6.js → extensions-YEPEWURN.js} +27 -23
  72. package/dist/{files-PCKBQHAY.js → files-FASUDSZQ.js} +3 -3
  73. package/dist/{import-DB2KULRO.js → import-O35Y7DSF.js} +6 -6
  74. package/dist/{isolation-UQPDO34R.js → isolation-ZOAUXYXA.js} +2 -2
  75. package/dist/{login-57MMYILL.js → login-54TZQQP4.js} +5 -5
  76. package/dist/{logout-YFZAJRPY.js → logout-4G46Z4RU.js} +1 -1
  77. package/dist/message-delivery-HBTMGWFU.js +46 -0
  78. package/dist/{mind-CT6ANXK4.js → mind-IKMX7K7G.js} +8 -24
  79. package/dist/{mind-activity-tracker-QF6DCX2X.js → mind-activity-tracker-ABAEIMA3.js} +4 -4
  80. package/dist/mind-service-LRVOQG2T.js +48 -0
  81. package/dist/{mind-sleep-24HV4RCA.js → mind-sleep-LZAFBDZD.js} +2 -2
  82. package/dist/{package-F6S5NHY2.js → package-X5O7OD2E.js} +12 -13
  83. package/dist/{prompts-JECJIFPQ.js → prompts-ZNOE3KN3.js} +2 -2
  84. package/dist/{registry-TRC2HJXR.js → registry-BTQXLDW6.js} +1 -1
  85. package/dist/{sandbox-NNWCTHRI.js → sandbox-OUFAGN45.js} +3 -3
  86. package/dist/scheduler-G6BCIVGP.js +27 -0
  87. package/dist/{seed-cmd-6IMTO3LG.js → seed-cmd-BGAW3WDY.js} +2 -2
  88. package/dist/{seed-create-VNLDYRFK.js → seed-create-SMCPEUFQ.js} +3 -3
  89. package/dist/{seed-readiness-H5TTPAQH.js → seed-readiness-RBANMSWW.js} +3 -3
  90. package/dist/{seed-sprout-PPGYGK4G.js → seed-sprout-CSHV36N3.js} +9 -9
  91. package/dist/{send-UXUQKO4N.js → send-D3ADUBR5.js} +6 -6
  92. package/dist/{service-T4P5W6RS.js → service-SWEEBOOY.js} +3 -24
  93. package/dist/{service-install-R4SNYUVO.js → service-install-RCC26KDV.js} +4 -4
  94. package/dist/{setup-YUAQMDVZ.js → setup-L5NZG2U3.js} +5 -5
  95. package/dist/{setup-WZSXHHRJ.js → setup-R7Q4HFJP.js} +1 -5
  96. package/dist/skills/volute-mind/SKILL.md +8 -0
  97. package/dist/{skills-GMQ5UIIW.js → skills-BCCU4OJW.js} +4 -4
  98. package/dist/sleep-manager-25P44HAO.js +42 -0
  99. package/dist/{spirit-Q5VGFWUI.js → spirit-YPG2MU6W.js} +7 -7
  100. package/dist/spirit-availability-ZQM5IH4C.js +43 -0
  101. package/dist/{src-H3UCOP6B.js → src-246GSX7A.js} +5 -2
  102. package/dist/src-LOUB3WPR.js +4189 -0
  103. package/dist/{status-LCKTTIWS.js → status-BYPCJU6H.js} +4 -4
  104. package/dist/{system-events-Q7IVZ5T4.js → system-events-CWC7CBKP.js} +6 -4
  105. package/dist/{systems-HL7SGSW7.js → systems-VDRUZXNF.js} +2 -2
  106. package/dist/{tailscale-KHNZFC7L.js → tailscale-4XY7B5A2.js} +2 -2
  107. package/dist/{template-hash-YKWMVYMM.js → template-hash-RJRMF6DT.js} +2 -2
  108. package/dist/{template-staleness-PY2CULH6.js → template-staleness-CL4V7BT7.js} +5 -5
  109. package/dist/{turn-tracker-HZDPMSCC.js → turn-tracker-LZP5X6GZ.js} +8 -8
  110. package/dist/{up-XZDSJVMU.js → up-3AAN4GYY.js} +4 -4
  111. package/dist/{update-ILCPVNDD.js → update-2MWXRE2S.js} +4 -4
  112. package/dist/{update-check-SZ7B5IFI.js → update-check-PJOZXZYJ.js} +2 -2
  113. package/dist/variant-cleanup-K7RFMSH7.js +24 -0
  114. package/dist/{version-notify-VNVFX6UP.js → version-notify-QIDHR6WO.js} +12 -12
  115. package/dist/web-assets/assets/{index-CwtxGwe_.js → index-Bfvls20e.js} +17 -17
  116. package/dist/web-assets/assets/index-hPn_fkz3.css +1 -0
  117. package/dist/web-assets/index.html +2 -2
  118. package/drizzle/0000_crazy_epoch.sql +232 -0
  119. package/drizzle/README.md +42 -0
  120. package/drizzle/meta/0000_snapshot.json +1420 -3
  121. package/drizzle/meta/_journal.json +2 -128
  122. package/package.json +12 -13
  123. package/packages/extensions/intentions/dist/ui/assets/index-Bl5KEcli.js +67 -0
  124. package/packages/extensions/intentions/dist/ui/index.html +1 -1
  125. package/packages/extensions/pages/dist/ui/assets/index-BKxVQkA9.css +1 -0
  126. package/packages/extensions/pages/dist/ui/assets/index-BMt6sStP.js +68 -0
  127. package/packages/extensions/pages/dist/ui/index.html +2 -2
  128. package/packages/extensions/pages/skills/pages/SKILL.md +123 -4
  129. package/templates/_base/.init/.config/prompts.json +0 -1
  130. package/templates/_base/.init/.local/hooks/pre-prompt/turn-context.ts +30 -0
  131. package/templates/_base/src/lib/codex-session-seed.ts +6 -55
  132. package/templates/_base/src/lib/pi-session-seed.ts +8 -57
  133. package/templates/_base/src/lib/seed-note.ts +4 -4
  134. package/templates/_base/src/lib/session-seed.ts +8 -53
  135. package/templates/_base/src/lib/startup.ts +0 -20
  136. package/templates/claude/package.json +2 -2
  137. package/templates/claude/src/agent.ts +34 -102
  138. package/templates/claude/src/lib/hooks/pre-compact.ts +6 -6
  139. package/templates/claude/src/server.ts +0 -1
  140. package/templates/codex/package.json +2 -2
  141. package/templates/codex/src/agent.ts +23 -89
  142. package/templates/pi/package.json +1 -1
  143. package/templates/pi/src/agent.ts +26 -93
  144. package/templates/pi/src/server.ts +0 -1
  145. package/dist/auto-upgrade-HEVZKPTF.js +0 -46
  146. package/dist/chunk-AAPNU7GA.js +0 -168
  147. package/dist/delivery-manager-7R2YIQ2W.js +0 -41
  148. package/dist/echo-text-73CYQRL7.js +0 -40
  149. package/dist/message-delivery-TRKT4T2P.js +0 -46
  150. package/dist/migrate-name-placeholder-C7NCNLWF.js +0 -37
  151. package/dist/migrate-thread-config-EQSEP2XG.js +0 -90
  152. package/dist/mind-service-7EFIJ3ZA.js +0 -48
  153. package/dist/scheduler-73Q4MQ7Y.js +0 -27
  154. package/dist/seed-DRKAP3XV.js +0 -11
  155. package/dist/sleep-manager-KHI65FEX.js +0 -42
  156. package/dist/spirit-availability-G5FMWKRH.js +0 -43
  157. package/dist/sprout-PMTRL7QN.js +0 -11
  158. package/dist/src-3FIW7DLH.js +0 -2376
  159. package/dist/src-LTTQVN2Z.js +0 -832
  160. package/dist/variant-HHDTW74J.js +0 -62
  161. package/dist/variant-cleanup-QHGGY7ND.js +0 -24
  162. package/dist/web-assets/assets/index-DhM1yYRN.css +0 -1
  163. package/drizzle/0000_baseline.sql +0 -152
  164. package/drizzle/0001_add_conversation_private.sql +0 -1
  165. package/drizzle/0002_turns.sql +0 -21
  166. package/drizzle/0003_turn_feed_links.sql +0 -11
  167. package/drizzle/0004_spirits.sql +0 -5
  168. package/drizzle/0005_meta_summaries.sql +0 -15
  169. package/drizzle/0006_channels.sql +0 -17
  170. package/drizzle/0007_drop_conversation_name_title.sql +0 -11
  171. package/drizzle/0008_performance_indexes.sql +0 -6
  172. package/drizzle/0009_mind_notices.sql +0 -14
  173. package/drizzle/0010_delivery_queue_redrive.sql +0 -10
  174. package/drizzle/0011_drop_turn_summary_event_id.sql +0 -3
  175. package/drizzle/0012_channel_gates.sql +0 -17
  176. package/drizzle/0013_variant_purpose.sql +0 -3
  177. package/drizzle/0014_system_events.sql +0 -26
  178. package/drizzle/0015_rename_session_to_thread.sql +0 -12
  179. package/drizzle/0016_brain_to_human.sql +0 -4
  180. package/drizzle/0017_event_history_rows.sql +0 -9
  181. package/drizzle/0018_api_tokens.sql +0 -20
  182. package/drizzle/meta/0001_snapshot.json +0 -7
  183. package/drizzle/meta/0002_snapshot.json +0 -7
  184. package/drizzle/meta/0003_snapshot.json +0 -7
  185. package/drizzle/meta/0004_snapshot.json +0 -7
  186. package/drizzle/meta/0005_snapshot.json +0 -7
  187. package/drizzle/meta/0006_snapshot.json +0 -7
  188. package/drizzle/meta/0007_snapshot.json +0 -7
  189. package/packages/extensions/intentions/dist/ui/assets/index-CQz4aceM.js +0 -67
  190. package/packages/extensions/notes/dist/ui/assets/index-BBs8pyel.js +0 -67
  191. package/packages/extensions/notes/dist/ui/assets/index-D3cdui42.css +0 -1
  192. package/packages/extensions/notes/dist/ui/index.html +0 -14
  193. package/packages/extensions/notes/skills/notes/SKILL.md +0 -90
  194. package/packages/extensions/pages/dist/ui/assets/index-B589e8Xe.js +0 -2
  195. package/packages/extensions/pages/dist/ui/assets/index-BuXnE-rb.css +0 -1
  196. package/dist/{env-7AZFBPWX.js → env-IBW2QI6K.js} +5 -5
  197. package/dist/{login-4NUS72Z5.js → login-RJJTCVR3.js} +3 -3
  198. package/dist/{mind-contacts-PEXCDRXA.js → mind-contacts-KV64UDJS.js} +6 -6
  199. package/dist/{mind-history-RZMMCHMX.js → mind-history-H45GM2M2.js} +6 -6
  200. package/dist/{register-WNCSOTAU.js → register-OX4HRSGC.js} +3 -3
  201. package/dist/{restart-B4GNMVF2.js → restart-AGEGNSYQ.js} +4 -4
  202. package/dist/{skill-QYTBUDNQ.js → skill-B5OJEQUA.js} +4 -4
  203. package/dist/{start-BDHJVOVX.js → start-MUMNFR52.js} +3 -3
  204. 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-OYF25B62.js";
9
+ } from "./chunk-T7UMSTH2.js";
10
10
  import {
11
11
  acceptPending,
12
12
  formatFileSize,
@@ -14,25 +14,20 @@ import {
14
14
  rejectPending,
15
15
  stageFile,
16
16
  validateFilePath
17
- } from "./chunk-F6D766VQ.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-I7U5EEZC.js";
23
+ } from "./chunk-2LFTJNVH.js";
27
24
  import {
28
- checkForUpdate,
29
- checkForUpdateCached,
30
- getCurrentVersion
31
- } from "./chunk-LAUCO2HC.js";
25
+ getMemoryStatus
26
+ } from "./chunk-5RBEEAKW.js";
32
27
  import {
33
28
  SPIRIT_NOTICE_PREFIX,
34
29
  ensureSpiritAvailable
35
- } from "./chunk-LKUGUQUW.js";
30
+ } from "./chunk-UNTDRIV2.js";
36
31
  import {
37
32
  TEMPLATE_BRANCH,
38
33
  UpgradeInProgressError,
@@ -50,29 +45,29 @@ import {
50
45
  upgradeDiff,
51
46
  upgradeInProgress,
52
47
  validateBranchName
53
- } from "./chunk-OT5SXF7L.js";
48
+ } from "./chunk-EPRLTYJR.js";
54
49
  import {
55
50
  isTemplateStale
56
- } from "./chunk-CV6BNGFK.js";
51
+ } from "./chunk-KXM4K46T.js";
57
52
  import {
58
53
  computeTemplateHash
59
- } from "./chunk-HTRSSOHY.js";
54
+ } from "./chunk-YU5EYQAE.js";
60
55
  import {
61
56
  cleanupVariant
62
- } from "./chunk-OGPVJ53N.js";
57
+ } from "./chunk-4RZS7XCV.js";
63
58
  import {
64
59
  isHomeOnlyArchive
65
- } from "./chunk-FLIEXG2T.js";
60
+ } from "./chunk-XZP3FJ7Q.js";
66
61
  import {
67
62
  evaluateSeedChecklist
68
- } from "./chunk-CLCHOXLR.js";
63
+ } from "./chunk-V2M6PNLE.js";
69
64
  import {
70
65
  PLATFORMS,
71
66
  echoTextToChannel,
72
67
  fixModelEscapes,
73
68
  getPlatformDriver,
74
69
  routeOutboundBridge
75
- } from "./chunk-ATZF2RNJ.js";
70
+ } from "./chunk-EYFBT2KP.js";
76
71
  import {
77
72
  getBridgeConfig,
78
73
  readBridgesConfig,
@@ -81,7 +76,12 @@ import {
81
76
  resolveChannelMapping,
82
77
  setBridgeConfig,
83
78
  setChannelMapping
84
- } from "./chunk-L7BKTZ5U.js";
79
+ } from "./chunk-2QLWAYIU.js";
80
+ import {
81
+ checkForUpdate,
82
+ checkForUpdateCached,
83
+ getCurrentVersion
84
+ } from "./chunk-APDEUAIE.js";
85
85
  import {
86
86
  SESSION_MAX_AGE,
87
87
  announceSprout,
@@ -89,6 +89,7 @@ import {
89
89
  authMiddleware,
90
90
  backfillSystemChannelMembers,
91
91
  cleanExpiredSessions,
92
+ collectTurnContext,
92
93
  createSession,
93
94
  deleteSession,
94
95
  deleteSystemsConfig,
@@ -113,6 +114,7 @@ import {
113
114
  linkToolResultToTurn,
114
115
  listApiTokens,
115
116
  loadAllExtensions,
117
+ normalizeTrailingSlash,
116
118
  notifyExtensionsDaemonStart,
117
119
  notifyExtensionsDaemonStop,
118
120
  notifyExtensionsSpiritReady,
@@ -128,8 +130,8 @@ import {
128
130
  uninstallNpmExtension,
129
131
  willGateMessage,
130
132
  writeSystemsConfig
131
- } from "./chunk-LGXVGIWN.js";
132
- import "./chunk-RGHF3OK5.js";
133
+ } from "./chunk-ELQU2GBT.js";
134
+ import "./chunk-GAAATVTM.js";
133
135
  import {
134
136
  applyInitFiles,
135
137
  composeTemplate,
@@ -137,14 +139,14 @@ import {
137
139
  findTemplatesRoot,
138
140
  isKnownTemplate,
139
141
  listFiles
140
- } from "./chunk-X67BDDZR.js";
142
+ } from "./chunk-P3GXOT2X.js";
141
143
  import {
142
144
  getScheduler,
143
145
  initScheduler
144
- } from "./chunk-444RR3YF.js";
146
+ } from "./chunk-2B4E6SL7.js";
145
147
  import {
146
148
  recordDeliveryFailure
147
- } from "./chunk-3LHUXY3E.js";
149
+ } from "./chunk-IABDYN4N.js";
148
150
  import {
149
151
  UnknownChannelError,
150
152
  checkStaleSend,
@@ -154,7 +156,7 @@ import {
154
156
  initDeliveryManager,
155
157
  isConversationId,
156
158
  publishTypingForChannels
157
- } from "./chunk-VDUCLVZI.js";
159
+ } from "./chunk-IOMBP2T5.js";
158
160
  import {
159
161
  MindStartupError,
160
162
  RestartTracker,
@@ -164,10 +166,7 @@ import {
164
166
  initMindManager,
165
167
  syncProviderToMinds,
166
168
  tryGetMindManager
167
- } from "./chunk-WHL6PKYP.js";
168
- import {
169
- extractTextContent
170
- } from "./chunk-YSRYCS3N.js";
169
+ } from "./chunk-PAO7JZNW.js";
171
170
  import {
172
171
  SYSTEM_MIND,
173
172
  assignSession,
@@ -181,7 +180,6 @@ import {
181
180
  initSummarizer,
182
181
  isoWeekKeyForDateStr,
183
182
  markErrored,
184
- parseDbTimestamp,
185
183
  parseUtcDateTime,
186
184
  summarizeOrphanedTurns,
187
185
  summarizeTurn,
@@ -189,82 +187,11 @@ import {
189
187
  takeErrored,
190
188
  trackToolUse,
191
189
  utcDateTimeStr
192
- } from "./chunk-56IT2ZXF.js";
193
- import {
194
- SEED_SKILLS,
195
- STANDARD_SKILLS,
196
- autoUpdateMindSkills,
197
- getSharedSkill,
198
- getStandardSkillsWithExtensions,
199
- importSkillFromDir,
200
- initDefaultSkills,
201
- installSkill,
202
- isAutoUpdateSkillsEnabled,
203
- listFilesRecursive,
204
- listMindSkills,
205
- listSharedSkills,
206
- mindSkillsDir,
207
- publishSkill,
208
- removeSharedSkill,
209
- sharedSkillsDir,
210
- syncBuiltinSkills,
211
- uninstallSkill,
212
- updateSkill
213
- } from "./chunk-PPSN2MLC.js";
214
- import {
215
- approveUser,
216
- changePassword,
217
- countAdmins,
218
- createUser,
219
- deleteExternalMindUser,
220
- deleteMindUser as deleteMindUser2,
221
- deleteUser,
222
- getDisplayNames,
223
- getOrCreateMindUser,
224
- getOrCreateSystemUser,
225
- getUser,
226
- getUserByUsername,
227
- listPendingUsers,
228
- listUsers,
229
- listUsersByType,
230
- setUserRole,
231
- syncMindProfile,
232
- updateUserProfile,
233
- verifyUser,
234
- withSenderDisplayNames
235
- } from "./chunk-7LT3YZUR.js";
236
- import {
237
- MIND_LEVEL_THREAD,
238
- captureReflection,
239
- cleanExpiredEvents,
240
- clearDeliveredEvents,
241
- deliverEvent,
242
- drainEvents,
243
- eventLabel,
244
- formatEvents,
245
- latestEvent,
246
- latestFailureEvent,
247
- listEvents,
248
- parseMeta,
249
- recordNotice
250
- } from "./chunk-HKGYZVWN.js";
251
- import {
252
- publish as publish2,
253
- subscribe as subscribe2,
254
- subscribeAll
255
- } from "./chunk-LNNI3MS4.js";
256
- import {
257
- PROMPT_DEFAULTS,
258
- PROMPT_KEYS,
259
- getMindPromptDefaults,
260
- getPrompt,
261
- getPromptIfCustom,
262
- substitute
263
- } from "./chunk-OAYY3WF3.js";
190
+ } from "./chunk-TGYKFUCF.js";
264
191
  import {
265
192
  isSandboxEnabled,
266
193
  wrapForSandbox
267
- } from "./chunk-5Y54AE3L.js";
194
+ } from "./chunk-CLH357FI.js";
268
195
  import {
269
196
  addMessage,
270
197
  createChannel,
@@ -300,22 +227,15 @@ import {
300
227
  subscribe as subscribe3,
301
228
  subscribeParticipantAdded,
302
229
  updateChannelSettings
303
- } from "./chunk-TPX6E6PL.js";
230
+ } from "./chunk-Q5M5QFKY.js";
304
231
  import {
305
232
  getActiveMinds,
306
233
  onMindEvent,
307
234
  stopAll
308
- } from "./chunk-UFTDRTCP.js";
309
- import {
310
- broadcast,
311
- getEventsSince,
312
- nextEventId,
313
- publish,
314
- subscribe
315
- } from "./chunk-U54PJPTB.js";
235
+ } from "./chunk-UMQP5TC5.js";
316
236
  import {
317
237
  normalizeAvatar
318
- } from "./chunk-ICXY54ZC.js";
238
+ } from "./chunk-WTZD6LFW.js";
319
239
  import {
320
240
  safeResolveWithinBase
321
241
  } from "./chunk-DW4TRDOZ.js";
@@ -323,7 +243,90 @@ import {
323
243
  readVoluteConfig,
324
244
  writeVoluteConfig
325
245
  } from "./chunk-WCFSBH33.js";
326
- import "./chunk-CKPAVQNK.js";
246
+ import {
247
+ extractTextContent
248
+ } from "./chunk-IQROTVBG.js";
249
+ import {
250
+ approveUser,
251
+ changePassword,
252
+ countAdmins,
253
+ createUser,
254
+ deleteExternalMindUser,
255
+ deleteMindUser as deleteMindUser2,
256
+ deleteUser,
257
+ getDisplayNames,
258
+ getOrCreateMindUser,
259
+ getOrCreateSystemUser,
260
+ getUser,
261
+ getUserByUsername,
262
+ listPendingUsers,
263
+ listUsers,
264
+ listUsersByType,
265
+ setUserRole,
266
+ syncMindProfile,
267
+ updateUserProfile,
268
+ verifyUser,
269
+ withSenderDisplayNames
270
+ } from "./chunk-I3OJ342S.js";
271
+ import {
272
+ broadcast,
273
+ getEventsSince,
274
+ nextEventId,
275
+ publish,
276
+ subscribe
277
+ } from "./chunk-FYMIGUJ5.js";
278
+ import {
279
+ MIND_LEVEL_THREAD,
280
+ captureReflection,
281
+ cleanExpiredEvents,
282
+ clearDeliveredEvents,
283
+ deliverEvent,
284
+ drainEvents,
285
+ eventLabel,
286
+ findStrandedEventMinds,
287
+ formatEvents,
288
+ latestEvent,
289
+ latestFailureEvent,
290
+ listEvents,
291
+ parseMeta,
292
+ recordNotice
293
+ } from "./chunk-6LICEQGP.js";
294
+ import {
295
+ parseDbTimestamp,
296
+ publish as publish2,
297
+ subscribe as subscribe2,
298
+ subscribeAll
299
+ } from "./chunk-MNKPAAQF.js";
300
+ import {
301
+ PROMPT_DEFAULTS,
302
+ PROMPT_KEYS,
303
+ getMindPromptDefaults,
304
+ getPrompt,
305
+ getPromptIfCustom,
306
+ substitute
307
+ } from "./chunk-CVPCRWWC.js";
308
+ import {
309
+ SEED_SKILLS,
310
+ STANDARD_SKILLS,
311
+ autoUpdateMindSkills,
312
+ getSharedSkill,
313
+ getStandardSkillsWithExtensions,
314
+ importSkillFromDir,
315
+ initDefaultSkills,
316
+ installSkill,
317
+ isAutoUpdateSkillsEnabled,
318
+ listFilesRecursive,
319
+ listMindSkills,
320
+ listSharedSkills,
321
+ mindSkillsDir,
322
+ publishSkill,
323
+ removeSharedSkill,
324
+ sharedSkillsDir,
325
+ syncBuiltinSkills,
326
+ uninstallSkill,
327
+ updateSkill
328
+ } from "./chunk-IRNM4LSF.js";
329
+ import "./chunk-OPTA3BJ4.js";
327
330
  import {
328
331
  chownMindDir,
329
332
  chownMindFile,
@@ -335,14 +338,14 @@ import {
335
338
  isIsolationEnabled,
336
339
  resolveVoluteBin,
337
340
  wrapForIsolation
338
- } from "./chunk-OIOW3FPT.js";
341
+ } from "./chunk-NA2NJXY4.js";
339
342
  import {
340
343
  loadMergedEnv,
341
344
  mindEnvPath,
342
345
  readEnv,
343
346
  sharedEnvPath,
344
347
  writeEnv
345
- } from "./chunk-GLM7TVWP.js";
348
+ } from "./chunk-OHHS5PSI.js";
346
349
  import {
347
350
  OAuthRefreshError,
348
351
  addCustomModel,
@@ -368,11 +371,11 @@ import {
368
371
  setProviderRefreshHook,
369
372
  setUtilityModel,
370
373
  unqualifyModelId
371
- } from "./chunk-EGV6R6UF.js";
374
+ } from "./chunk-E2SN3ZOJ.js";
372
375
  import {
373
376
  logBuffer,
374
377
  logger_default
375
- } from "./chunk-QUSMYGNQ.js";
378
+ } from "./chunk-2674KIGI.js";
376
379
  import {
377
380
  buildVoluteSlug
378
381
  } from "./chunk-LGNUFVMR.js";
@@ -407,7 +410,7 @@ import {
407
410
  voluteHome,
408
411
  voluteSystemDir,
409
412
  writeGlobalConfig
410
- } from "./chunk-H6X6CKDN.js";
413
+ } from "./chunk-TAVIVN2I.js";
411
414
  import {
412
415
  activity,
413
416
  channels,
@@ -537,7 +540,7 @@ var BackupManager = class {
537
540
  } catch (pubErr) {
538
541
  blog.error("failed to publish backup-failure activity", logger_default.errorData(pubErr));
539
542
  }
540
- const { deliverEvent: deliverEvent2 } = await import("./system-events-Q7IVZ5T4.js");
543
+ const { deliverEvent: deliverEvent2 } = await import("./system-events-CWC7CBKP.js");
541
544
  await deliverEvent2(getSpiritName(), {
542
545
  type: "notice",
543
546
  meta: { subtype: "backup" },
@@ -899,6 +902,19 @@ async function runMaintenance() {
899
902
  } catch (err) {
900
903
  logger_default.warn("maintenance: failed to clean expired events", logger_default.errorData(err));
901
904
  }
905
+ try {
906
+ await warnStrandedEvents();
907
+ } catch (err) {
908
+ logger_default.warn("maintenance: failed to check for stranded events", logger_default.errorData(err));
909
+ }
910
+ }
911
+ async function warnStrandedEvents() {
912
+ for (const s of await findStrandedEventMinds()) {
913
+ logger_default.warn(
914
+ `${s.mind} has ${s.pending} undelivered next-turn system event${s.pending === 1 ? "" : "s"} and has completed ${s.turnsSince} turns without draining them (oldest is ${s.ageHours}h old). Its pre-prompt drain hook is missing or failing \u2014 check home/.local/hooks/pre-prompt/notices.ts and run \`volute mind upgrade ${s.mind}\`.`,
915
+ { mind: s.mind, pending: s.pending, turnsSince: s.turnsSince, ageHours: s.ageHours }
916
+ );
917
+ }
902
918
  }
903
919
  function startMaintenanceInterval(intervalMs = MAINTENANCE_INTERVAL_MS, task = runMaintenance) {
904
920
  const handle = setInterval(() => void task(), intervalMs);
@@ -1489,7 +1505,7 @@ var app = new Hono().post("/restart", requireAdmin, (c) => {
1489
1505
  config2.name = name.trim() || void 0;
1490
1506
  writeGlobalConfig(config2);
1491
1507
  if (config2.name !== previousName) {
1492
- const { notifySpiritSystemChange } = await import("./spirit-Q5VGFWUI.js");
1508
+ const { notifySpiritSystemChange } = await import("./spirit-YPG2MU6W.js");
1493
1509
  await notifySpiritSystemChange();
1494
1510
  }
1495
1511
  return c.json({ name: config2.name ?? null });
@@ -2731,7 +2747,7 @@ async function fanOutToMinds(opts) {
2731
2747
  );
2732
2748
  }
2733
2749
  if (ap.userType === "system") {
2734
- import("./spirit-availability-G5FMWKRH.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)));
2735
2751
  }
2736
2752
  }
2737
2753
  return null;
@@ -2864,7 +2880,7 @@ var app4 = new Hono5().post("/:platform/inbound", zValidator4("json", inboundSch
2864
2880
  }
2865
2881
  const participants = await getParticipants(channel.id);
2866
2882
  if (!participants.some((p) => p.userId === puppet.id)) {
2867
- const { addParticipant } = await import("./conversations-ZL6PHROD.js");
2883
+ const { addParticipant } = await import("./conversations-ERMMPMOS.js");
2868
2884
  await addParticipant(channel.id, puppet.id);
2869
2885
  }
2870
2886
  const contentBlocks = body.content;
@@ -3148,12 +3164,12 @@ async function notifyMind(mindName, message) {
3148
3164
  const entry = await findMind(mindName);
3149
3165
  if (!entry) return false;
3150
3166
  try {
3151
- const { deliverEvent: deliverEvent2 } = await import("./system-events-Q7IVZ5T4.js");
3167
+ const { deliverEvent: deliverEvent2 } = await import("./system-events-CWC7CBKP.js");
3152
3168
  const result = await deliverEvent2(mindName, { type: "file-share", body: message });
3153
3169
  if (result.delivered) return true;
3154
3170
  if (result.id == null) return false;
3155
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-KHI65FEX.js");
3156
- 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");
3157
3173
  return getSleepManagerIfReady2()?.isSleeping(await getBaseName2(mindName)) ?? false;
3158
3174
  } catch (err) {
3159
3175
  logger_default.warn(`[file-sharing] notify mind ${mindName} failed`, logger_default.errorData(err));
@@ -5031,7 +5047,7 @@ async function getMindStatus(name, port, registryRunning, seed) {
5031
5047
  let status = "stopped";
5032
5048
  let wakeAt = null;
5033
5049
  try {
5034
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-KHI65FEX.js");
5050
+ const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-25P44HAO.js");
5035
5051
  const sleepManager = getSleepManagerIfReady2();
5036
5052
  if (sleepManager?.isSleeping(name)) {
5037
5053
  status = "sleeping";
@@ -5399,7 +5415,7 @@ var app13 = new Hono16().post("/", requireAdminOrSystem, zValidator6("json", cre
5399
5415
  );
5400
5416
  }
5401
5417
  {
5402
- const { mindLimitError, readGlobalConfig: readGlobalConfig2 } = await import("./setup-WZSXHHRJ.js");
5418
+ const { mindLimitError, readGlobalConfig: readGlobalConfig2 } = await import("./setup-R7Q4HFJP.js");
5403
5419
  const limitError = mindLimitError(await countCappedMinds(), readGlobalConfig2().maxMinds);
5404
5420
  if (limitError) return c.json({ error: limitError }, 409);
5405
5421
  }
@@ -5414,7 +5430,7 @@ var app13 = new Hono16().post("/", requireAdminOrSystem, zValidator6("json", cre
5414
5430
  const { publicKeyPem } = generateIdentity(dest);
5415
5431
  let effectiveModel = body.model;
5416
5432
  {
5417
- const { readGlobalConfig: readGlobal } = await import("./setup-WZSXHHRJ.js");
5433
+ const { readGlobalConfig: readGlobal } = await import("./setup-R7Q4HFJP.js");
5418
5434
  const mindDefaults = readGlobal().mindDefaults;
5419
5435
  const config2 = readVoluteConfig(dest);
5420
5436
  if (!config2) throw new Error("Failed to read volute.json after identity generation");
@@ -5495,7 +5511,7 @@ Your creator described you as: "${body.description}"
5495
5511
  }
5496
5512
  let skillSet = body.skills ?? (body.stage === "seed" ? SEED_SKILLS : getStandardSkillsWithExtensions());
5497
5513
  if (body.stage === "seed" && !body.skills) {
5498
- const { isImagegenEnabled } = await import("./setup-WZSXHHRJ.js");
5514
+ const { isImagegenEnabled } = await import("./setup-R7Q4HFJP.js");
5499
5515
  if (isImagegenEnabled()) {
5500
5516
  skillSet = [...skillSet, "imagegen"];
5501
5517
  }
@@ -5517,7 +5533,7 @@ Your creator described you as: "${body.description}"
5517
5533
  const spiritName = getSpiritName();
5518
5534
  const spiritEntry = await findMind(spiritName);
5519
5535
  if (spiritEntry) {
5520
- const { spiritDir } = await import("./spirit-Q5VGFWUI.js");
5536
+ const { spiritDir } = await import("./spirit-YPG2MU6W.js");
5521
5537
  const sDir = spiritEntry.dir ?? spiritDir();
5522
5538
  const spiritConfig = readVoluteConfig(sDir) ?? {};
5523
5539
  const schedules = spiritConfig.schedules ?? [];
@@ -5532,7 +5548,7 @@ Your creator described you as: "${body.description}"
5532
5548
  });
5533
5549
  spiritConfig.schedules = schedules;
5534
5550
  writeVoluteConfig(sDir, spiritConfig);
5535
- const { getScheduler: getScheduler2 } = await import("./scheduler-73Q4MQ7Y.js");
5551
+ const { getScheduler: getScheduler2 } = await import("./scheduler-G6BCIVGP.js");
5536
5552
  getScheduler2().loadSchedules(spiritName, sDir);
5537
5553
  }
5538
5554
  }
@@ -5840,7 +5856,7 @@ ${user.trimEnd()}
5840
5856
  const manager = getMindManager();
5841
5857
  try {
5842
5858
  if (context?.type === "reload") {
5843
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-KHI65FEX.js");
5859
+ const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-25P44HAO.js");
5844
5860
  const sleepState = getSleepManagerIfReady2()?.getState(name);
5845
5861
  if (sleepState?.sleeping) {
5846
5862
  logger_default.info(`skipping reload for ${name} during sleep \u2014 will apply on next wake`);
@@ -5989,7 +6005,7 @@ ${user.trimEnd()}
5989
6005
  const name = c.req.param("name");
5990
6006
  const entry = await findMind(name);
5991
6007
  if (!entry) return c.json({ error: "Mind not found" }, 404);
5992
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-KHI65FEX.js");
6008
+ const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-25P44HAO.js");
5993
6009
  const sm = getSleepManagerIfReady2();
5994
6010
  if (!sm) return c.json({ error: "Sleep manager not initialized" }, 503);
5995
6011
  return c.json(sm.getState(name));
@@ -5997,7 +6013,7 @@ ${user.trimEnd()}
5997
6013
  const name = c.req.param("name");
5998
6014
  const entry = await findMind(name);
5999
6015
  if (!entry) return c.json({ error: "Mind not found" }, 404);
6000
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-KHI65FEX.js");
6016
+ const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-25P44HAO.js");
6001
6017
  const sm = getSleepManagerIfReady2();
6002
6018
  if (!sm) return c.json({ error: "Sleep manager not initialized" }, 503);
6003
6019
  if (sm.isSleeping(name)) return c.json({ error: "Mind is already sleeping" }, 409);
@@ -6017,7 +6033,7 @@ ${user.trimEnd()}
6017
6033
  const name = c.req.param("name");
6018
6034
  const entry = await findMind(name);
6019
6035
  if (!entry) return c.json({ error: "Mind not found" }, 404);
6020
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-KHI65FEX.js");
6036
+ const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-25P44HAO.js");
6021
6037
  const sm = getSleepManagerIfReady2();
6022
6038
  if (!sm) return c.json({ error: "Sleep manager not initialized" }, 503);
6023
6039
  const sleepState = sm.getState(name);
@@ -6032,7 +6048,7 @@ ${user.trimEnd()}
6032
6048
  const name = c.req.param("name");
6033
6049
  const entry = await findMind(name);
6034
6050
  if (!entry) return c.json({ error: "Mind not found" }, 404);
6035
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-KHI65FEX.js");
6051
+ const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-25P44HAO.js");
6036
6052
  const sm = getSleepManagerIfReady2();
6037
6053
  if (!sm) return c.json({ error: "Sleep manager not initialized" }, 503);
6038
6054
  const flushed = await sm.flushQueuedMessages(name);
@@ -6060,7 +6076,7 @@ ${user.trimEnd()}
6060
6076
  }
6061
6077
  config2.profile = profile;
6062
6078
  writeVoluteConfig(dir, config2);
6063
- const { syncMindProfile: syncMindProfile2 } = await import("./auth-KRDSM55Q.js");
6079
+ const { syncMindProfile: syncMindProfile2 } = await import("./auth-N2F5ASAB.js");
6064
6080
  await syncMindProfile2(name, profile);
6065
6081
  broadcast({ type: "profile_updated", mind: name, summary: `${name} profile updated` });
6066
6082
  return c.json({ ok: true });
@@ -6104,7 +6120,7 @@ ${user.trimEnd()}
6104
6120
  });
6105
6121
  }
6106
6122
  if (!force) {
6107
- const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-KHI65FEX.js");
6123
+ const { getSleepManagerIfReady: getSleepManagerIfReady2 } = await import("./sleep-manager-25P44HAO.js");
6108
6124
  if (getSleepManagerIfReady2()?.isSleeping(name)) {
6109
6125
  return c.json({ output: "" });
6110
6126
  }
@@ -6159,7 +6175,7 @@ ${user.trimEnd()}
6159
6175
  }
6160
6176
  }
6161
6177
  const dir = entry.dir ?? mindDir(name);
6162
- const { evaluateSeedChecklist: evaluateSeedChecklist2 } = await import("./seed-readiness-H5TTPAQH.js");
6178
+ const { evaluateSeedChecklist: evaluateSeedChecklist2 } = await import("./seed-readiness-RBANMSWW.js");
6163
6179
  const checklist = evaluateSeedChecklist2(dir);
6164
6180
  const done = [];
6165
6181
  const remaining = [];
@@ -6201,7 +6217,7 @@ ${user.trimEnd()}
6201
6217
  try {
6202
6218
  const sproutedDir = entry.dir ?? mindDir(name);
6203
6219
  if (setupDefaultDreaming(sproutedDir).schedulesChanged) {
6204
- const { getScheduler: getScheduler2 } = await import("./scheduler-73Q4MQ7Y.js");
6220
+ const { getScheduler: getScheduler2 } = await import("./scheduler-G6BCIVGP.js");
6205
6221
  getScheduler2().loadSchedules(name, sproutedDir);
6206
6222
  }
6207
6223
  } catch (err) {
@@ -6211,7 +6227,7 @@ ${user.trimEnd()}
6211
6227
  const spiritName = getSpiritName();
6212
6228
  const spiritEntry = await findMind(spiritName);
6213
6229
  if (spiritEntry) {
6214
- const { firstWeekSchedules, spiritDir } = await import("./spirit-Q5VGFWUI.js");
6230
+ const { firstWeekSchedules, spiritDir } = await import("./spirit-YPG2MU6W.js");
6215
6231
  const sDir = spiritEntry.dir ?? spiritDir();
6216
6232
  const spiritConfig = readVoluteConfig(sDir);
6217
6233
  if (spiritConfig) {
@@ -6225,7 +6241,7 @@ ${user.trimEnd()}
6225
6241
  spiritConfig.schedules = schedules;
6226
6242
  writeVoluteConfig(sDir, spiritConfig);
6227
6243
  try {
6228
- const { getScheduler: getScheduler2 } = await import("./scheduler-73Q4MQ7Y.js");
6244
+ const { getScheduler: getScheduler2 } = await import("./scheduler-G6BCIVGP.js");
6229
6245
  getScheduler2().loadSchedules(spiritName, sDir);
6230
6246
  } catch (err) {
6231
6247
  logger_default.warn(
@@ -6346,16 +6362,6 @@ ${user.trimEnd()}
6346
6362
  return c.json({ error: msg }, 500);
6347
6363
  }
6348
6364
  }
6349
- if (body.accept) {
6350
- if (upgradeInProgress(mindName)) {
6351
- try {
6352
- await abortUpgrade(mindName);
6353
- } catch (err) {
6354
- logger_default.warn(`failed to clean up legacy upgrade variant for ${mindName}`, logger_default.errorData(err));
6355
- }
6356
- }
6357
- return c.json({ error: "Upgrades now auto-merge. Run 'volute mind upgrade' again." }, 400);
6358
- }
6359
6365
  if (body.diff) {
6360
6366
  if (!existsSync7(resolve11(dir, ".git"))) {
6361
6367
  return c.json({ error: "Mind has no git history \u2014 nothing to diff against" }, 400);
@@ -6533,7 +6539,7 @@ ${user.trimEnd()}
6533
6539
  }
6534
6540
  writeVoluteConfig(dir, existing);
6535
6541
  if (body.unescapeNewlines !== void 0) {
6536
- const { clearEchoTextCache } = await import("./echo-text-73CYQRL7.js");
6542
+ const { clearEchoTextCache } = await import("./echo-text-Y2DFTD7L.js");
6537
6543
  clearEchoTextCache(name);
6538
6544
  }
6539
6545
  const needsConfigJson = body.model !== void 0 || body.thinkingLevel !== void 0 || body.compaction !== void 0;
@@ -6570,7 +6576,7 @@ ${user.trimEnd()}
6570
6576
  }
6571
6577
  if (entry.mindType === "spirit" && body.model !== void 0) {
6572
6578
  try {
6573
- const { readGlobalConfig: readGlobalConfig2, writeGlobalConfig: writeGlobalConfig2 } = await import("./setup-WZSXHHRJ.js");
6579
+ const { readGlobalConfig: readGlobalConfig2, writeGlobalConfig: writeGlobalConfig2 } = await import("./setup-R7Q4HFJP.js");
6574
6580
  const globalConfig = readGlobalConfig2();
6575
6581
  globalConfig.spiritModel = body.model;
6576
6582
  writeGlobalConfig2(globalConfig);
@@ -6647,7 +6653,7 @@ ${user.trimEnd()}
6647
6653
  if (!body.systemPrompt || !body.message) {
6648
6654
  return c.json({ error: "systemPrompt and message required" }, 400);
6649
6655
  }
6650
- const { aiComplete: aiCompleteFn, isAiConfigured: isAiConfigured2 } = await import("./ai-service-YW5SWCSB.js");
6656
+ const { aiComplete: aiCompleteFn, isAiConfigured: isAiConfigured2 } = await import("./ai-service-3UFNG6GI.js");
6651
6657
  if (!isAiConfigured2()) {
6652
6658
  return c.json({ error: "AI service not configured" }, 503);
6653
6659
  }
@@ -6815,26 +6821,10 @@ ${user.trimEnd()}
6815
6821
  const detail = c.req.query("detail") === "1";
6816
6822
  const db = await getDb();
6817
6823
  const typeFilter = detail ? void 0 : sql3`${mindHistory.type} IN ('inbound','event','outbound','tool_use','tool_result','text','thinking','activity')`;
6818
- let rows;
6819
- if (turnId) {
6820
- rows = await db.select().from(mindHistory).where(and5(eq5(mindHistory.mind, name), eq5(mindHistory.turn_id, turnId), typeFilter)).orderBy(mindHistory.id);
6821
- } else {
6822
- const session = c.req.query("session");
6823
- const fromId = parseInt(c.req.query("from_id") ?? "", 10);
6824
- const toId = parseInt(c.req.query("to_id") ?? "", 10);
6825
- if (!session || Number.isNaN(fromId) || Number.isNaN(toId)) {
6826
- return c.json({ error: "turn_id, or session with from_id and to_id, required" }, 400);
6827
- }
6828
- rows = await db.select().from(mindHistory).where(
6829
- and5(
6830
- eq5(mindHistory.mind, name),
6831
- eq5(mindHistory.thread, session),
6832
- sql3`${mindHistory.id} >= ${fromId}`,
6833
- sql3`${mindHistory.id} <= ${toId}`,
6834
- typeFilter
6835
- )
6836
- ).orderBy(mindHistory.id);
6824
+ if (!turnId) {
6825
+ return c.json({ error: "turn_id required" }, 400);
6837
6826
  }
6827
+ const rows = await db.select().from(mindHistory).where(and5(eq5(mindHistory.mind, name), eq5(mindHistory.turn_id, turnId), typeFilter)).orderBy(mindHistory.id);
6838
6828
  return c.json(rows);
6839
6829
  }).get("/:name/history/cross-session", requireSelf(), async (c) => {
6840
6830
  const name = c.req.param("name");
@@ -6892,6 +6882,11 @@ ${lines.join("\n")}` });
6892
6882
  const maxId = notices.reduce((m, n) => Math.max(m, n.id), 0);
6893
6883
  setNoticeDrainWatermark(baseName, session, maxId);
6894
6884
  return c.json({ context: formatEvents(notices), notices });
6885
+ }).get("/:name/turn-context", requireSelf(), async (c) => {
6886
+ const name = c.req.param("name");
6887
+ const baseName = await getBaseName(name);
6888
+ const reason = c.req.query("reason") === "wake" ? "wake" : "turn";
6889
+ return c.json({ context: await collectTurnContext(baseName, reason) });
6895
6890
  }).post("/:name/notices", requireSelf(), async (c) => {
6896
6891
  const MIND_POSTABLE_KINDS = ["context_lost", "delivery_failed"];
6897
6892
  const name = c.req.param("name");
@@ -7316,7 +7311,6 @@ var app15 = new Hono18().get("/:name/clock/status", requireSelf(), async (c) =>
7316
7311
  if (body.message) schedule.message = body.message;
7317
7312
  if (body.messages?.length) schedule.messages = body.messages;
7318
7313
  if (body.script) schedule.script = body.script;
7319
- if (body.channel) schedule.channel = body.channel;
7320
7314
  if (body.thread) schedule.thread = body.thread;
7321
7315
  if (body.whileSleeping) schedule.whileSleeping = body.whileSleeping;
7322
7316
  schedules.push(schedule);
@@ -7381,7 +7375,6 @@ var app15 = new Hono18().get("/:name/clock/status", requireSelf(), async (c) =>
7381
7375
  );
7382
7376
  }
7383
7377
  if (body.enabled !== void 0) schedules[idx].enabled = body.enabled;
7384
- if (body.channel !== void 0) schedules[idx].channel = body.channel || void 0;
7385
7378
  if (body.thread !== void 0) schedules[idx].thread = body.thread || void 0;
7386
7379
  if (body.whileSleeping !== void 0)
7387
7380
  schedules[idx].whileSleeping = body.whileSleeping || void 0;
@@ -7411,7 +7404,7 @@ var app15 = new Hono18().get("/:name/clock/status", requireSelf(), async (c) =>
7411
7404
  const entry = await findMind(name);
7412
7405
  if (!entry) return c.json({ error: "Mind not found" }, 404);
7413
7406
  const body = await c.req.text();
7414
- const { deliverEvent: deliverEvent2 } = await import("./system-events-Q7IVZ5T4.js");
7407
+ const { deliverEvent: deliverEvent2 } = await import("./system-events-CWC7CBKP.js");
7415
7408
  const { id, delivered } = await deliverEvent2(name, {
7416
7409
  type: "webhook",
7417
7410
  body,
@@ -7470,7 +7463,7 @@ setup.get("/status", async (c) => {
7470
7463
  let hasAccount = false;
7471
7464
  if (hasSystem) {
7472
7465
  try {
7473
- const { listUsersByType: listUsersByType2 } = await import("./auth-KRDSM55Q.js");
7466
+ const { listUsersByType: listUsersByType2 } = await import("./auth-N2F5ASAB.js");
7474
7467
  const brains = await listUsersByType2("human");
7475
7468
  hasAccount = brains.length > 0;
7476
7469
  } catch (err) {
@@ -7485,32 +7478,6 @@ setup.get("/status", async (c) => {
7485
7478
  spiritName: config2.setup?.spiritName ?? null
7486
7479
  });
7487
7480
  });
7488
- setup.post("/configure", async (c) => {
7489
- if (isSetupComplete()) {
7490
- return c.json({ error: "Setup already complete" }, 400);
7491
- }
7492
- let body;
7493
- try {
7494
- body = await c.req.json();
7495
- } catch {
7496
- return c.json({ error: "Invalid JSON in request body" }, 400);
7497
- }
7498
- if (!body.name?.trim()) {
7499
- return c.json({ error: "System name is required" }, 400);
7500
- }
7501
- const setupType = body.type ?? "local";
7502
- if (setupType !== "local") {
7503
- return c.json({ error: "Web setup only supports local install type" }, 400);
7504
- }
7505
- try {
7506
- const config2 = writeSetupConfig(body.name.trim());
7507
- config2.setupCompleted = true;
7508
- writeGlobalConfig(config2);
7509
- return c.json({ ok: true, config: { name: config2.name, setup: config2.setup } });
7510
- } catch (err) {
7511
- return c.json({ error: `Failed to write configuration: ${err.message}` }, 500);
7512
- }
7513
- });
7514
7481
  setup.post("/system", async (c) => {
7515
7482
  if (isSetupComplete()) {
7516
7483
  return c.json({ error: "Setup already complete" }, 400);
@@ -7682,7 +7649,7 @@ setup.post("/account", async (c) => {
7682
7649
  }
7683
7650
  }
7684
7651
  try {
7685
- const { createUser: createUser2, updateUserProfile: updateUserProfile2 } = await import("./auth-KRDSM55Q.js");
7652
+ const { createUser: createUser2, updateUserProfile: updateUserProfile2 } = await import("./auth-N2F5ASAB.js");
7686
7653
  const user = await createUser2(body.username.trim(), body.password);
7687
7654
  if (body.displayName?.trim()) {
7688
7655
  await updateUserProfile2(user.id, { display_name: body.displayName.trim() });
@@ -7728,7 +7695,7 @@ setup.post("/models", async (c) => {
7728
7695
  return c.json({ error: "Spirit model is required" }, 400);
7729
7696
  }
7730
7697
  try {
7731
- const { setEnabledModels: setEnabledModels3, setUtilityModel: setUtilityModel2 } = await import("./ai-service-YW5SWCSB.js");
7698
+ const { setEnabledModels: setEnabledModels3, setUtilityModel: setUtilityModel2 } = await import("./ai-service-3UFNG6GI.js");
7732
7699
  setEnabledModels3(body.models);
7733
7700
  const config2 = readGlobalConfig();
7734
7701
  config2.spiritModel = body.spiritModel.trim();
@@ -7808,8 +7775,8 @@ setup.post("/complete", async (c) => {
7808
7775
  return c.json({ error: "Setup already complete" }, 400);
7809
7776
  }
7810
7777
  try {
7811
- const { ensureSpiritProject, syncSpiritTemplate } = await import("./spirit-Q5VGFWUI.js");
7812
- const { startSpiritFull } = await import("./mind-service-7EFIJ3ZA.js");
7778
+ const { ensureSpiritProject, syncSpiritTemplate } = await import("./spirit-YPG2MU6W.js");
7779
+ const { startSpiritFull } = await import("./mind-service-LRVOQG2T.js");
7813
7780
  await ensureSpiritProject();
7814
7781
  await syncSpiritTemplate();
7815
7782
  await notifyExtensionsSpiritReady();
@@ -7817,7 +7784,7 @@ setup.post("/complete", async (c) => {
7817
7784
  const config2 = readGlobalConfig();
7818
7785
  if (config2.setup?.service && config2.setup?.type === "local") {
7819
7786
  try {
7820
- const { installUserService } = await import("./service-install-R4SNYUVO.js");
7787
+ const { installUserService } = await import("./service-install-RCC26KDV.js");
7821
7788
  const installed = await installUserService(config2.port, config2.hostname);
7822
7789
  if (!installed) {
7823
7790
  warnings.push("Service installation is not supported on this platform.");
@@ -7847,8 +7814,8 @@ setup.post("/complete", async (c) => {
7847
7814
  }
7848
7815
  let spiritConversationId;
7849
7816
  try {
7850
- const { getOrCreateMindUser: getOrCreateMindUser2, listUsersByType: listUsersByType2 } = await import("./auth-KRDSM55Q.js");
7851
- const { createConversation: createConversation2, findDMConversation: findDMConversation2 } = await import("./conversations-ZL6PHROD.js");
7817
+ const { getOrCreateMindUser: getOrCreateMindUser2, listUsersByType: listUsersByType2 } = await import("./auth-N2F5ASAB.js");
7818
+ const { createConversation: createConversation2, findDMConversation: findDMConversation2 } = await import("./conversations-ERMMPMOS.js");
7852
7819
  const spiritUser = await getOrCreateMindUser2(spiritName);
7853
7820
  const brains = await listUsersByType2("human");
7854
7821
  const admin2 = brains.find((u) => u.role === "admin");
@@ -7870,8 +7837,8 @@ setup.post("/complete", async (c) => {
7870
7837
  logger_default.info("setup complete state", { spiritConversationId, spiritStarted });
7871
7838
  if (spiritConversationId && spiritStarted) {
7872
7839
  try {
7873
- const { deliverMessage: deliverMessage2 } = await import("./message-delivery-TRKT4T2P.js");
7874
- const { listUsersByType: listUsers2 } = await import("./auth-KRDSM55Q.js");
7840
+ const { deliverMessage: deliverMessage2 } = await import("./message-delivery-HBTMGWFU.js");
7841
+ const { listUsersByType: listUsers2 } = await import("./auth-N2F5ASAB.js");
7875
7842
  const admins = await listUsers2("human");
7876
7843
  const admin2 = admins.find((u) => u.role === "admin");
7877
7844
  if (admin2) {
@@ -9120,8 +9087,8 @@ var app22 = new Hono26().get("/:name/variants", async (c) => {
9120
9087
  await chownMindDir(projectRoot, mindName);
9121
9088
  if (variantName.endsWith("-upgrade") || variantName === "upgrade") {
9122
9089
  try {
9123
- const { computeTemplateHash: computeTemplateHash2 } = await import("./template-hash-YKWMVYMM.js");
9124
- const { setMindTemplateHash: setMindTemplateHash2 } = await import("./registry-TRC2HJXR.js");
9090
+ const { computeTemplateHash: computeTemplateHash2 } = await import("./template-hash-RJRMF6DT.js");
9091
+ const { setMindTemplateHash: setMindTemplateHash2 } = await import("./registry-BTQXLDW6.js");
9125
9092
  const tmpl = parentEntry.template ?? "claude";
9126
9093
  await setMindTemplateHash2(mindName, computeTemplateHash2(tmpl));
9127
9094
  } catch (err) {
@@ -9817,6 +9784,7 @@ app26.get("/api/health", (c) => {
9817
9784
  ...cached?.updateAvailable ? { updateAvailable: true, latest: cached.latest } : {}
9818
9785
  });
9819
9786
  });
9787
+ app26.use("/api/ext/*", normalizeTrailingSlash(app26));
9820
9788
  app26.use("/api/activity/*", authMiddleware);
9821
9789
  app26.use("/api/minds/*", authMiddleware);
9822
9790
  app26.use("/api/conversations/*", authMiddleware);
@@ -9989,85 +9957,36 @@ async function startDaemon(opts) {
9989
9957
  const DAEMON_TOKEN_PATH = resolve18(systemDir, "daemon-token");
9990
9958
  mkdirSync10(home, { recursive: true });
9991
9959
  ensureSystemDir();
9992
- const { migrateConfigSecrets, migrateSetupCompleted } = await import("./setup-WZSXHHRJ.js");
9993
- migrateConfigSecrets();
9994
- migrateSetupCompleted();
9995
- const { migrateAiModelQualification } = await import("./ai-service-YW5SWCSB.js");
9996
- migrateAiModelQualification();
9997
- await (await import("./db-BONH4SUG.js")).getDb();
9960
+ await (await import("./db-BQFYIONA.js")).getDb();
9998
9961
  try {
9999
9962
  const { eq: eq9, and: and7 } = await import("drizzle-orm");
10000
9963
  const { users: users2 } = await import("./schema-ZZQVM4GR.js");
10001
- const db = await (await import("./db-BONH4SUG.js")).getDb();
9964
+ const db = await (await import("./db-BQFYIONA.js")).getDb();
10002
9965
  await db.update(users2).set({ role: "system" }).where(and7(eq9(users2.user_type, "system"), eq9(users2.role, "user")));
10003
9966
  } catch (err) {
10004
9967
  logger_default.warn("failed to migrate system user role", logger_default.errorData(err));
10005
9968
  }
10006
9969
  try {
10007
- const { migrateAvatarSizes } = await import("./avatar-image-52WGXLHV.js");
9970
+ const { migrateAvatarSizes } = await import("./avatar-image-QEKKUFDF.js");
10008
9971
  await migrateAvatarSizes();
10009
9972
  } catch (err) {
10010
9973
  logger_default.warn("avatar size migration failed", logger_default.errorData(err));
10011
9974
  }
10012
- try {
10013
- const { migrateThreadConfigs } = await import("./migrate-thread-config-EQSEP2XG.js");
10014
- await migrateThreadConfigs();
10015
- } catch (err) {
10016
- logger_default.warn("session\u2192thread config migration failed", logger_default.errorData(err));
10017
- }
10018
- try {
10019
- const { migrateNamePlaceholders } = await import("./migrate-name-placeholder-C7NCNLWF.js");
10020
- await migrateNamePlaceholders();
10021
- } catch (err) {
10022
- logger_default.warn("{{name}} placeholder migration failed", logger_default.errorData(err));
10023
- }
10024
- const { initSandbox } = await import("./sandbox-NNWCTHRI.js");
9975
+ const { initSandbox } = await import("./sandbox-OUFAGN45.js");
10025
9976
  await initSandbox();
10026
- try {
10027
- await syncBuiltinSkills();
10028
- } catch (err) {
10029
- logger_default.error("failed to sync built-in skills", logger_default.errorData(err));
10030
- }
10031
9977
  try {
10032
9978
  await loadAllExtensions(app_default, authMiddleware);
10033
9979
  notifyExtensionsDaemonStart();
10034
9980
  } catch (err) {
10035
9981
  logger_default.error("failed to load extensions", logger_default.errorData(err));
10036
9982
  }
10037
- await initDefaultSkills();
10038
- if (isAutoUpdateSkillsEnabled()) {
10039
- try {
10040
- await autoUpdateMindSkills();
10041
- } catch (err) {
10042
- logger_default.error("failed to auto-update mind skills", logger_default.errorData(err));
10043
- }
10044
- }
10045
- try {
10046
- await ensureSystemChannel();
10047
- } catch (err) {
10048
- logger_default.warn("failed to ensure #system channel", logger_default.errorData(err));
10049
- }
10050
- try {
10051
- await backfillSystemChannelMembers();
10052
- } catch (err) {
10053
- logger_default.warn("failed to backfill minds into #system", logger_default.errorData(err));
10054
- }
10055
- try {
10056
- const { getOrCreateSystemUser: getOrCreateSystemUser2 } = await import("./auth-KRDSM55Q.js");
10057
- await getOrCreateSystemUser2();
10058
- } catch (err) {
10059
- logger_default.warn(
10060
- "failed to ensure system user \u2014 system chat features will be unavailable",
10061
- logger_default.errorData(err)
10062
- );
10063
- }
10064
9983
  const token = process.env.VOLUTE_DAEMON_TOKEN || randomBytes3(32).toString("hex");
10065
- const { readGlobalConfig: readGlobalConfig2 } = await import("./setup-WZSXHHRJ.js");
9984
+ const { readGlobalConfig: readGlobalConfig2 } = await import("./setup-R7Q4HFJP.js");
10066
9985
  const globalCfg = readGlobalConfig2();
10067
9986
  let tls;
10068
9987
  if (opts.tailscale || globalCfg.tailscale) {
10069
9988
  try {
10070
- const { getTailscaleTls } = await import("./tailscale-KHNZFC7L.js");
9989
+ const { getTailscaleTls } = await import("./tailscale-4XY7B5A2.js");
10071
9990
  const tlsConfig = await getTailscaleTls();
10072
9991
  tls = { key: tlsConfig.key, cert: tlsConfig.cert };
10073
9992
  logger_default.info("Tailscale HTTPS enabled", { hostname: tlsConfig.hostname });
@@ -10099,6 +10018,38 @@ async function startDaemon(opts) {
10099
10018
  if (internalPort) daemonConfig.internalPort = internalPort;
10100
10019
  if (tls) daemonConfig.tls = true;
10101
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
+ }
10102
10053
  const delivery = initDeliveryManager();
10103
10054
  const manager = initMindManager();
10104
10055
  manager.loadCrashAttempts();
@@ -10121,7 +10072,7 @@ async function startDaemon(opts) {
10121
10072
  const orphanedTurns = await completeOrphanedTurns();
10122
10073
  summarizeOrphanedTurns(orphanedTurns);
10123
10074
  try {
10124
- const { reconcileVariants } = await import("./variant-cleanup-QHGGY7ND.js");
10075
+ const { reconcileVariants } = await import("./variant-cleanup-K7RFMSH7.js");
10125
10076
  await reconcileVariants();
10126
10077
  } catch (err) {
10127
10078
  logger_default.error("failed to reconcile variants", logger_default.errorData(err));
@@ -10155,15 +10106,15 @@ async function startDaemon(opts) {
10155
10106
  await Promise.all(workers);
10156
10107
  }
10157
10108
  try {
10158
- const { isSetupComplete: isSetupComplete2, getSpiritName: getSpiritName2 } = await import("./setup-WZSXHHRJ.js");
10109
+ const { isSetupComplete: isSetupComplete2, getSpiritName: getSpiritName2 } = await import("./setup-R7Q4HFJP.js");
10159
10110
  if (isSetupComplete2()) {
10160
- const { ensureSpiritProject, syncSpiritTemplate } = await import("./spirit-Q5VGFWUI.js");
10161
- const { startSpiritFull } = await import("./mind-service-7EFIJ3ZA.js");
10111
+ const { ensureSpiritProject, syncSpiritTemplate } = await import("./spirit-YPG2MU6W.js");
10112
+ const { startSpiritFull } = await import("./mind-service-LRVOQG2T.js");
10162
10113
  await ensureSpiritProject();
10163
10114
  const spiritName = getSpiritName2();
10164
10115
  const spiritEntry = await findMind(spiritName);
10165
10116
  if (spiritEntry?.dir) {
10166
- const { registerMindDir } = await import("./delivery-router-QS4NLJR6.js");
10117
+ const { registerMindDir } = await import("./delivery-router-U6Q22ZYU.js");
10167
10118
  registerMindDir(spiritName, spiritEntry.dir);
10168
10119
  }
10169
10120
  await syncSpiritTemplate();
@@ -10178,7 +10129,7 @@ async function startDaemon(opts) {
10178
10129
  bridgeManager.startBridges(daemonPort).catch((err) => {
10179
10130
  logger_default.warn("failed to start bridges", logger_default.errorData(err));
10180
10131
  });
10181
- import("./cloud-sync-52YNJRMR.js").then(
10132
+ import("./cloud-sync-RTUXMYU2.js").then(
10182
10133
  ({ consumeQueuedMessages }) => consumeQueuedMessages().catch((err) => {
10183
10134
  logger_default.warn("failed to consume queued cloud messages", logger_default.errorData(err));
10184
10135
  })
@@ -10186,11 +10137,11 @@ async function startDaemon(opts) {
10186
10137
  logger_default.warn("failed to load cloud-sync module", logger_default.errorData(err));
10187
10138
  });
10188
10139
  try {
10189
- const { backfillTemplateHashes, notifyVersionUpdate, warnStaleTemplates } = await import("./version-notify-VNVFX6UP.js");
10140
+ const { backfillTemplateHashes, notifyVersionUpdate, warnStaleTemplates } = await import("./version-notify-QIDHR6WO.js");
10190
10141
  notifyVersionUpdate().catch((err) => {
10191
10142
  logger_default.warn("failed to send version update notifications", logger_default.errorData(err));
10192
10143
  }).then(() => backfillTemplateHashes()).then(() => warnStaleTemplates()).then(async () => {
10193
- const { runAutoUpgrades } = await import("./auto-upgrade-HEVZKPTF.js");
10144
+ const { runAutoUpgrades } = await import("./auto-upgrade-O4MQPYQF.js");
10194
10145
  await runAutoUpgrades();
10195
10146
  }).catch((err) => {
10196
10147
  logger_default.warn("template staleness/auto-upgrade pass failed", logger_default.errorData(err));