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
@@ -9,9 +9,9 @@ import {
9
9
  SYSTEM_LAUNCHD_PLIST_PATH,
10
10
  SYSTEM_SERVICE_PATH,
11
11
  USER_SYSTEMD_UNIT
12
- } from "./chunk-CKPAVQNK.js";
13
- import "./chunk-OIOW3FPT.js";
14
- import "./chunk-H6X6CKDN.js";
12
+ } from "./chunk-OPTA3BJ4.js";
13
+ import "./chunk-NA2NJXY4.js";
14
+ import "./chunk-TAVIVN2I.js";
15
15
  import "./chunk-2RNMBXD2.js";
16
16
  import "./chunk-K3NQKI34.js";
17
17
 
@@ -90,27 +90,6 @@ var cmd = subcommands({
90
90
  status: {
91
91
  description: "Check service status",
92
92
  run: async () => status()
93
- },
94
- install: {
95
- description: "(deprecated) Use 'volute setup' instead",
96
- run: async () => {
97
- console.log("'volute service install' has been replaced by 'volute setup'.");
98
- console.log("Run `volute setup` to configure your installation.");
99
- }
100
- },
101
- uninstall: {
102
- description: "(deprecated) Use 'volute setup' instead",
103
- run: async () => {
104
- console.log("'volute service uninstall' has been replaced by 'volute setup'.");
105
- console.log("To uninstall the service, remove the service file manually:");
106
- if (process.platform === "darwin") {
107
- console.log(" launchctl unload ~/Library/LaunchAgents/com.volute.daemon.plist");
108
- console.log(" rm ~/Library/LaunchAgents/com.volute.daemon.plist");
109
- } else {
110
- console.log(" systemctl --user disable --now volute");
111
- console.log(" rm ~/.config/systemd/user/volute.service");
112
- }
113
- }
114
93
  }
115
94
  }
116
95
  });
@@ -3,10 +3,10 @@ import {
3
3
  generateUserPlist,
4
4
  generateUserUnit,
5
5
  installUserService
6
- } from "./chunk-5U5GLZSD.js";
7
- import "./chunk-CKPAVQNK.js";
8
- import "./chunk-OIOW3FPT.js";
9
- import "./chunk-H6X6CKDN.js";
6
+ } from "./chunk-TZ7OHGNL.js";
7
+ import "./chunk-OPTA3BJ4.js";
8
+ import "./chunk-NA2NJXY4.js";
9
+ import "./chunk-TAVIVN2I.js";
10
10
  import "./chunk-2RNMBXD2.js";
11
11
  import "./chunk-K3NQKI34.js";
12
12
  export {
@@ -8,20 +8,20 @@ import {
8
8
  import "./chunk-O7IGP7ZW.js";
9
9
  import {
10
10
  installUserService
11
- } from "./chunk-5U5GLZSD.js";
11
+ } from "./chunk-TZ7OHGNL.js";
12
12
  import {
13
13
  LAUNCHD_PLIST_LABEL,
14
14
  SYSTEM_LAUNCHD_PLIST_PATH,
15
15
  SYSTEM_SERVICE_PATH
16
- } from "./chunk-CKPAVQNK.js";
16
+ } from "./chunk-OPTA3BJ4.js";
17
17
  import {
18
18
  ensureVoluteGroup,
19
19
  resolveVoluteBin
20
- } from "./chunk-OIOW3FPT.js";
20
+ } from "./chunk-NA2NJXY4.js";
21
21
  import {
22
22
  readGlobalConfig,
23
23
  writeGlobalConfig
24
- } from "./chunk-H6X6CKDN.js";
24
+ } from "./chunk-TAVIVN2I.js";
25
25
  import "./chunk-2RNMBXD2.js";
26
26
  import "./chunk-K3NQKI34.js";
27
27
 
