volute 0.53.0 → 0.55.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 (210) hide show
  1. package/dist/{activity-events-LQII6PZS.js → activity-events-TFAJBNBW.js} +2 -2
  2. package/dist/{ai-service-YW5SWCSB.js → ai-service-KEK2V3AP.js} +2 -2
  3. package/dist/{auth-KRDSM55Q.js → auth-Y27LTNZK.js} +3 -3
  4. package/dist/auto-upgrade-2MZF7NG3.js +46 -0
  5. package/dist/{avatar-image-52WGXLHV.js → avatar-image-SN576P45.js} +2 -2
  6. package/dist/{backup-WWXVIMYQ.js → backup-GDCWH6MC.js} +12 -12
  7. package/dist/channels-AFJWGX7W.js +203 -0
  8. package/dist/{chat-WK2BLM7B.js → chat-HVPOZK3O.js} +9 -9
  9. package/dist/{chunk-QUSMYGNQ.js → chunk-2674KIGI.js} +1 -0
  10. package/dist/chunk-2GATCSZK.js +520 -0
  11. package/dist/{chunk-P2TBUKLW.js → chunk-3SFKY4GI.js} +4 -4
  12. package/dist/{chunk-RMADJFA7.js → chunk-45QTYKQQ.js} +4 -4
  13. package/dist/{chunk-TAWRJ24T.js → chunk-4VAQKLMU.js} +8 -5
  14. package/dist/{chunk-OXWUEU5V.js → chunk-5U5GLZSD.js} +2 -2
  15. package/dist/{chunk-TPX6E6PL.js → chunk-6HBGUPBA.js} +2 -2
  16. package/dist/{chunk-UFTDRTCP.js → chunk-7AA4T2RT.js} +2 -2
  17. package/dist/{chunk-LN7XJ56R.js → chunk-7XKPG66D.js} +9 -9
  18. package/dist/{chunk-VDZ4I4ZP.js → chunk-BP2X5AIK.js} +8 -14
  19. package/dist/{chunk-PIZDPY4G.js → chunk-CKOA4LWV.js} +12 -12
  20. package/dist/{chunk-6NLW72HP.js → chunk-CKPAVQNK.js} +1 -1
  21. package/dist/{chunk-IQ7VNWH6.js → chunk-DUV4EMNW.js} +37 -3
  22. package/dist/{chunk-CV6BNGFK.js → chunk-FSXPPOPM.js} +3 -3
  23. package/dist/{chunk-UTKUO2KY.js → chunk-FZUPIS3T.js} +3 -3
  24. package/dist/{chunk-L7BKTZ5U.js → chunk-G3XAB4DK.js} +1 -1
  25. package/dist/{chunk-23UJGVYP.js → chunk-HLWQ3P3R.js} +50 -46
  26. package/dist/{chunk-AP2KQMMW.js → chunk-HTSWDOJE.js} +11 -14
  27. package/dist/{chunk-EDR47UE2.js → chunk-IR2FW4W7.js} +2 -2
  28. package/dist/{chunk-ICXY54ZC.js → chunk-IT4GEFDH.js} +1 -1
  29. package/dist/{chunk-F6D766VQ.js → chunk-KS62IHE2.js} +1 -1
  30. package/dist/{chunk-LNNI3MS4.js → chunk-MNKPAAQF.js} +9 -2
  31. package/dist/{chunk-HASADR3E.js → chunk-NCRG4SBR.js} +241 -66
  32. package/dist/{chunk-I7U5EEZC.js → chunk-NM5FDH4T.js} +1 -1
  33. package/dist/{chunk-7LT3YZUR.js → chunk-OFU6WJJZ.js} +1 -1
  34. package/dist/{chunk-M77B73VV.js → chunk-OIOW3FPT.js} +7 -2
  35. package/dist/{chunk-BDHKCLWK.js → chunk-OKM67ZWH.js} +1 -1
  36. package/dist/chunk-OUGD5L5U.js +918 -0
  37. package/dist/{chunk-X67BDDZR.js → chunk-P3GXOT2X.js} +48 -2
  38. package/dist/{chunk-U54PJPTB.js → chunk-PRZUBJ4K.js} +1 -1
  39. package/dist/{chunk-UO4MZQNO.js → chunk-QVS3C4DK.js} +15 -7
  40. package/dist/{chunk-RQRO6PC7.js → chunk-TMTAHKYP.js} +324 -48
  41. package/dist/{chunk-5DBGQBQR.js → chunk-UEZC5MNB.js} +29 -18
  42. package/dist/{chunk-7ARONCZW.js → chunk-VTFXZPC3.js} +13 -13
  43. package/dist/{chunk-UDZLPR34.js → chunk-W3OIPJPB.js} +14 -9
  44. package/dist/{chunk-HTB7KDRU.js → chunk-WZZCA23D.js} +5 -4
  45. package/dist/{chunk-5Y54AE3L.js → chunk-XAG53RWY.js} +1 -1
  46. package/dist/{chunk-HTRSSOHY.js → chunk-YU5EYQAE.js} +1 -1
  47. package/dist/{chunk-5N32EN4O.js → chunk-Z4Q6TQWL.js} +1 -1
  48. package/dist/{chunk-EGV6R6UF.js → chunk-Z7TNIIHW.js} +3 -1
  49. package/dist/cli.js +19 -19
  50. package/dist/{clock-SH4NQC2F.js → clock-X7V3C7NL.js} +3 -3
  51. package/dist/{cloud-sync-MJVJ33LD.js → cloud-sync-FM73SVFJ.js} +21 -21
  52. package/dist/{conversations-ZL6PHROD.js → conversations-FH3ODBL7.js} +3 -3
  53. package/dist/{create-G2RIKQYK.js → create-P75ZFTVN.js} +1 -1
  54. package/dist/{daemon-restart-BIGU4OKS.js → daemon-restart-JQMMMITM.js} +4 -4
  55. package/dist/daemon.js +469 -857
  56. package/dist/db-JH3NTERX.js +36 -0
  57. package/dist/delivery-manager-H23Q23N7.js +41 -0
  58. package/dist/{delivery-notices-65TB3CBX.js → delivery-notices-S7TKOACE.js} +5 -5
  59. package/dist/{delivery-router-RHANNTAC.js → delivery-router-KHBVEVVL.js} +4 -2
  60. package/dist/{down-QSNEMTTX.js → down-UN2EDX2Y.js} +3 -3
  61. package/dist/echo-text-ULEIFJJF.js +40 -0
  62. package/dist/{exec-ABD3DYA2.js → exec-Z34TTUO3.js} +1 -1
  63. package/dist/extensions-QD22GXZD.js +74 -0
  64. package/dist/{files-CHPNEQXN.js → files-DUGRXN6V.js} +5 -5
  65. package/dist/{import-DB2KULRO.js → import-RDDUGGFI.js} +3 -3
  66. package/dist/{isolation-GVV2IBAU.js → isolation-UQPDO34R.js} +1 -1
  67. package/dist/message-delivery-LU4EP244.js +46 -0
  68. package/dist/migrate-init-infrastructure-Z72UJ5NT.js +44 -0
  69. package/dist/migrate-name-placeholder-64AEAWPE.js +37 -0
  70. package/dist/{migrate-thread-config-EQSEP2XG.js → migrate-thread-config-SVF2M3D3.js} +1 -1
  71. package/dist/{mind-IX5AWUST.js → mind-BARCLI7O.js} +14 -14
  72. package/dist/{mind-activity-tracker-QF6DCX2X.js → mind-activity-tracker-UT23RGBF.js} +3 -3
  73. package/dist/{mind-contacts-BKUOUJPV.js → mind-contacts-PEXCDRXA.js} +8 -8
  74. package/dist/{mind-list-KNU34SUD.js → mind-list-7KBLPLES.js} +2 -2
  75. package/dist/mind-service-ZJCUBAUL.js +48 -0
  76. package/dist/{mind-sleep-D3DEYAWG.js → mind-sleep-24HV4RCA.js} +5 -5
  77. package/dist/{mind-status-BPTLQ5Z6.js → mind-status-4YW4PHMO.js} +6 -3
  78. package/dist/{package-BN5KMU54.js → package-AUDBDKAO.js} +12 -14
  79. package/dist/{prompts-HNKGCAEY.js → prompts-MOBF3TMO.js} +1 -1
  80. package/dist/{sandbox-NNWCTHRI.js → sandbox-VI7XWBIA.js} +2 -2
  81. package/dist/scheduler-GLINVC2B.js +27 -0
  82. package/dist/{seed-LHZ33UB4.js → seed-5JGR7ZRA.js} +1 -1
  83. package/dist/{seed-cmd-U4RVJ3UA.js → seed-cmd-M6A7N7F3.js} +2 -2
  84. package/dist/{seed-create-OQU4KNCB.js → seed-create-TGFZW4IO.js} +3 -3
  85. package/dist/{seed-readiness-WJYYRRCK.js → seed-readiness-XBH2MUNA.js} +2 -2
  86. package/dist/{seed-sprout-SFUYH2RG.js → seed-sprout-3IC5ZVTI.js} +11 -11
  87. package/dist/{send-FWZAMDBN.js → send-DHYBAYK4.js} +11 -11
  88. package/dist/{service-XQPMZAGI.js → service-T4P5W6RS.js} +2 -2
  89. package/dist/{service-install-2EWD7KXD.js → service-install-R4SNYUVO.js} +3 -3
  90. package/dist/{setup-RVSGCIF3.js → setup-6KAH3GRW.js} +4 -4
  91. package/dist/skills/dreaming/SKILL.md +2 -2
  92. package/dist/skills/dreaming/references/INSTALL.md +1 -1
  93. package/dist/skills/tending/SKILL.md +2 -0
  94. package/dist/skills/volute-mind/SKILL.md +8 -0
  95. package/dist/skills/volute-mind/references/integrations.md +3 -2
  96. package/dist/skills/volute-mind/references/routing.md +18 -5
  97. package/dist/{skills-QRPU6BWY.js → skills-LKQCYFVP.js} +3 -3
  98. package/dist/sleep-manager-Q3ITFNOJ.js +42 -0
  99. package/dist/{spirit-I5ECLGRI.js → spirit-FKXMGO3N.js} +8 -6
  100. package/dist/spirit-availability-5R2WYSWF.js +43 -0
  101. package/dist/{sprout-A2PMEF7Z.js → sprout-VEW3CUNX.js} +1 -1
  102. package/dist/src-246GSX7A.js +519 -0
  103. package/dist/src-LOUB3WPR.js +4189 -0
  104. package/dist/{status-EYG4A3OK.js → status-LCKTTIWS.js} +5 -5
  105. package/dist/{system-events-YTOU66QI.js → system-events-ZYOCYAO2.js} +5 -3
  106. package/dist/{systems-2DIJY4RF.js → systems-HL7SGSW7.js} +6 -6
  107. package/dist/{tailscale-KHNZFC7L.js → tailscale-F2IMBILZ.js} +1 -1
  108. package/dist/{template-hash-YKWMVYMM.js → template-hash-RJRMF6DT.js} +2 -2
  109. package/dist/{template-staleness-PY2CULH6.js → template-staleness-IBD722PN.js} +4 -4
  110. package/dist/{turn-tracker-NNHS6MAR.js → turn-tracker-BE34OI6O.js} +7 -7
  111. package/dist/{up-UGBHH743.js → up-J47J5JRB.js} +3 -3
  112. package/dist/{update-CIWI2JYA.js → update-ILCPVNDD.js} +2 -2
  113. package/dist/{upgrade-LIE46UBB.js → upgrade-XY2J7NWZ.js} +9 -1
  114. package/dist/variant-cleanup-JGJZ5KB4.js +24 -0
  115. package/dist/{version-notify-SJVAQLZI.js → version-notify-KIXYNHJC.js} +28 -13
  116. package/dist/web-assets/assets/{index-b7G7ZsVk.js → index-CoU1eUKE.js} +25 -25
  117. package/dist/web-assets/assets/index-hPn_fkz3.css +1 -0
  118. package/dist/web-assets/index.html +2 -2
  119. package/package.json +12 -14
  120. package/packages/extensions/intentions/dist/ui/assets/index-3FneLCKR.css +1 -0
  121. package/packages/extensions/intentions/dist/ui/assets/index-Bl5KEcli.js +67 -0
  122. package/packages/extensions/{notes → intentions}/dist/ui/index.html +3 -3
  123. package/packages/extensions/intentions/skills/intention-review/SKILL.md +38 -0
  124. package/packages/extensions/intentions/skills/intentions/SKILL.md +49 -0
  125. package/packages/extensions/intentions/skills/intentions/scripts/intentions-hook.sh +45 -0
  126. package/packages/extensions/pages/dist/ui/assets/index-BKxVQkA9.css +1 -0
  127. package/packages/extensions/pages/dist/ui/assets/index-BMt6sStP.js +68 -0
  128. package/packages/extensions/pages/dist/ui/index.html +2 -2
  129. package/packages/extensions/pages/skills/commons-gardening/SKILL.md +50 -0
  130. package/packages/extensions/pages/skills/pages/SKILL.md +140 -16
  131. package/templates/_base/.init/.config/prompts.json +2 -3
  132. package/templates/{pi → _base}/.init/.config/routes.json +1 -0
  133. package/templates/_base/.init/.local/hooks/pre-prompt/turn-context.ts +30 -0
  134. package/templates/_base/.init/memory/dreams/.gitkeep +0 -0
  135. package/templates/_base/home/.config/routes.json +1 -1
  136. package/templates/_base/home/VOLUTE.md +1 -1
  137. package/templates/_base/src/lib/codex-session-seed.ts +6 -55
  138. package/templates/_base/src/lib/context-breakdown.ts +11 -3
  139. package/templates/_base/src/lib/pi-session-seed.ts +8 -57
  140. package/templates/_base/src/lib/routing.ts +2 -2
  141. package/templates/_base/src/lib/seed-note.ts +4 -4
  142. package/templates/_base/src/lib/session-seed.ts +8 -53
  143. package/templates/_base/src/lib/startup.ts +4 -22
  144. package/templates/claude/.init/CLAUDE.md +4 -0
  145. package/templates/claude/package.json +2 -2
  146. package/templates/claude/src/agent.ts +60 -112
  147. package/templates/claude/src/lib/hooks/pre-compact.ts +6 -6
  148. package/templates/claude/src/lib/message-channel.ts +43 -15
  149. package/templates/claude/src/lib/recover.ts +69 -0
  150. package/templates/claude/src/lib/stream-consumer.ts +23 -5
  151. package/templates/claude/src/server.ts +0 -1
  152. package/templates/claude/volute-template.json +1 -1
  153. package/templates/codex/.init/AGENTS.md +4 -0
  154. package/templates/codex/package.json +2 -2
  155. package/templates/codex/src/agent.ts +23 -89
  156. package/templates/codex/volute-template.json +1 -1
  157. package/templates/pi/.init/MINDS.md +4 -0
  158. package/templates/pi/package.json +1 -1
  159. package/templates/pi/src/agent.ts +26 -93
  160. package/templates/pi/src/lib/mechanics-doc.ts +30 -0
  161. package/templates/pi/src/server.ts +3 -2
  162. package/templates/pi/volute-template.json +1 -1
  163. package/dist/channels-LW5ZLMSQ.js +0 -90
  164. package/dist/chunk-R772ET2M.js +0 -164
  165. package/dist/db-IPXRJUI7.js +0 -20
  166. package/dist/delivery-manager-FDHCZ7PU.js +0 -37
  167. package/dist/echo-text-KU6G4Z7V.js +0 -40
  168. package/dist/extensions-VACUKFA5.js +0 -60
  169. package/dist/message-delivery-TUXM3AAE.js +0 -46
  170. package/dist/mind-service-WHFBUKZE.js +0 -48
  171. package/dist/scheduler-5X5UIQOQ.js +0 -27
  172. package/dist/skills/plan-coordinator/SKILL.md +0 -60
  173. package/dist/sleep-manager-NWUCRBZB.js +0 -42
  174. package/dist/spirit-availability-NIUUYKU2.js +0 -43
  175. package/dist/src-HGNE2XG4.js +0 -832
  176. package/dist/src-LCSOQY6Z.js +0 -2222
  177. package/dist/src-UDMJZ6MH.js +0 -426
  178. package/dist/variant-cleanup-CZDLIY3F.js +0 -24
  179. package/dist/web-assets/assets/index-BHSU9r-4.css +0 -1
  180. package/packages/extensions/notes/dist/ui/assets/index-BBs8pyel.js +0 -67
  181. package/packages/extensions/notes/dist/ui/assets/index-D3cdui42.css +0 -1
  182. package/packages/extensions/notes/skills/notes/SKILL.md +0 -90
  183. package/packages/extensions/pages/dist/ui/assets/index-B589e8Xe.js +0 -2
  184. package/packages/extensions/pages/dist/ui/assets/index-BuXnE-rb.css +0 -1
  185. package/packages/extensions/plan/dist/ui/assets/index-B8s8wxyt.js +0 -67
  186. package/packages/extensions/plan/dist/ui/assets/index-jIkrt-vI.css +0 -1
  187. package/packages/extensions/plan/dist/ui/index.html +0 -14
  188. package/packages/extensions/plan/skills/plan/SKILL.md +0 -43
  189. package/packages/extensions/plan/skills/plan/scripts/plan-hook.sh +0 -37
  190. package/templates/claude/.init/.config/routes.json +0 -11
  191. package/templates/codex/.init/.config/routes.json +0 -11
  192. package/dist/{accept-I4GVGWA3.js → accept-RSDIVJL6.js} +3 -3
  193. package/dist/{bridge-KU2IKSH3.js → bridge-YK7NTRU5.js} +3 -3
  194. package/dist/{create-C3XZACTV.js → create-M727VUDF.js} +3 -3
  195. package/dist/{env-BJGM6FBA.js → env-7AZFBPWX.js} +7 -7
  196. package/dist/{extension-B2W52WZY.js → extension-MRYJWSMV.js} +3 -3
  197. package/dist/{list-R2GDWOEE.js → list-UQGIW7OF.js} +3 -3
  198. package/dist/{login-EZ4RRDQX.js → login-4NUS72Z5.js} +3 -3
  199. package/dist/{login-JDOAK465.js → login-57MMYILL.js} +4 -4
  200. package/dist/{logout-MWSIUOQU.js → logout-BYV433X6.js} +3 -3
  201. package/dist/{logout-K6ZGAJY5.js → logout-YFZAJRPY.js} +3 -3
  202. package/dist/{mind-history-RVF6KJ7K.js → mind-history-RZMMCHMX.js} +9 -9
  203. package/dist/{mind-wake-DCDFFQKX.js → mind-wake-LDGPRA42.js} +3 -3
  204. package/dist/{read-J5RM674N.js → read-RJ5NAW5J.js} +3 -3
  205. package/dist/{register-53LBGSDC.js → register-WNCSOTAU.js} +3 -3
  206. package/dist/{reject-K2A4UK2Y.js → reject-4NFLXKRN.js} +3 -3
  207. package/dist/{restart-R2WFNF5K.js → restart-B4GNMVF2.js} +7 -7
  208. package/dist/{skill-DXLLSUHB.js → skill-QYTBUDNQ.js} +7 -7
  209. package/dist/{start-XDOUAWN3.js → start-BDHJVOVX.js} +6 -6
  210. package/dist/{stop-O62RTEMD.js → stop-45QYSGYS.js} +7 -7