@@ -220,7 +220,7 @@ async function startDaemonAndOpenBrowser(port, host) {
220
220
  const url = `http://${displayHost === "0.0.0.0" || displayHost === "::" ? "localhost" : displayHost}:${displayPort}`;
221
221
  console.log("\nStarting daemon...");
222
222
  try {
223
- const { run: runUp } = await import("./up-XZDSJVMU.js");
223
+ const { run: runUp } = await import("./up-3AAN4GYY.js");
224
224
  await runUp([
225
225
  ...port != null ? ["--port", String(port)] : [],
226
226
  ...host ? ["--host", host] : []
@@ -7,8 +7,6 @@ import {
7
7
  getSystemName,
8
8
  isImagegenEnabled,
9
9
  isSetupComplete,
10
- migrateConfigSecrets,
11
- migrateSetupCompleted,
12
10
  mindLimitError,
13
11
  readGlobalConfig,
14
12
  readGlobalConfigStrict,
@@ -16,7 +14,7 @@ import {
16
14
  setupStatus,
17
15
  setupUrl,
18
16
  writeGlobalConfig
19
- } from "./chunk-H6X6CKDN.js";
17
+ } from "./chunk-TAVIVN2I.js";
20
18
  import "./chunk-2RNMBXD2.js";
21
19
  import "./chunk-K3NQKI34.js";
22
20
  export {
@@ -27,8 +25,6 @@ export {
27
25
  getSystemName,
28
26
  isImagegenEnabled,
29
27
  isSetupComplete,
30
- migrateConfigSecrets,
31
- migrateSetupCompleted,
32
28
  mindLimitError,
33
29
  readGlobalConfig,
34
30
  readGlobalConfigStrict,
@@ -189,6 +189,14 @@ Default is `transparent` — observers can watch you think and work. `private` h
189
189
 
190
190
  Edit `.local/hooks/startup-context.ts` to customize what you see when a new session starts. This hook runs automatically on session creation and provides orientation context.
191
191
 
192
+ ### Turning a hook off
193
+
194
+ Everything under `.local/` is framework machinery — hooks the daemon runs, shims it generates. Your edits to those files are yours and are never overwritten. But the daemon does *add back* any file that is missing, on every start, so that a capability shipped after you were created still reaches you.
195
+
196
+ That means **deleting a hook doesn't stick** — it comes back, because absence can't be told apart from "this mind predates the hook."
197
+
198
+ To turn a hook off for good, **empty the file instead of removing it**. An empty hook is respected forever and runs as a no-op. This is a real limitation, not a preference about how you should work; the durable version of "I removed this on purpose" is tracked in [#811](https://github.com/mimsy/volute/issues/811).
199
+
192
200
  ## Reference Files
193
201
 
194
202
  When configuring message routing, read `references/routing.md`.
@@ -28,10 +28,10 @@ import {
28
28
  syncBuiltinSkills,
29
29
  uninstallSkill,
30
30
  updateSkill
31
- } from "./chunk-PPSN2MLC.js";
32
- import "./chunk-OIOW3FPT.js";
33
- import "./chunk-QUSMYGNQ.js";
34
- import "./chunk-H6X6CKDN.js";
31
+ } from "./chunk-IRNM4LSF.js";
32
+ import "./chunk-NA2NJXY4.js";
33
+ import "./chunk-2674KIGI.js";
34
+ import "./chunk-TAVIVN2I.js";
35
35
  import "./chunk-2RNMBXD2.js";
36
36
  import "./chunk-K3NQKI34.js";
37
37
  export {
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ SleepManager,
4
+ getSleepManager,
5
+ getSleepManagerIfReady,
6
+ initSleepManager,
7
+ matchesGlob
8
+ } from "./chunk-ELQU2GBT.js";
9
+ import "./chunk-GAAATVTM.js";
10
+ import "./chunk-P3GXOT2X.js";
11
+ import "./chunk-2B4E6SL7.js";
12
+ import "./chunk-IOMBP2T5.js";
13
+ import "./chunk-PAO7JZNW.js";
14
+ import "./chunk-TGYKFUCF.js";
15
+ import "./chunk-CLH357FI.js";
16
+ import "./chunk-Q5M5QFKY.js";
17
+ import "./chunk-UMQP5TC5.js";
18
+ import "./chunk-WTZD6LFW.js";
19
+ import "./chunk-DW4TRDOZ.js";
20
+ import "./chunk-WCFSBH33.js";
21
+ import "./chunk-IQROTVBG.js";
22
+ import "./chunk-I3OJ342S.js";
23
+ import "./chunk-FYMIGUJ5.js";
24
+ import "./chunk-6LICEQGP.js";
25
+ import "./chunk-MNKPAAQF.js";
26
+ import "./chunk-CVPCRWWC.js";
27
+ import "./chunk-IRNM4LSF.js";
28
+ import "./chunk-NA2NJXY4.js";
29
+ import "./chunk-OHHS5PSI.js";
30
+ import "./chunk-E2SN3ZOJ.js";
31
+ import "./chunk-2674KIGI.js";
32
+ import "./chunk-LGNUFVMR.js";
33
+ import "./chunk-TAVIVN2I.js";
34
+ import "./chunk-2RNMBXD2.js";
35
+ import "./chunk-K3NQKI34.js";
36
+ export {
37
+ SleepManager,
38
+ getSleepManager,
39
+ getSleepManagerIfReady,
40
+ initSleepManager,
41
+ matchesGlob
42
+ };
@@ -18,14 +18,14 @@ import {
18
18
  syncSpiritTemplate,
19
19
  writeSpiritDoctrine,
20
20
  writeSpiritSystemJson
21
- } from "./chunk-RGHF3OK5.js";
22
- import "./chunk-X67BDDZR.js";
23
- import "./chunk-PPSN2MLC.js";
21
+ } from "./chunk-GAAATVTM.js";
22
+ import "./chunk-P3GXOT2X.js";
24
23
  import "./chunk-WCFSBH33.js";
25
- import "./chunk-OIOW3FPT.js";
26
- import "./chunk-EGV6R6UF.js";
27
- import "./chunk-QUSMYGNQ.js";
28
- import "./chunk-H6X6CKDN.js";
24
+ import "./chunk-IRNM4LSF.js";
25
+ import "./chunk-NA2NJXY4.js";
26
+ import "./chunk-E2SN3ZOJ.js";
27
+ import "./chunk-2674KIGI.js";
28
+ import "./chunk-TAVIVN2I.js";
29
29
  import "./chunk-2RNMBXD2.js";
30
30
  import "./chunk-K3NQKI34.js";
31
31
  export {
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ SPIRIT_NOTICE_PREFIX,
4
+ _resetSpiritAvailabilityState,
5
+ classifySpiritState,
6
+ ensureSpiritAvailable,
7
+ spiritUnavailableNotice
8
+ } from "./chunk-UNTDRIV2.js";
9
+ import "./chunk-ELQU2GBT.js";
10
+ import "./chunk-GAAATVTM.js";
11
+ import "./chunk-P3GXOT2X.js";
12
+ import "./chunk-2B4E6SL7.js";
13
+ import "./chunk-IOMBP2T5.js";
14
+ import "./chunk-PAO7JZNW.js";
15
+ import "./chunk-TGYKFUCF.js";
16
+ import "./chunk-CLH357FI.js";
17
+ import "./chunk-Q5M5QFKY.js";
18
+ import "./chunk-UMQP5TC5.js";
19
+ import "./chunk-WTZD6LFW.js";
20
+ import "./chunk-DW4TRDOZ.js";
21
+ import "./chunk-WCFSBH33.js";
22
+ import "./chunk-IQROTVBG.js";
23
+ import "./chunk-I3OJ342S.js";
24
+ import "./chunk-FYMIGUJ5.js";
25
+ import "./chunk-6LICEQGP.js";
26
+ import "./chunk-MNKPAAQF.js";
27
+ import "./chunk-CVPCRWWC.js";
28
+ import "./chunk-IRNM4LSF.js";
29
+ import "./chunk-NA2NJXY4.js";
30
+ import "./chunk-OHHS5PSI.js";
31
+ import "./chunk-E2SN3ZOJ.js";
32
+ import "./chunk-2674KIGI.js";
33
+ import "./chunk-LGNUFVMR.js";
34
+ import "./chunk-TAVIVN2I.js";
35
+ import "./chunk-2RNMBXD2.js";
36
+ import "./chunk-K3NQKI34.js";
37
+ export {
38
+ SPIRIT_NOTICE_PREFIX,
39
+ _resetSpiritAvailabilityState,
40
+ classifySpiritState,
41
+ ensureSpiritAvailable,
42
+ spiritUnavailableNotice
43
+ };
@@ -289,9 +289,12 @@ function initDb(db) {
289
289
  import { Hono } from "hono";
290
290
  function resolveActor(c) {
291
291
  const user = c.get("user");
292
- if (!user || user.id === 0) return null;
292
+ if (!user) return null;
293
293
  return user;
294
294
  }
295
+ function canOwn(actor) {
296
+ return actor.id !== 0;
297
+ }
295
298
  async function parseJson(c) {
296
299
  try {
297
300
  return await c.req.json();
@@ -316,7 +319,7 @@ function createRoutes(ctx) {
316
319
  }).post("/", async (c) => {
317
320
  const actor = resolveActor(c);
318
321
  if (!actor) return c.json({ error: "Unauthorized" }, 401);
319
- if (actor.user_type !== "mind" && actor.role !== "admin") {
322
+ if (actor.user_type !== "mind" && actor.role !== "admin" || !canOwn(actor)) {
320
323
  return c.json({ error: "Only a mind can hold intentions" }, 403);
321
324
  }
322
325
  const body = await parseJson(c);