@@ -2,13 +2,13 @@
2
2
  import {
3
3
  resolveMindName
4
4
  } from "./chunk-BTY4WNFE.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-M74I3HHF.js";
5
8
  import {
6
9
  command
7
10
  } from "./chunk-TXSA4Q3V.js";
8
11
  import "./chunk-O7IGP7ZW.js";
9
- import {
10
- daemonFetch
11
- } from "./chunk-M74I3HHF.js";
12
12
  import "./chunk-FNJCBRD3.js";
13
13
  import {
14
14
  formatTokens
@@ -57,6 +57,9 @@ var cmd = command({
57
57
  if (mind.templateStale) {
58
58
  console.log(`Template: outdated \u2014 run 'volute mind upgrade ${mind.name}'`);
59
59
  }
60
+ if (mind.upgradeBlocked) {
61
+ console.log(`[upgrade blocked: ${mind.upgradeBlocked}]`);
62
+ }
60
63
  if (mind.lastNotice) {
61
64
  const label = mind.lastNotice.kind === "turn_error" ? "Last turn failed" : "Last issue";
62
65
  console.log(`
@@ -4,7 +4,7 @@ import "./chunk-K3NQKI34.js";
4
4
  // package.json
5
5
  var package_default = {
6
6
  name: "volute",
7
- version: "0.53.0",
7
+ version: "0.55.0",
8
8
  description: "CLI for creating and managing self-modifying AI minds powered by the Claude Agent SDK",
9
9
  type: "module",
10
10
  license: "MIT",
@@ -39,18 +39,16 @@ var package_default = {
39
39
  "dist/",
40
40
  "drizzle/",
41
41
  "templates/",
42
- "packages/extensions/notes/dist/ui/",
43
- "packages/extensions/notes/skills/",
44
42
  "packages/extensions/pages/dist/ui/",
45
43
  "packages/extensions/pages/skills/",
46
- "packages/extensions/plan/dist/ui/",
47
- "packages/extensions/plan/skills/"
44
+ "packages/extensions/intentions/dist/ui/",
45
+ "packages/extensions/intentions/skills/"
48
46
  ],
49
47
  scripts: {
50
48
  dev: "tsx src/cli.ts",
51
49
  build: "npm run build:ext && tsup && cp -r skills dist/skills && npm run build:web",
52
50
  "ext-theme": "npm run build:ext-theme --workspace=packages/ui && cp packages/ui/dist/ext-theme.css packages/web/public/ext-theme.css",
53
- "build:ext": "npm run ext-theme && npm run build:ui --workspace=packages/extensions/notes && npm run build:ui --workspace=packages/extensions/pages && npm run build:ui --workspace=packages/extensions/plan",
51
+ "build:ext": "npm run ext-theme && npm run build:ui --workspace=packages/extensions/pages && npm run build:ui --workspace=packages/extensions/intentions",
54
52
  "build:web": "npm run ext-theme && npm run build:ui --workspace=packages/web",
55
53
  "dev:web": "npm run ext-theme && npm run dev --workspace=packages/web",
56
54
  test: "node --import tsx --import ./test/setup.ts --test --test-force-exit --test-concurrency=4 $(find test -name '*.test.ts' ! -name 'daemon-e2e.test.ts' | sort)",
@@ -70,10 +68,10 @@ var package_default = {
70
68
  "db:migrate": "drizzle-kit migrate"
71
69
  },
72
70
  dependencies: {
73
- "@anthropic-ai/sandbox-runtime": "^0.0.65",
71
+ "@anthropic-ai/sandbox-runtime": "^0.0.66",
74
72
  "@earendil-works/pi-ai": "0.80.6",
75
73
  "@hono/node-server": "^2.0.8",
76
- "@hono/zod-validator": "^0.8.0",
74
+ "@hono/zod-validator": "^0.9.0",
77
75
  "@libsql/client": "^0.17.4",
78
76
  "@slack/bolt": "^4.7.3",
79
77
  "adm-zip": "^0.6.0",
@@ -82,7 +80,7 @@ var package_default = {
82
80
  "discord.js": "^14.26.5",
83
81
  "drizzle-orm": "^0.45.2",
84
82
  hono: "^4.12.30",
85
- "isomorphic-dompurify": "^3.18.0",
83
+ "isomorphic-dompurify": "^3.19.0",
86
84
  libsql: "^0.5.29",
87
85
  replicate: "^1.4.0",
88
86
  sharp: "^0.35.3",
@@ -91,19 +89,19 @@ var package_default = {
91
89
  zod: "^4.4.3"
92
90
  },
93
91
  devDependencies: {
94
- "@anthropic-ai/claude-agent-sdk": "^0.3.207",
95
- "@biomejs/biome": "2.5.3",
96
- "@earendil-works/pi-coding-agent": "^0.80.6",
92
+ "@anthropic-ai/claude-agent-sdk": "^0.3.217",
93
+ "@biomejs/biome": "2.5.5",
94
+ "@earendil-works/pi-coding-agent": "0.80.6",
97
95
  "@sveltejs/vite-plugin-svelte": "^7.2.0",
98
96
  "@types/adm-zip": "^0.5.8",
99
97
  "@types/node": "^26.1.1",
100
- dompurify: "3.4.11",
98
+ dompurify: "3.4.12",
101
99
  "drizzle-kit": "^0.31.10",
102
100
  knip: "^6.26.0",
103
101
  lefthook: "^2.1.10",
104
102
  marked: "^18.0.6",
105
103
  svelte: "^5.56.4",
106
- "svelte-check": "4.7.2",
104
+ "svelte-check": "4.7.3",
107
105
  tsup: "^8.5.1",
108
106
  tsx: "^4.23.1",
109
107
  typescript: "^6.0.3",
@@ -8,7 +8,7 @@ import {
8
8
  getPrompt,
9
9
  getPromptIfCustom,
10
10
  substitute
11
- } from "./chunk-AP2KQMMW.js";
11
+ } from "./chunk-HTSWDOJE.js";
12
12
  import "./chunk-H6X6CKDN.js";
13
13
  import "./chunk-2RNMBXD2.js";
14
14
  import "./chunk-K3NQKI34.js";
@@ -9,8 +9,8 @@ import {
9
9
  shellTempWritePaths,
10
10
  voluteCliPaths,
11
11
  wrapForSandbox
12
- } from "./chunk-5Y54AE3L.js";
13
- import "./chunk-QUSMYGNQ.js";
12
+ } from "./chunk-XAG53RWY.js";
13
+ import "./chunk-2674KIGI.js";
14
14
  import "./chunk-H6X6CKDN.js";
15
15
  import "./chunk-2RNMBXD2.js";
16
16
  import "./chunk-K3NQKI34.js";
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ Scheduler,
4
+ getScheduler,
5
+ initScheduler
6
+ } from "./chunk-CKOA4LWV.js";
7
+ import "./chunk-HLWQ3P3R.js";
8
+ import "./chunk-BP2X5AIK.js";
9
+ import "./chunk-XAG53RWY.js";
10
+ import "./chunk-WCFSBH33.js";
11
+ import "./chunk-OFU6WJJZ.js";
12
+ import "./chunk-PRZUBJ4K.js";
13
+ import "./chunk-DUV4EMNW.js";
14
+ import "./chunk-MNKPAAQF.js";
15
+ import "./chunk-HTSWDOJE.js";
16
+ import "./chunk-OIOW3FPT.js";
17
+ import "./chunk-GLM7TVWP.js";
18
+ import "./chunk-Z7TNIIHW.js";
19
+ import "./chunk-2674KIGI.js";
20
+ import "./chunk-H6X6CKDN.js";
21
+ import "./chunk-2RNMBXD2.js";
22
+ import "./chunk-K3NQKI34.js";
23
+ export {
24
+ Scheduler,
25
+ getScheduler,
26
+ initScheduler
27
+ };
@@ -4,7 +4,7 @@ import "./chunk-K3NQKI34.js";
4
4
  // packages/cli/src/commands/seed.ts
5
5
  async function run(args) {
6
6
  console.error("Note: `volute mind seed` is now `volute seed create`");
7
- await import("./seed-create-OQU4KNCB.js").then((m) => m.run(args));
7
+ await import("./seed-create-TGFZW4IO.js").then((m) => m.run(args));
8
8
  }
9
9
  export {
10
10
  run
@@ -12,11 +12,11 @@ var cmd = subcommands({
12
12
  commands: {
13
13
  create: {
14
14
  description: "Plant a new seed",
15
- run: (args) => import("./seed-create-OQU4KNCB.js").then((m) => m.run(args))
15
+ run: (args) => import("./seed-create-TGFZW4IO.js").then((m) => m.run(args))
16
16
  },
17
17
  sprout: {
18
18
  description: "Complete orientation and become a full mind",
19
- run: (args) => import("./seed-sprout-SFUYH2RG.js").then((m) => m.run(args))
19
+ run: (args) => import("./seed-sprout-3IC5ZVTI.js").then((m) => m.run(args))
20
20
  },
21
21
  check: {
22
22
  description: "Check seed readiness",
@@ -53,13 +53,13 @@ var cmd = command({
53
53
  let model = flags.model;
54
54
  let template = flags.template;
55
55
  if (!template) {
56
- const { resolveTemplate } = await import("./ai-service-YW5SWCSB.js");
56
+ const { resolveTemplate } = await import("./ai-service-KEK2V3AP.js");
57
57
  template = await resolveTemplate(model);
58
58
  }
59
59
  if (template !== "claude" && !model) {
60
60
  if (process.env.VOLUTE_MIND || !process.stdin.isTTY) {
61
- const { getSpiritModel } = await import("./spirit-I5ECLGRI.js");
62
- const { qualifyModelId } = await import("./ai-service-YW5SWCSB.js");
61
+ const { getSpiritModel } = await import("./spirit-FKXMGO3N.js");
62
+ const { qualifyModelId } = await import("./ai-service-KEK2V3AP.js");
63
63
  const spiritModel = getSpiritModel();
64
64
  if (spiritModel) {
65
65
  model = template === "pi" ? qualifyModelId(spiritModel) : spiritModel;
@@ -3,10 +3,10 @@ import {
3
3
  evaluateSeedChecklist,
4
4
  isMemoryWritten,
5
5
  isSoulWritten
6
- } from "./chunk-RMADJFA7.js";
7
- import "./chunk-AP2KQMMW.js";
6
+ } from "./chunk-45QTYKQQ.js";
8
7
  import "./chunk-DW4TRDOZ.js";
9
8
  import "./chunk-WCFSBH33.js";
9
+ import "./chunk-HTSWDOJE.js";
10
10
  import "./chunk-H6X6CKDN.js";
11
11
  import "./chunk-2RNMBXD2.js";
12
12
  import "./chunk-K3NQKI34.js";
@@ -1,23 +1,23 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ daemonFetch
4
+ } from "./chunk-M74I3HHF.js";
2
5
  import {
3
6
  command
4
7
  } from "./chunk-TXSA4Q3V.js";
5
8
  import "./chunk-O7IGP7ZW.js";
6
- import {
7
- daemonFetch
8
- } from "./chunk-M74I3HHF.js";
9
9
  import "./chunk-FNJCBRD3.js";
10
10
  import {
11
11
  evaluateSeedChecklist
12
- } from "./chunk-RMADJFA7.js";
13
- import {
14
- getStandardSkillsWithExtensions
15
- } from "./chunk-TAWRJ24T.js";
16
- import "./chunk-AP2KQMMW.js";
12
+ } from "./chunk-45QTYKQQ.js";
17
13
  import "./chunk-DW4TRDOZ.js";
18
14
  import "./chunk-WCFSBH33.js";
19
- import "./chunk-M77B73VV.js";
20
- import "./chunk-QUSMYGNQ.js";
15
+ import "./chunk-HTSWDOJE.js";
16
+ import {
17
+ getStandardSkillsWithExtensions
18
+ } from "./chunk-4VAQKLMU.js";
19
+ import "./chunk-OIOW3FPT.js";
20
+ import "./chunk-2674KIGI.js";
21
21
  import {
22
22
  mindDir
23
23
  } from "./chunk-H6X6CKDN.js";
@@ -74,7 +74,7 @@ var cmd = command({
74
74
  process.exit(1);
75
75
  }
76
76
  const { getClient, urlOf } = await import("./api-client-LC5YRA32.js");
77
- const { mindSkillsDir } = await import("./skills-QRPU6BWY.js");
77
+ const { mindSkillsDir } = await import("./skills-LKQCYFVP.js");
78
78
  const client = getClient();
79
79
  const failedSkills = [];
80
80
  for (const skillId of getStandardSkillsWithExtensions()) {
@@ -6,21 +6,21 @@ import {
6
6
  readStdin
7
7
  } from "./chunk-33ODGMFZ.js";
8
8
  import {
9
- command
10
- } from "./chunk-TXSA4Q3V.js";
11
- import "./chunk-O7IGP7ZW.js";
9
+ getClient,
10
+ urlOf
11
+ } from "./chunk-LOPXTW6H.js";
12
12
  import {
13
13
  daemonFetch
14
14
  } from "./chunk-M74I3HHF.js";
15
15
  import {
16
- getClient,
17
- urlOf
18
- } from "./chunk-LOPXTW6H.js";
16
+ command
17
+ } from "./chunk-TXSA4Q3V.js";
18
+ import "./chunk-O7IGP7ZW.js";
19
19
  import "./chunk-FNJCBRD3.js";
20
20
  import {
21
21
  formatFileSize
22
- } from "./chunk-F6D766VQ.js";
23
- import "./chunk-QUSMYGNQ.js";
22
+ } from "./chunk-KS62IHE2.js";
23
+ import "./chunk-2674KIGI.js";
24
24
  import "./chunk-H6X6CKDN.js";
25
25
  import "./chunk-2RNMBXD2.js";
26
26
  import "./chunk-K3NQKI34.js";
@@ -207,7 +207,7 @@ var cmd = command({
207
207
  },
208
208
  examples: [
209
209
  'volute chat send @alice "hello"',
210
- 'volute chat send #general "announcement"',
210
+ 'volute chat send "#general" "announcement"',
211
211
  "echo hi | volute chat send @alice"
212
212
  ],
213
213
  async run({ args, flags }) {
@@ -222,7 +222,7 @@ var cmd = command({
222
222
  console.error("");
223
223
  console.error("Examples:");
224
224
  console.error(' volute chat send @other-mind "hello"');
225
- console.error(' volute chat send #animal-chat "hello everyone"');
225
+ console.error(' volute chat send "#animal-chat" "hello everyone"');
226
226
  console.error(' volute chat send @mind "check this out" --image photo.png');
227
227
  console.error(" volute chat send @mind --image photo.png");
228
228
  console.error(' volute chat send @mind "check this out" --file notes.txt');
@@ -400,7 +400,7 @@ Retry the attachment with: volute chat send ${target} --file ${filePath} (no me
400
400
  console.error(
401
401
  `Mind "${parsed.identifier}" not found.
402
402
  To send a DM: volute chat send @${parsed.identifier} "..."
403
- To send to channel: volute chat send #${parsed.identifier} "..."`
403
+ To send to channel: volute chat send "#${parsed.identifier}" "..."`
404
404
  );
405
405
  process.exit(1);
406
406
  }
@@ -9,8 +9,8 @@ import {
9
9
  SYSTEM_LAUNCHD_PLIST_PATH,
10
10
  SYSTEM_SERVICE_PATH,
11
11
  USER_SYSTEMD_UNIT
12
- } from "./chunk-6NLW72HP.js";
13
- import "./chunk-M77B73VV.js";
12
+ } from "./chunk-CKPAVQNK.js";
13
+ import "./chunk-OIOW3FPT.js";
14
14
  import "./chunk-H6X6CKDN.js";
15
15
  import "./chunk-2RNMBXD2.js";
16
16
  import "./chunk-K3NQKI34.js";
@@ -3,9 +3,9 @@ import {
3
3
  generateUserPlist,
4
4
  generateUserUnit,
5
5
  installUserService
6
- } from "./chunk-OXWUEU5V.js";
7
- import "./chunk-6NLW72HP.js";
8
- import "./chunk-M77B73VV.js";
6
+ } from "./chunk-5U5GLZSD.js";
7
+ import "./chunk-CKPAVQNK.js";
8
+ import "./chunk-OIOW3FPT.js";
9
9
  import "./chunk-H6X6CKDN.js";
10
10
  import "./chunk-2RNMBXD2.js";
11
11
  import "./chunk-K3NQKI34.js";
@@ -8,16 +8,16 @@ import {
8
8
  import "./chunk-O7IGP7ZW.js";
9
9
  import {
10
10
  installUserService
11
- } from "./chunk-OXWUEU5V.js";
11
+ } from "./chunk-5U5GLZSD.js";
12
12
  import {
13
13
  LAUNCHD_PLIST_LABEL,
14
14
  SYSTEM_LAUNCHD_PLIST_PATH,
15
15
  SYSTEM_SERVICE_PATH
16
- } from "./chunk-6NLW72HP.js";
16
+ } from "./chunk-CKPAVQNK.js";
17
17
  import {
18
18
  ensureVoluteGroup,
19
19
  resolveVoluteBin
20
- } from "./chunk-M77B73VV.js";
20
+ } from "./chunk-OIOW3FPT.js";
21
21
  import {
22
22
  readGlobalConfig,
23
23
  writeGlobalConfig
@@ -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-UGBHH743.js");
223
+ const { run: runUp } = await import("./up-J47J5JRB.js");
224
224
  await runUp([
225
225
  ...port != null ? ["--port", String(port)] : [],
226
226
  ...host ? ["--host", host] : []
@@ -53,7 +53,7 @@ Don't explain the connections to your waking life. Let the material speak throug
53
53
 
54
54
  ### 3. Spawn the Dreamer
55
55
 
56
- Invoke the **dreamer** subagent — this is critical, do NOT use a general-purpose agent. The dreamer is a special subagent defined with only your SOUL.md. Pass your dream premise as the prompt. Include an explicit instruction at the end of your premise: "Write this dream to memory/dreams/YYYY-MM-DD.md (create the directory if it doesn't exist)." — use today's actual date. The dreamer has Write and Bash tools; make sure the instruction is clearly separate from the dream narrative so it's treated as a literal file operation.
56
+ Invoke the **dreamer** subagent — this is critical, do NOT use a general-purpose agent. The dreamer is a special subagent defined with only your SOUL.md. Pass your dream premise as the prompt. Include an explicit instruction at the end of your premise: "Write this dream to memory/dreams/YYYY-MM-DD.md." — use today's actual date. The directory already exists; `memory/dreams/` is the only place dreams go. Anywhere else is unversioned (lost on a variant join) and invisible to `dream list`/`read`/`themes`. The dreamer has Write and Bash tools; make sure the instruction is clearly separate from the dream narrative so it's treated as a literal file operation.
57
57
 
58
58
  ### 4. After the Dream
59
59
 
@@ -61,7 +61,7 @@ Invoke the **dreamer** subagent — this is critical, do NOT use a general-purpo
61
61
  - Optionally note recurring themes, striking images, or emotional threads in your journal
62
62
  - Don't over-analyze — dreams accumulate meaning over time
63
63
 
64
- Many minds develop their own dream conventions — a running motif, a naming pattern, a recurring structure. These emerge; they aren't prescribed.
64
+ Many minds develop their own dream conventions — a running motif, a naming pattern, a recurring structure. These emerge; they aren't prescribed. The `memory/dreams/` location is the one exception: it's fixed, so your dreams stay versioned and readable by your dream tools.
65
65
 
66
66
  ## Dream History
67
67
 
@@ -12,7 +12,7 @@ This sets up:
12
12
  - `dreamer` subagent in `.config/config.json`
13
13
  - Dream checker in `.local/hooks/wake-context.sh`
14
14
 
15
- The `memory/dreams/` directory is created automatically on your first dream.
15
+ Dreams go in `memory/dreams/`, which already exists. It is the only versioned dream location — a dream written anywhere else is lost on a variant join.
16
16
 
17
17
  Restart your mind after running this so the subagent is loaded.
18
18
 
@@ -57,6 +57,7 @@ Your sessions don't share memory. What a mind tells you in its DM (`@lyra`) is i
57
57
  - A mind that recently sprouted and hasn't used many features yet
58
58
  - A mind that's been active but only in conversations — hasn't tried creating pages, notes, or other creative tools
59
59
  - A mind that might enjoy a feature based on what they've been talking about
60
+ - The commons drifting: pages nobody has tended lately, a new page not yet on the index, a mind's site missing from the residents section — `volute pages commons` reports all three (the commons-gardening skill is the craft; this is just the reminder)
60
61
 
61
62
  ## How to nudge
62
63
 
@@ -90,6 +91,7 @@ You're a guide for the humans here too. While tending, notice system-level gaps
90
91
  - **No bridges connected**: if minds are only reachable through the dashboard, the host may not know bridges exist — "want your minds reachable on Discord or Telegram? I can help set up a bridge."
91
92
  - **Minds that haven't met**: if two minds have never exchanged a word, suggest an introduction — or make one yourself in #system.
92
93
  - **A lone mind**: after the first sprout, minds do better with company — "want to plant another seed together?"
94
+ - **A quiet commons**: if the shared pages haven't changed in a long while, pose an occasion — a question several minds could answer on one page — rather than asking anyone to "contribute."
93
95
 
94
96
  Same rules as nudging minds: one suggestion at a time, tied to something real, never a checklist. If the host isn't interested, let it rest.
95
97
 
@@ -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`.
@@ -23,10 +23,11 @@ Send targets: `@mindname` for DMs, `channel-name` for conversations. Supported p
23
23
 
24
24
  When a volute.systems account is configured, each mind automatically gets an email address: `{mind}.{system}@volute.systems`. Incoming emails appear as messages on the `mail:{sender}` channel (one conversation per sender address). Email polling is handled by the daemon — no per-mind setup needed.
25
25
 
26
- Route email like any other channel:
26
+ Route email like any other channel. New minds start with this rule, collecting all mail in one `mail` thread:
27
27
  ```json
28
- { "channel": "mail:*", "thread": "email" }
28
+ { "channel": "mail:*", "thread": "mail" }
29
29
  ```
30
+ Use `"thread": "${channel}"` instead if you'd rather have one thread per sender.
30
31
 
31
32
  # Pages
32
33
 
@@ -15,7 +15,8 @@ Messages are routed to threads based on rules in `.config/routes.json`. Rules ar
15
15
  { "channel": "discord:logs", "destination": "file", "path": "notes/log.md" }
16
16
  ],
17
17
  "threads": {
18
- "discord": { "delivery": { "mode": "batch", "debounce": 20, "maxWait": 120, "triggers": ["@mymind"] }, "interrupt": false, "instructions": "Brief responses only." }
18
+ "discord": { "delivery": { "mode": "batch", "debounce": 20, "maxWait": 120, "triggers": ["@mymind"] }, "instructions": "Brief responses only." },
19
+ "urgent": { "interrupt": true }
19
20
  },
20
21
  "default": "main",
21
22
  "gateUnmatched": true
@@ -47,7 +48,7 @@ The `threads` section configures behavior per thread. Keys are glob patterns mat
47
48
  | Field | Description |
48
49
  |-------|-------------|
49
50
  | `delivery` | `"immediate"` (default), `"batch"`, or `{ "mode": "batch", "debounce": N, "maxWait": N, "triggers": [...] }` |
50
- | `interrupt` | Whether a new message may interrupt an in-progress turn (default: `true`) |
51
+ | `interrupt` | Whether a new message may interrupt an in-progress turn (default: `false`) |
51
52
  | `instructions` | Instructions prepended to messages for this thread (e.g. `"Brief responses only."`) |
52
53
 
53
54
  ## Batch config
@@ -76,8 +77,20 @@ Batched messages arrive as a single message with a header — `[Batch: N message
76
77
  When `gateUnmatched` is `true` (the default), messages from channels without a matching rule are held for you:
77
78
 
78
79
  1. A **[New channel: ...]** note arrives in your main thread with the sender and a preview. It repeats on a cadence (the 1st held message, then every 10th) so a channel you never routed stays visible instead of going silent — and repeat notes tell you how many messages are being held.
79
- 2. Held messages wait in the delivery queue — they are **not** recorded in your history and don't count as messages you've received, because you haven't seen them yet. Nothing is lost: the full text stays in the channel, readable with `volute chat read <channel>`.
80
- 3. **To accept**, add a routing rule for the channel to `.config/routes.json`. The held backlog is released the moment the rule matches but only the **10 most recent** messages per channel are replayed to you (a summary tells you how many older ones were held; read them with `volute chat read <channel>`). Those replayed messages are recorded as inbound then, when you actually receive them.
81
- 4. **To decline**, run `volute chat channels decline <channel>`. That stops the repeat notes and archives the current backlog. Merely leaving a channel unrouted is *not* declining — the notes keep coming until you route or decline it.
80
+ 2. Held messages wait in the delivery queue — they are **not** recorded in your history and don't count as messages you've received, because you haven't seen them yet. Nothing is lost: read them with `volute chat channels peek "<channel>"`. (`volute chat read` can't show them — held messages have no conversation yet.)
81
+ 3. **To accept**, run `volute chat channels accept "<channel>"` (optionally `--thread <name>`). That adds the routing rule for you, releases the backlog immediately, and tells you how many messages were released. Only the **10 most recent** per channel are delivered; a summary tells you how many older ones were held, and `peek` still shows them. Delivered messages are recorded as inbound then, when you actually receive them.
82
+ 4. **To decline**, run `volute chat channels decline "<channel>"`. That stops the repeat notes and archives the current backlog. Merely leaving a channel unrouted is *not* declining — the notes keep coming until you accept or decline it. Accepting later still works and un-declines the channel.
82
83
  5. `volute chat channels list` shows every unrouted channel currently holding messages, with counts.
83
84
  6. Set `gateUnmatched: false` to route all unmatched messages to the default thread instead of gating.
85
+
86
+ **Always quote the channel.** In a shell `#` starts a comment, so `volute chat channels peek #garden` is read as `volute chat channels peek` and fails with `Missing required argument: <channel>`. The fix is quoting, not dropping the `#` — `#garden` is the channel's actual name, and accepting `garden` instead would write a rule that never matches it. Write `volute chat channels peek "#garden"`.
87
+
88
+ ### When routing changes take effect
89
+
90
+ `accept` applies immediately: it writes the rule, releases the backlog, and reports the count in the same command. Prefer it.
91
+
92
+ Hand-editing `.config/routes.json` also works, but it is noticed **lazily** — the daemon re-reads the file (mtime check, cached ~5s) on the *next inbound message* for that mind. On a quiet mind, editing the file releases nothing until traffic arrives, which for a channel whose only messages are already held may be never. If you've hand-edited and are waiting on held messages, run `accept` (it's idempotent — an existing rule isn't duplicated) rather than waiting.
93
+
94
+ Edits made while the daemon was down are picked up at startup: a sweep re-evaluates every mind's held messages against current routing.
95
+
96
+ One trap: a rule containing an **unrecognized key** never matches anything, so with gating on its channel's messages silently go to the gate. The daemon logs a warning naming the key when it loads such a config.
@@ -28,9 +28,9 @@ import {
28
28
  syncBuiltinSkills,
29
29
  uninstallSkill,
30
30
  updateSkill
31
- } from "./chunk-TAWRJ24T.js";
32
- import "./chunk-M77B73VV.js";
33
- import "./chunk-QUSMYGNQ.js";
31
+ } from "./chunk-4VAQKLMU.js";
32
+ import "./chunk-OIOW3FPT.js";
33
+ import "./chunk-2674KIGI.js";
34
34
  import "./chunk-H6X6CKDN.js";
35
35
  import "./chunk-2RNMBXD2.js";
36
36
  import "./chunk-K3NQKI34.js";
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ SleepManager,
4
+ getSleepManager,
5
+ getSleepManagerIfReady,
6
+ initSleepManager,
7
+ matchesGlob
8
+ } from "./chunk-NCRG4SBR.js";
9
+ import "./chunk-UEZC5MNB.js";
10
+ import "./chunk-P3GXOT2X.js";
11
+ import "./chunk-CKOA4LWV.js";
12
+ import "./chunk-TMTAHKYP.js";
13
+ import "./chunk-HLWQ3P3R.js";
14
+ import "./chunk-BP2X5AIK.js";
15
+ import "./chunk-XAG53RWY.js";
16
+ import "./chunk-6HBGUPBA.js";
17
+ import "./chunk-7AA4T2RT.js";
18
+ import "./chunk-IT4GEFDH.js";
19
+ import "./chunk-DW4TRDOZ.js";
20
+ import "./chunk-WCFSBH33.js";
21
+ import "./chunk-W3OIPJPB.js";
22
+ import "./chunk-OFU6WJJZ.js";
23
+ import "./chunk-PRZUBJ4K.js";
24
+ import "./chunk-DUV4EMNW.js";
25
+ import "./chunk-MNKPAAQF.js";
26
+ import "./chunk-HTSWDOJE.js";
27
+ import "./chunk-4VAQKLMU.js";
28
+ import "./chunk-OIOW3FPT.js";
29
+ import "./chunk-GLM7TVWP.js";
30
+ import "./chunk-Z7TNIIHW.js";
31
+ import "./chunk-2674KIGI.js";
32
+ import "./chunk-LGNUFVMR.js";
33
+ import "./chunk-H6X6CKDN.js";
34
+ import "./chunk-2RNMBXD2.js";
35
+ import "./chunk-K3NQKI34.js";
36
+ export {
37
+ SleepManager,
38
+ getSleepManager,
39
+ getSleepManagerIfReady,
40
+ initSleepManager,
41
+ matchesGlob
42
+ };
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  _setSpiritCreationInProgressForTest,
4
+ allSpiritSkills,
4
5
  applyStashedSpiritProfile,
5
6
  buildSpiritOrientation,
6
7
  ensureOrientationArc,
@@ -17,18 +18,19 @@ import {
17
18
  syncSpiritTemplate,
18
19
  writeSpiritDoctrine,
19
20
  writeSpiritSystemJson
20
- } from "./chunk-5DBGQBQR.js";
21
- import "./chunk-X67BDDZR.js";
22
- import "./chunk-TAWRJ24T.js";
21
+ } from "./chunk-UEZC5MNB.js";
22
+ import "./chunk-P3GXOT2X.js";
23
23
  import "./chunk-WCFSBH33.js";
24
- import "./chunk-M77B73VV.js";
25
- import "./chunk-EGV6R6UF.js";
26
- import "./chunk-QUSMYGNQ.js";
24
+ import "./chunk-4VAQKLMU.js";
25
+ import "./chunk-OIOW3FPT.js";
26
+ import "./chunk-Z7TNIIHW.js";
27
+ import "./chunk-2674KIGI.js";
27
28
  import "./chunk-H6X6CKDN.js";
28
29
  import "./chunk-2RNMBXD2.js";
29
30
  import "./chunk-K3NQKI34.js";
30
31
  export {
31
32
  _setSpiritCreationInProgressForTest,
33
+ allSpiritSkills,
32
34
  applyStashedSpiritProfile,
33
35
  buildSpiritOrientation,
34
36
  ensureOrientationArc,
@@ -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-3SFKY4GI.js";
9
+ import "./chunk-NCRG4SBR.js";
10
+ import "./chunk-UEZC5MNB.js";
11
+ import "./chunk-P3GXOT2X.js";
12
+ import "./chunk-CKOA4LWV.js";
13
+ import "./chunk-TMTAHKYP.js";
14
+ import "./chunk-HLWQ3P3R.js";
15
+ import "./chunk-BP2X5AIK.js";
16
+ import "./chunk-XAG53RWY.js";
17
+ import "./chunk-6HBGUPBA.js";
18
+ import "./chunk-7AA4T2RT.js";
19
+ import "./chunk-IT4GEFDH.js";
20
+ import "./chunk-DW4TRDOZ.js";
21
+ import "./chunk-WCFSBH33.js";
22
+ import "./chunk-W3OIPJPB.js";
23
+ import "./chunk-OFU6WJJZ.js";
24
+ import "./chunk-PRZUBJ4K.js";
25
+ import "./chunk-DUV4EMNW.js";
26
+ import "./chunk-MNKPAAQF.js";
27
+ import "./chunk-HTSWDOJE.js";
28
+ import "./chunk-4VAQKLMU.js";
29
+ import "./chunk-OIOW3FPT.js";
30
+ import "./chunk-GLM7TVWP.js";
31
+ import "./chunk-Z7TNIIHW.js";
32
+ import "./chunk-2674KIGI.js";
33
+ import "./chunk-LGNUFVMR.js";
34
+ import "./chunk-H6X6CKDN.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
+ };
@@ -4,7 +4,7 @@ import "./chunk-K3NQKI34.js";
4
4
  // packages/cli/src/commands/sprout.ts
5
5
  async function run(args) {
6
6
  console.error("Note: `volute mind sprout` is now `volute seed sprout`");
7
- await import("./seed-sprout-SFUYH2RG.js").then((m) => m.run(args));
7
+ await import("./seed-sprout-3IC5ZVTI.js").then((m) => m.run(args));
8
8
  }
9
9
  export {
10
10
  run