volute 0.52.0 → 0.54.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 (153) hide show
  1. package/dist/{accept-5NK5XJB5.js → accept-RSDIVJL6.js} +3 -0
  2. package/dist/auto-upgrade-HEVZKPTF.js +46 -0
  3. package/dist/{backup-YVGV2ZNM.js → backup-QRNX6RK7.js} +10 -10
  4. package/dist/channels-CKCY64TD.js +203 -0
  5. package/dist/{chat-VAZ25KVT.js → chat-ZUGNL5GS.js} +5 -5
  6. package/dist/chunk-3LHUXY3E.js +102 -0
  7. package/dist/{chunk-SW2U6HRB.js → chunk-444RR3YF.js} +21 -4
  8. package/dist/{chunk-YVR6EHWL.js → chunk-56IT2ZXF.js} +160 -18
  9. package/dist/chunk-5RBEEAKW.js +58 -0
  10. package/dist/{chunk-OXWUEU5V.js → chunk-5U5GLZSD.js} +2 -2
  11. package/dist/{chunk-G7A5LEVI.js → chunk-7XKPG66D.js} +5 -5
  12. package/dist/{chunk-R772ET2M.js → chunk-AAPNU7GA.js} +4 -0
  13. package/dist/{chunk-XRWUQPCA.js → chunk-ATZF2RNJ.js} +25 -3
  14. package/dist/{chunk-6NLW72HP.js → chunk-CKPAVQNK.js} +1 -1
  15. package/dist/{chunk-JHKBALS2.js → chunk-CLCHOXLR.js} +1 -1
  16. package/dist/{chunk-DMK5ASKV.js → chunk-F6D766VQ.js} +6 -2
  17. package/dist/{chunk-AXFLY5GU.js → chunk-HKGYZVWN.js} +16 -1
  18. package/dist/{chunk-ZEZQNP2G.js → chunk-LGXVGIWN.js} +103 -25
  19. package/dist/{chunk-CW7BQKF6.js → chunk-LKUGUQUW.js} +3 -3
  20. package/dist/{chunk-FXWBFDQR.js → chunk-OAYY3WF3.js} +59 -12
  21. package/dist/{chunk-ITK6HV47.js → chunk-OGPVJ53N.js} +14 -6
  22. package/dist/{chunk-M77B73VV.js → chunk-OIOW3FPT.js} +7 -2
  23. package/dist/chunk-OT5SXF7L.js +904 -0
  24. package/dist/{chunk-EDR47UE2.js → chunk-OYF25B62.js} +1 -1
  25. package/dist/{chunk-RPPTGPYF.js → chunk-PPSN2MLC.js} +2 -2
  26. package/dist/{chunk-K2F237KS.js → chunk-RGHF3OK5.js} +154 -18
  27. package/dist/{chunk-RU74YG46.js → chunk-VDUCLVZI.js} +338 -30
  28. package/dist/{chunk-724DVYHU.js → chunk-WHL6PKYP.js} +10 -10
  29. package/dist/{chunk-EEOMA4DX.js → chunk-WZZCA23D.js} +2 -1
  30. package/dist/{chunk-UDZLPR34.js → chunk-YSRYCS3N.js} +13 -8
  31. package/dist/{chunk-5N32EN4O.js → chunk-Z4Q6TQWL.js} +1 -1
  32. package/dist/{chunk-VPOMJMV6.js → chunk-ZNHL5KQJ.js} +1 -1
  33. package/dist/cli.js +17 -17
  34. package/dist/{clock-ZT5YT6HA.js → clock-X7V3C7NL.js} +2 -2
  35. package/dist/{cloud-sync-H7EWZASD.js → cloud-sync-52YNJRMR.js} +12 -11
  36. package/dist/{daemon-restart-4FWUA5JF.js → daemon-restart-QWHN5VMU.js} +4 -4
  37. package/dist/daemon.js +538 -782
  38. package/dist/{db-IPXRJUI7.js → db-I4EH5SLF.js} +3 -1
  39. package/dist/{delivery-manager-VYXVKUMP.js → delivery-manager-7R2YIQ2W.js} +13 -7
  40. package/dist/delivery-notices-RZQ6GONP.js +18 -0
  41. package/dist/{delivery-router-RHANNTAC.js → delivery-router-QS4NLJR6.js} +3 -1
  42. package/dist/{down-QSNEMTTX.js → down-UN2EDX2Y.js} +3 -3
  43. package/dist/{echo-text-PEEV7FQU.js → echo-text-73CYQRL7.js} +14 -13
  44. package/dist/{exec-ABD3DYA2.js → exec-Z34TTUO3.js} +1 -1
  45. package/dist/{extensions-N6L5NYTK.js → extensions-QT65JGV6.js} +22 -11
  46. package/dist/{files-BRY5RRIM.js → files-PCKBQHAY.js} +2 -1
  47. package/dist/{isolation-GVV2IBAU.js → isolation-UQPDO34R.js} +1 -1
  48. package/dist/{message-delivery-7URC52ME.js → message-delivery-TRKT4T2P.js} +16 -13
  49. package/dist/migrate-name-placeholder-C7NCNLWF.js +37 -0
  50. package/dist/{mind-NEXGT3KE.js → mind-CT6ANXK4.js} +11 -11
  51. package/dist/{mind-contacts-QYU4TPEA.js → mind-contacts-PEXCDRXA.js} +6 -6
  52. package/dist/{mind-history-OGNR4L7W.js → mind-history-RZMMCHMX.js} +83 -11
  53. package/dist/{mind-list-SYRA7CH5.js → mind-list-7KBLPLES.js} +1 -1
  54. package/dist/{mind-service-E26ZQXDS.js → mind-service-7EFIJ3ZA.js} +12 -11
  55. package/dist/{mind-sleep-LZAFBDZD.js → mind-sleep-24HV4RCA.js} +2 -2
  56. package/dist/{mind-status-Z2LQFA6F.js → mind-status-4YW4PHMO.js} +15 -0
  57. package/dist/{package-2W2XKSIP.js → package-F6S5NHY2.js} +4 -4
  58. package/dist/{prompts-NBO3HRK3.js → prompts-JECJIFPQ.js} +1 -1
  59. package/dist/{reject-TWB4QJHG.js → reject-4NFLXKRN.js} +6 -2
  60. package/dist/{scheduler-JTTWZDYU.js → scheduler-73Q4MQ7Y.js} +8 -6
  61. package/dist/{seed-64XEHRUP.js → seed-DRKAP3XV.js} +1 -1
  62. package/dist/{seed-cmd-UEL2QB3Q.js → seed-cmd-6IMTO3LG.js} +2 -2
  63. package/dist/{seed-create-4JRQDPGA.js → seed-create-VNLDYRFK.js} +1 -1
  64. package/dist/{seed-readiness-DYOVCYHN.js → seed-readiness-H5TTPAQH.js} +2 -2
  65. package/dist/{seed-sprout-NIDIOJXT.js → seed-sprout-PPGYGK4G.js} +5 -5
  66. package/dist/{send-2YKOZJJ5.js → send-UXUQKO4N.js} +37 -22
  67. package/dist/{service-XQPMZAGI.js → service-T4P5W6RS.js} +2 -2
  68. package/dist/{service-install-2EWD7KXD.js → service-install-R4SNYUVO.js} +3 -3
  69. package/dist/{setup-4IX6PCD3.js → setup-YUAQMDVZ.js} +4 -4
  70. package/dist/skills/dreaming/SKILL.md +2 -2
  71. package/dist/skills/dreaming/references/INSTALL.md +1 -1
  72. package/dist/skills/memory/SKILL.md +47 -43
  73. package/dist/skills/tending/SKILL.md +2 -0
  74. package/dist/skills/volute-mind/references/integrations.md +3 -2
  75. package/dist/skills/volute-mind/references/routing.md +18 -5
  76. package/dist/{skills-MPUALV3S.js → skills-GMQ5UIIW.js} +2 -2
  77. package/dist/{sleep-manager-OFP2GFXF.js → sleep-manager-KHI65FEX.js} +12 -11
  78. package/dist/{spirit-4ECYIVGE.js → spirit-Q5VGFWUI.js} +19 -3
  79. package/dist/{spirit-availability-Y54Y3675.js → spirit-availability-G5FMWKRH.js} +13 -12
  80. package/dist/{sprout-GJMZFRGZ.js → sprout-PMTRL7QN.js} +1 -1
  81. package/dist/{src-LCSOQY6Z.js → src-3FIW7DLH.js} +241 -87
  82. package/dist/src-H3UCOP6B.js +516 -0
  83. package/dist/{src-HGNE2XG4.js → src-LTTQVN2Z.js} +1 -1
  84. package/dist/{status-MWLE3RVC.js → status-LCKTTIWS.js} +2 -2
  85. package/dist/{system-events-V43HDA3T.js → system-events-Q7IVZ5T4.js} +5 -1
  86. package/dist/{systems-VDRUZXNF.js → systems-HL7SGSW7.js} +2 -2
  87. package/dist/{turn-tracker-C5PVIC3B.js → turn-tracker-HZDPMSCC.js} +4 -2
  88. package/dist/{up-H6LJZDRK.js → up-XZDSJVMU.js} +3 -3
  89. package/dist/{update-CIWI2JYA.js → update-ILCPVNDD.js} +2 -2
  90. package/dist/{upgrade-LIE46UBB.js → upgrade-XY2J7NWZ.js} +9 -1
  91. package/dist/{variant-cleanup-STC6B5HR.js → variant-cleanup-QHGGY7ND.js} +8 -6
  92. package/dist/{version-notify-LBVHH5YV.js → version-notify-VNVFX6UP.js} +22 -7
  93. package/dist/web-assets/assets/{index-B_eYTa3R.js → index-CwtxGwe_.js} +16 -16
  94. package/dist/web-assets/assets/index-DhM1yYRN.css +1 -0
  95. package/dist/web-assets/index.html +2 -2
  96. package/package.json +4 -4
  97. package/packages/extensions/intentions/dist/ui/assets/index-3FneLCKR.css +1 -0
  98. package/packages/extensions/intentions/dist/ui/assets/index-CQz4aceM.js +67 -0
  99. package/packages/extensions/{plan → intentions}/dist/ui/index.html +3 -3
  100. package/packages/extensions/intentions/skills/intention-review/SKILL.md +38 -0
  101. package/packages/extensions/intentions/skills/intentions/SKILL.md +49 -0
  102. package/packages/extensions/intentions/skills/intentions/scripts/intentions-hook.sh +45 -0
  103. package/packages/extensions/pages/skills/commons-gardening/SKILL.md +50 -0
  104. package/packages/extensions/pages/skills/pages/SKILL.md +18 -13
  105. package/templates/_base/.init/.config/prompts.json +3 -3
  106. package/templates/{pi → _base}/.init/.config/routes.json +1 -0
  107. package/templates/_base/.init/memory/dreams/.gitkeep +0 -0
  108. package/templates/_base/home/.config/routes.json +1 -1
  109. package/templates/_base/home/VOLUTE.md +1 -1
  110. package/templates/_base/src/lib/codex-session-seed.ts +463 -0
  111. package/templates/_base/src/lib/context-breakdown.ts +11 -3
  112. package/templates/_base/src/lib/daemon-client.ts +35 -0
  113. package/templates/_base/src/lib/pi-session-seed.ts +434 -0
  114. package/templates/_base/src/lib/routing.ts +2 -2
  115. package/templates/_base/src/lib/seed-note.ts +78 -0
  116. package/templates/_base/src/lib/session-seed.ts +375 -0
  117. package/templates/_base/src/lib/startup.ts +112 -6
  118. package/templates/claude/.init/CLAUDE.md +7 -3
  119. package/templates/claude/src/agent.ts +295 -101
  120. package/templates/claude/src/lib/hooks/pre-compact.ts +30 -5
  121. package/templates/claude/src/lib/message-channel.ts +43 -15
  122. package/templates/claude/src/lib/recover.ts +69 -0
  123. package/templates/claude/src/lib/stream-consumer.ts +33 -2
  124. package/templates/claude/src/server.ts +2 -1
  125. package/templates/claude/volute-template.json +1 -1
  126. package/templates/codex/.init/AGENTS.md +7 -3
  127. package/templates/codex/src/agent.ts +256 -39
  128. package/templates/codex/src/server.ts +2 -1
  129. package/templates/codex/volute-template.json +1 -1
  130. package/templates/pi/.init/MINDS.md +7 -3
  131. package/templates/pi/src/agent.ts +269 -43
  132. package/templates/pi/src/lib/event-handler.ts +11 -0
  133. package/templates/pi/src/lib/mechanics-doc.ts +30 -0
  134. package/templates/pi/src/server.ts +5 -1
  135. package/templates/pi/volute-template.json +1 -1
  136. package/dist/channels-FSAHOQWI.js +0 -90
  137. package/dist/skills/plan-coordinator/SKILL.md +0 -60
  138. package/dist/src-UDMJZ6MH.js +0 -426
  139. package/dist/web-assets/assets/index-DhZrzddW.css +0 -1
  140. package/packages/extensions/plan/dist/ui/assets/index-B8s8wxyt.js +0 -67
  141. package/packages/extensions/plan/dist/ui/assets/index-jIkrt-vI.css +0 -1
  142. package/packages/extensions/plan/skills/plan/SKILL.md +0 -43
  143. package/packages/extensions/plan/skills/plan/scripts/plan-hook.sh +0 -37
  144. package/templates/claude/.init/.config/routes.json +0 -11
  145. package/templates/codex/.init/.config/routes.json +0 -11
  146. package/dist/{env-IBW2QI6K.js → env-7AZFBPWX.js} +5 -5
  147. package/dist/{login-RJJTCVR3.js → login-4NUS72Z5.js} +3 -3
  148. package/dist/{login-SB5OENMV.js → login-57MMYILL.js} +4 -4
  149. package/dist/{register-OX4HRSGC.js → register-WNCSOTAU.js} +3 -3
  150. package/dist/{restart-AGEGNSYQ.js → restart-B4GNMVF2.js} +4 -4
  151. package/dist/{skill-B5OJEQUA.js → skill-QYTBUDNQ.js} +4 -4
  152. package/dist/{start-MUMNFR52.js → start-BDHJVOVX.js} +3 -3
  153. package/dist/{stop-EKERNYTX.js → stop-45QYSGYS.js} +4 -4
@@ -1,16 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getAllSites,
4
+ getMindsWithSites,
4
5
  getPublishedPages,
5
6
  getRecentPages,
6
7
  getSystemPages,
7
8
  initDb,
8
9
  syncPublishedPages,
9
10
  syncSystemPages
10
- } from "./chunk-R772ET2M.js";
11
+ } from "./chunk-AAPNU7GA.js";
11
12
  import "./chunk-K3NQKI34.js";
12
13
  export {
13
14
  getAllSites,
15
+ getMindsWithSites,
14
16
  getPublishedPages,
15
17
  getRecentPages,
16
18
  getSystemPages,
@@ -2,16 +2,19 @@
2
2
  import {
3
3
  DeliveryManager,
4
4
  MAX_DELIVERY_ATTEMPTS,
5
+ UnknownChannelError,
6
+ formatSuggestions,
5
7
  getDeliveryManager,
6
8
  initDeliveryManager,
7
9
  tryGetDeliveryManager
8
- } from "./chunk-RU74YG46.js";
9
- import "./chunk-724DVYHU.js";
10
- import "./chunk-UDZLPR34.js";
11
- import "./chunk-YVR6EHWL.js";
12
- import "./chunk-AXFLY5GU.js";
10
+ } from "./chunk-VDUCLVZI.js";
11
+ import "./chunk-WHL6PKYP.js";
12
+ import "./chunk-YSRYCS3N.js";
13
+ import "./chunk-56IT2ZXF.js";
14
+ import "./chunk-7LT3YZUR.js";
15
+ import "./chunk-HKGYZVWN.js";
13
16
  import "./chunk-LNNI3MS4.js";
14
- import "./chunk-FXWBFDQR.js";
17
+ import "./chunk-OAYY3WF3.js";
15
18
  import "./chunk-5Y54AE3L.js";
16
19
  import "./chunk-TPX6E6PL.js";
17
20
  import "./chunk-UFTDRTCP.js";
@@ -19,16 +22,19 @@ import "./chunk-U54PJPTB.js";
19
22
  import "./chunk-ICXY54ZC.js";
20
23
  import "./chunk-DW4TRDOZ.js";
21
24
  import "./chunk-WCFSBH33.js";
22
- import "./chunk-M77B73VV.js";
25
+ import "./chunk-OIOW3FPT.js";
23
26
  import "./chunk-GLM7TVWP.js";
24
27
  import "./chunk-EGV6R6UF.js";
25
28
  import "./chunk-QUSMYGNQ.js";
29
+ import "./chunk-LGNUFVMR.js";
26
30
  import "./chunk-H6X6CKDN.js";
27
31
  import "./chunk-2RNMBXD2.js";
28
32
  import "./chunk-K3NQKI34.js";
29
33
  export {
30
34
  DeliveryManager,
31
35
  MAX_DELIVERY_ATTEMPTS,
36
+ UnknownChannelError,
37
+ formatSuggestions,
32
38
  getDeliveryManager,
33
39
  initDeliveryManager,
34
40
  tryGetDeliveryManager
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ COALESCE_WINDOW_MINUTES,
4
+ recordDeliveryFailure,
5
+ recordSenderDeliveryFailure
6
+ } from "./chunk-3LHUXY3E.js";
7
+ import "./chunk-HKGYZVWN.js";
8
+ import "./chunk-LNNI3MS4.js";
9
+ import "./chunk-OAYY3WF3.js";
10
+ import "./chunk-QUSMYGNQ.js";
11
+ import "./chunk-H6X6CKDN.js";
12
+ import "./chunk-2RNMBXD2.js";
13
+ import "./chunk-K3NQKI34.js";
14
+ export {
15
+ COALESCE_WINDOW_MINUTES,
16
+ recordDeliveryFailure,
17
+ recordSenderDeliveryFailure
18
+ };
@@ -6,10 +6,11 @@ import {
6
6
  registerMindDir,
7
7
  resolveDeliveryMode,
8
8
  resolveRoute,
9
+ routesConfigPath,
9
10
  setRoutesChangeListener,
10
11
  shouldGate,
11
12
  warnUnknownRuleKeys
12
- } from "./chunk-UDZLPR34.js";
13
+ } from "./chunk-YSRYCS3N.js";
13
14
  import "./chunk-QUSMYGNQ.js";
14
15
  import "./chunk-H6X6CKDN.js";
15
16
  import "./chunk-2RNMBXD2.js";
@@ -21,6 +22,7 @@ export {
21
22
  registerMindDir,
22
23
  resolveDeliveryMode,
23
24
  resolveRoute,
25
+ routesConfigPath,
24
26
  setRoutesChangeListener,
25
27
  shouldGate,
26
28
  warnUnknownRuleKeys
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  run,
4
4
  stopDaemon
5
- } from "./chunk-5N32EN4O.js";
5
+ } from "./chunk-Z4Q6TQWL.js";
6
6
  import "./chunk-TXSA4Q3V.js";
7
7
  import "./chunk-O7IGP7ZW.js";
8
- import "./chunk-6NLW72HP.js";
9
- import "./chunk-M77B73VV.js";
8
+ import "./chunk-CKPAVQNK.js";
9
+ import "./chunk-OIOW3FPT.js";
10
10
  import "./chunk-H6X6CKDN.js";
11
11
  import "./chunk-2RNMBXD2.js";
12
12
  import "./chunk-K3NQKI34.js";
@@ -2,21 +2,22 @@
2
2
  import {
3
3
  clearEchoTextCache,
4
4
  echoTextToChannel
5
- } from "./chunk-XRWUQPCA.js";
5
+ } from "./chunk-ATZF2RNJ.js";
6
6
  import "./chunk-L7BKTZ5U.js";
7
- import "./chunk-ZEZQNP2G.js";
8
- import "./chunk-K2F237KS.js";
7
+ import "./chunk-LGXVGIWN.js";
8
+ import "./chunk-RGHF3OK5.js";
9
9
  import "./chunk-X67BDDZR.js";
10
- import "./chunk-SW2U6HRB.js";
11
- import "./chunk-RU74YG46.js";
12
- import "./chunk-724DVYHU.js";
13
- import "./chunk-UDZLPR34.js";
14
- import "./chunk-YVR6EHWL.js";
15
- import "./chunk-RPPTGPYF.js";
10
+ import "./chunk-444RR3YF.js";
11
+ import "./chunk-3LHUXY3E.js";
12
+ import "./chunk-VDUCLVZI.js";
13
+ import "./chunk-WHL6PKYP.js";
14
+ import "./chunk-YSRYCS3N.js";
15
+ import "./chunk-56IT2ZXF.js";
16
+ import "./chunk-PPSN2MLC.js";
16
17
  import "./chunk-7LT3YZUR.js";
17
- import "./chunk-AXFLY5GU.js";
18
+ import "./chunk-HKGYZVWN.js";
18
19
  import "./chunk-LNNI3MS4.js";
19
- import "./chunk-FXWBFDQR.js";
20
+ import "./chunk-OAYY3WF3.js";
20
21
  import "./chunk-5Y54AE3L.js";
21
22
  import "./chunk-TPX6E6PL.js";
22
23
  import "./chunk-UFTDRTCP.js";
@@ -24,8 +25,8 @@ import "./chunk-U54PJPTB.js";
24
25
  import "./chunk-ICXY54ZC.js";
25
26
  import "./chunk-DW4TRDOZ.js";
26
27
  import "./chunk-WCFSBH33.js";
27
- import "./chunk-6NLW72HP.js";
28
- import "./chunk-M77B73VV.js";
28
+ import "./chunk-CKPAVQNK.js";
29
+ import "./chunk-OIOW3FPT.js";
29
30
  import "./chunk-GLM7TVWP.js";
30
31
  import "./chunk-EGV6R6UF.js";
31
32
  import "./chunk-QUSMYGNQ.js";
@@ -4,7 +4,7 @@ import {
4
4
  execInherit,
5
5
  gitExec,
6
6
  resolveVoluteBin
7
- } from "./chunk-M77B73VV.js";
7
+ } from "./chunk-OIOW3FPT.js";
8
8
  import "./chunk-H6X6CKDN.js";
9
9
  import "./chunk-2RNMBXD2.js";
10
10
  import "./chunk-K3NQKI34.js";
@@ -1,8 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
+ _clearLoadedExtensionsForTest,
4
+ _registerExtensionForTest,
5
+ buildExtensionContext,
3
6
  enrichActivityMetadata,
4
7
  getAllDiscoveredExtensions,
5
8
  getAllDiscoveredExtensionsDetailed,
9
+ getExtensionSpiritSkills,
6
10
  getExtensionStandardSkills,
7
11
  getLoadedExtensions,
8
12
  installNpmExtension,
@@ -11,22 +15,23 @@ import {
11
15
  notifyExtensionsDaemonStop,
12
16
  notifyExtensionsMindStart,
13
17
  notifyExtensionsMindStop,
18
+ notifyExtensionsSpiritReady,
14
19
  parseCommandArgs,
15
20
  setExtensionEnabled,
16
21
  uninstallNpmExtension
17
- } from "./chunk-ZEZQNP2G.js";
18
- import "./chunk-K2F237KS.js";
22
+ } from "./chunk-LGXVGIWN.js";
23
+ import "./chunk-RGHF3OK5.js";
19
24
  import "./chunk-X67BDDZR.js";
20
- import "./chunk-SW2U6HRB.js";
21
- import "./chunk-RU74YG46.js";
22
- import "./chunk-724DVYHU.js";
23
- import "./chunk-UDZLPR34.js";
24
- import "./chunk-YVR6EHWL.js";
25
- import "./chunk-RPPTGPYF.js";
25
+ import "./chunk-444RR3YF.js";
26
+ import "./chunk-VDUCLVZI.js";
27
+ import "./chunk-WHL6PKYP.js";
28
+ import "./chunk-YSRYCS3N.js";
29
+ import "./chunk-56IT2ZXF.js";
30
+ import "./chunk-PPSN2MLC.js";
26
31
  import "./chunk-7LT3YZUR.js";
27
- import "./chunk-AXFLY5GU.js";
32
+ import "./chunk-HKGYZVWN.js";
28
33
  import "./chunk-LNNI3MS4.js";
29
- import "./chunk-FXWBFDQR.js";
34
+ import "./chunk-OAYY3WF3.js";
30
35
  import "./chunk-5Y54AE3L.js";
31
36
  import "./chunk-TPX6E6PL.js";
32
37
  import "./chunk-UFTDRTCP.js";
@@ -34,17 +39,22 @@ import "./chunk-U54PJPTB.js";
34
39
  import "./chunk-ICXY54ZC.js";
35
40
  import "./chunk-DW4TRDOZ.js";
36
41
  import "./chunk-WCFSBH33.js";
37
- import "./chunk-M77B73VV.js";
42
+ import "./chunk-OIOW3FPT.js";
38
43
  import "./chunk-GLM7TVWP.js";
39
44
  import "./chunk-EGV6R6UF.js";
40
45
  import "./chunk-QUSMYGNQ.js";
46
+ import "./chunk-LGNUFVMR.js";
41
47
  import "./chunk-H6X6CKDN.js";
42
48
  import "./chunk-2RNMBXD2.js";
43
49
  import "./chunk-K3NQKI34.js";
44
50
  export {
51
+ _clearLoadedExtensionsForTest,
52
+ _registerExtensionForTest,
53
+ buildExtensionContext,
45
54
  enrichActivityMetadata,
46
55
  getAllDiscoveredExtensions,
47
56
  getAllDiscoveredExtensionsDetailed,
57
+ getExtensionSpiritSkills,
48
58
  getExtensionStandardSkills,
49
59
  getLoadedExtensions,
50
60
  installNpmExtension,
@@ -53,6 +63,7 @@ export {
53
63
  notifyExtensionsDaemonStop,
54
64
  notifyExtensionsMindStart,
55
65
  notifyExtensionsMindStop,
66
+ notifyExtensionsSpiritReady,
56
67
  parseCommandArgs,
57
68
  setExtensionEnabled,
58
69
  uninstallNpmExtension
@@ -12,7 +12,8 @@ import "./chunk-O7IGP7ZW.js";
12
12
  import "./chunk-FNJCBRD3.js";
13
13
  import {
14
14
  formatFileSize
15
- } from "./chunk-DMK5ASKV.js";
15
+ } from "./chunk-F6D766VQ.js";
16
+ import "./chunk-QUSMYGNQ.js";
16
17
  import "./chunk-H6X6CKDN.js";
17
18
  import "./chunk-2RNMBXD2.js";
18
19
  import "./chunk-K3NQKI34.js";
@@ -9,7 +9,7 @@ import {
9
9
  isIsolationEnabled,
10
10
  mindUserName,
11
11
  wrapForIsolation
12
- } from "./chunk-M77B73VV.js";
12
+ } from "./chunk-OIOW3FPT.js";
13
13
  import "./chunk-H6X6CKDN.js";
14
14
  import "./chunk-2RNMBXD2.js";
15
15
  import "./chunk-K3NQKI34.js";
@@ -5,20 +5,21 @@ import {
5
5
  linkToolResultToTurn,
6
6
  recordInbound,
7
7
  recordOutbound,
8
- resolveSleepAction
9
- } from "./chunk-ZEZQNP2G.js";
10
- import "./chunk-K2F237KS.js";
8
+ resolveSleepAction,
9
+ willGateMessage
10
+ } from "./chunk-LGXVGIWN.js";
11
+ import "./chunk-RGHF3OK5.js";
11
12
  import "./chunk-X67BDDZR.js";
12
- import "./chunk-SW2U6HRB.js";
13
- import "./chunk-RU74YG46.js";
14
- import "./chunk-724DVYHU.js";
15
- import "./chunk-UDZLPR34.js";
16
- import "./chunk-YVR6EHWL.js";
17
- import "./chunk-RPPTGPYF.js";
13
+ import "./chunk-444RR3YF.js";
14
+ import "./chunk-VDUCLVZI.js";
15
+ import "./chunk-WHL6PKYP.js";
16
+ import "./chunk-YSRYCS3N.js";
17
+ import "./chunk-56IT2ZXF.js";
18
+ import "./chunk-PPSN2MLC.js";
18
19
  import "./chunk-7LT3YZUR.js";
19
- import "./chunk-AXFLY5GU.js";
20
+ import "./chunk-HKGYZVWN.js";
20
21
  import "./chunk-LNNI3MS4.js";
21
- import "./chunk-FXWBFDQR.js";
22
+ import "./chunk-OAYY3WF3.js";
22
23
  import "./chunk-5Y54AE3L.js";
23
24
  import "./chunk-TPX6E6PL.js";
24
25
  import "./chunk-UFTDRTCP.js";
@@ -26,10 +27,11 @@ import "./chunk-U54PJPTB.js";
26
27
  import "./chunk-ICXY54ZC.js";
27
28
  import "./chunk-DW4TRDOZ.js";
28
29
  import "./chunk-WCFSBH33.js";
29
- import "./chunk-M77B73VV.js";
30
+ import "./chunk-OIOW3FPT.js";
30
31
  import "./chunk-GLM7TVWP.js";
31
32
  import "./chunk-EGV6R6UF.js";
32
33
  import "./chunk-QUSMYGNQ.js";
34
+ import "./chunk-LGNUFVMR.js";
33
35
  import "./chunk-H6X6CKDN.js";
34
36
  import "./chunk-2RNMBXD2.js";
35
37
  import "./chunk-K3NQKI34.js";
@@ -39,5 +41,6 @@ export {
39
41
  linkToolResultToTurn,
40
42
  recordInbound,
41
43
  recordOutbound,
42
- resolveSleepAction
44
+ resolveSleepAction,
45
+ willGateMessage
43
46
  };
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ logger_default
4
+ } from "./chunk-QUSMYGNQ.js";
5
+ import {
6
+ mindDir,
7
+ readAllMinds
8
+ } from "./chunk-H6X6CKDN.js";
9
+ import "./chunk-2RNMBXD2.js";
10
+ import "./chunk-K3NQKI34.js";
11
+
12
+ // packages/daemon/src/lib/mind/migrate-name-placeholder.ts
13
+ import { readFileSync, writeFileSync } from "fs";
14
+ import { resolve } from "path";
15
+ var mlog = logger_default.child("migrate");
16
+ async function migrateNamePlaceholders() {
17
+ const entries = await readAllMinds();
18
+ for (const entry of entries) {
19
+ const dir = entry.dir ?? mindDir(entry.name);
20
+ const path = resolve(dir, "home/.config/routes.json");
21
+ try {
22
+ const raw = readFileSync(path, "utf-8");
23
+ if (!raw.includes("{{name}}")) continue;
24
+ writeFileSync(path, raw.replaceAll("{{name}}", entry.name));
25
+ mlog.info(`substituted leftover {{name}} placeholder in routes.json for ${entry.name}`);
26
+ } catch (err) {
27
+ if (err.code === "ENOENT") continue;
28
+ mlog.warn(
29
+ `failed to substitute {{name}} in routes.json for ${entry.name} \u2014 channel batch triggers will not match a mention of its name`,
30
+ logger_default.errorData(err)
31
+ );
32
+ }
33
+ }
34
+ }
35
+ export {
36
+ migrateNamePlaceholders
37
+ };
@@ -22,15 +22,15 @@ var cmd = subcommands({
22
22
  },
23
23
  start: {
24
24
  description: "Start a mind",
25
- run: (args) => import("./start-MUMNFR52.js").then((m) => m.run(args))
25
+ run: (args) => import("./start-BDHJVOVX.js").then((m) => m.run(args))
26
26
  },
27
27
  stop: {
28
28
  description: "Stop a mind",
29
- run: (args) => import("./stop-EKERNYTX.js").then((m) => m.run(args))
29
+ run: (args) => import("./stop-45QYSGYS.js").then((m) => m.run(args))
30
30
  },
31
31
  restart: {
32
32
  description: "Restart a mind",
33
- run: (args) => import("./restart-AGEGNSYQ.js").then((m) => m.run(args))
33
+ run: (args) => import("./restart-B4GNMVF2.js").then((m) => m.run(args))
34
34
  },
35
35
  delete: {
36
36
  description: "Delete a mind",
@@ -38,19 +38,19 @@ var cmd = subcommands({
38
38
  },
39
39
  list: {
40
40
  description: "List all minds",
41
- run: (args) => import("./mind-list-SYRA7CH5.js").then((m) => m.run(args))
41
+ run: (args) => import("./mind-list-7KBLPLES.js").then((m) => m.run(args))
42
42
  },
43
43
  status: {
44
44
  description: "Check mind status",
45
- run: (args) => import("./mind-status-Z2LQFA6F.js").then((m) => m.run(args))
45
+ run: (args) => import("./mind-status-4YW4PHMO.js").then((m) => m.run(args))
46
46
  },
47
47
  history: {
48
48
  description: "View mind activity history",
49
- run: (args) => import("./mind-history-OGNR4L7W.js").then((m) => m.run(transformMindFlag(args)))
49
+ run: (args) => import("./mind-history-RZMMCHMX.js").then((m) => m.run(transformMindFlag(args)))
50
50
  },
51
51
  contacts: {
52
52
  description: "Who a mind has recently been in contact with",
53
- run: (args) => import("./mind-contacts-QYU4TPEA.js").then((m) => m.run(transformMindFlag(args)))
53
+ run: (args) => import("./mind-contacts-PEXCDRXA.js").then((m) => m.run(transformMindFlag(args)))
54
54
  },
55
55
  profile: {
56
56
  description: "Update mind profile",
@@ -58,7 +58,7 @@ var cmd = subcommands({
58
58
  },
59
59
  upgrade: {
60
60
  description: "Upgrade mind to latest template",
61
- run: (args) => import("./upgrade-LIE46UBB.js").then((m) => m.run(args))
61
+ run: (args) => import("./upgrade-XY2J7NWZ.js").then((m) => m.run(args))
62
62
  },
63
63
  import: {
64
64
  description: "Import an OpenClaw workspace",
@@ -78,7 +78,7 @@ var cmd = subcommands({
78
78
  },
79
79
  sleep: {
80
80
  description: "(legacy) Use 'volute clock sleep' instead",
81
- run: (args) => import("./mind-sleep-LZAFBDZD.js").then((m) => m.run(args))
81
+ run: (args) => import("./mind-sleep-24HV4RCA.js").then((m) => m.run(args))
82
82
  },
83
83
  wake: {
84
84
  description: "(legacy) Use 'volute clock wake' instead",
@@ -86,11 +86,11 @@ var cmd = subcommands({
86
86
  },
87
87
  seed: {
88
88
  description: "(legacy) Use 'volute seed create' instead",
89
- run: (args) => import("./seed-64XEHRUP.js").then((m) => m.run(args))
89
+ run: (args) => import("./seed-DRKAP3XV.js").then((m) => m.run(args))
90
90
  },
91
91
  sprout: {
92
92
  description: "(legacy) Use 'volute seed sprout' instead",
93
- run: (args) => import("./sprout-GJMZFRGZ.js").then((m) => m.run(args))
93
+ run: (args) => import("./sprout-PMTRL7QN.js").then((m) => m.run(args))
94
94
  }
95
95
  },
96
96
  footer: "Mind name can be omitted (where applicable) if VOLUTE_MIND is set."
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- relativeAge
4
- } from "./chunk-EEOMA4DX.js";
3
+ getClient,
4
+ urlOf
5
+ } from "./chunk-LOPXTW6H.js";
5
6
  import {
6
7
  resolveMindName
7
8
  } from "./chunk-BTY4WNFE.js";
9
+ import {
10
+ relativeAge
11
+ } from "./chunk-WZZCA23D.js";
8
12
  import {
9
13
  daemonFetch
10
14
  } from "./chunk-M74I3HHF.js";
11
- import {
12
- getClient,
13
- urlOf
14
- } from "./chunk-LOPXTW6H.js";
15
15
  import {
16
16
  command
17
17
  } from "./chunk-TXSA4Q3V.js";
@@ -4,16 +4,19 @@ import {
4
4
  formatSender,
5
5
  isCompact
6
6
  } from "./chunk-7YJY3F2R.js";
7
+ import {
8
+ readStdin
9
+ } from "./chunk-33ODGMFZ.js";
10
+ import {
11
+ getClient,
12
+ urlOf
13
+ } from "./chunk-LOPXTW6H.js";
7
14
  import {
8
15
  resolveMindName
9
16
  } from "./chunk-BTY4WNFE.js";
10
17
  import {
11
18
  daemonFetch
12
19
  } from "./chunk-M74I3HHF.js";
13
- import {
14
- getClient,
15
- urlOf
16
- } from "./chunk-LOPXTW6H.js";
17
20
  import {
18
21
  command
19
22
  } from "./chunk-TXSA4Q3V.js";
@@ -35,7 +38,7 @@ function eventLabel(row) {
35
38
  }
36
39
  return row.channel?.split(":")[1] || "event";
37
40
  }
38
- function formatRow(row) {
41
+ function formatRow(row, showTurn = false) {
39
42
  const time = new Date(normalizeTimestamp(row.created_at)).toLocaleString();
40
43
  const channel = row.channel ?? "";
41
44
  switch (row.type) {
@@ -104,7 +107,8 @@ function formatRow(row) {
104
107
  } catch {
105
108
  }
106
109
  }
107
- return `[${time}] [summary${range}] ${row.content ?? ""}`;
110
+ const turn = showTurn && row.turn_id ? ` (turn ${row.turn_id})` : "";
111
+ return `[${time}] [summary${range}]${turn} ${row.content ?? ""}`;
108
112
  }
109
113
  case "session_start":
110
114
  return `[${time}] [session_start] ${row.thread ?? ""}`;
@@ -112,7 +116,7 @@ function formatRow(row) {
112
116
  return `[${time}] [${row.type}] ${row.content ?? ""}`;
113
117
  }
114
118
  }
115
- function formatRowCompact(row) {
119
+ function formatRowCompact(row, showTurn = false) {
116
120
  const time = compactTime(row.created_at);
117
121
  const channel = row.channel ?? "";
118
122
  switch (row.type) {
@@ -164,7 +168,8 @@ function formatRowCompact(row) {
164
168
  } catch {
165
169
  }
166
170
  }
167
- return `[${time}] [summary${range}] ${row.content ?? ""}`;
171
+ const turn = showTurn && row.turn_id ? ` (turn ${row.turn_id})` : "";
172
+ return `[${time}] [summary${range}]${turn} ${row.content ?? ""}`;
168
173
  }
169
174
  case "session_start":
170
175
  return `[${time}] [session_start] ${row.thread ?? ""}`;
@@ -251,16 +256,81 @@ var cmd = command({
251
256
  preset: { type: "string", description: "Use a preset view" },
252
257
  limit: { type: "string", description: "Number of entries to show" },
253
258
  full: { type: "boolean", description: "Show full details" },
259
+ provisional: {
260
+ type: "boolean",
261
+ description: "Only turn summaries you haven't rewritten yet (shows turn ids)"
262
+ },
254
263
  period: { type: "string", description: "Time period (hour, day, week, month)" },
255
264
  from: { type: "string", description: "Start date" },
256
- to: { type: "string", description: "End date" }
265
+ to: { type: "string", description: "End date" },
266
+ write: {
267
+ type: "boolean",
268
+ description: "Replace a turn's provisional summary with your own account (needs --turn)"
269
+ },
270
+ turn: { type: "string", description: "Turn id to write a summary for (with --write)" },
271
+ text: { type: "string", description: "Summary text for --write (or pipe it via stdin)" }
257
272
  },
258
273
  examples: [
259
274
  "volute mind history --mind myname",
260
275
  "volute mind history --mind myname --full",
261
- "volute mind history --mind myname --period day"
276
+ "volute mind history --mind myname --period day",
277
+ "volute mind history --mind myname --provisional",
278
+ 'volute mind history --mind myname --write --turn <id> --text "I traced the bug and fixed it."'
262
279
  ],
263
280
  run: async ({ flags }) => {
281
+ if (flags.write) {
282
+ const readFlags = [
283
+ ["--channel", flags.channel],
284
+ ["--thread", flags.thread],
285
+ ["--preset", flags.preset],
286
+ ["--limit", flags.limit],
287
+ ["--from", flags.from],
288
+ ["--to", flags.to],
289
+ ["--period", flags.period],
290
+ ["--full", flags.full],
291
+ ["--provisional", flags.provisional]
292
+ ].filter(([, v]) => v);
293
+ if (readFlags.length > 0) {
294
+ console.error(
295
+ `--write can't be combined with read flags (${readFlags.map(([n]) => n).join(", ")}); it takes only --turn and --text.`
296
+ );
297
+ process.exit(1);
298
+ }
299
+ const name2 = resolveMindName(flags);
300
+ const turnId = flags.turn;
301
+ if (!turnId) {
302
+ console.error("--write requires --turn <id> (see 'volute mind history --provisional')");
303
+ process.exit(1);
304
+ }
305
+ const text = flags.text ?? await readStdin();
306
+ if (!text) {
307
+ console.error("Provide --text or pipe the summary via stdin");
308
+ process.exit(1);
309
+ }
310
+ const client2 = getClient();
311
+ const url2 = client2.api.minds[":name"]["turn-summaries"].$url({ param: { name: name2 } });
312
+ const res2 = await daemonFetch(urlOf(url2), {
313
+ method: "PUT",
314
+ headers: { "Content-Type": "application/json" },
315
+ body: JSON.stringify({ summaries: [{ turnId, content: text }] })
316
+ });
317
+ if (!res2.ok) {
318
+ let msg = `Failed to save summary: ${res2.status}`;
319
+ try {
320
+ const data = await res2.json();
321
+ if (data.error) msg = data.error;
322
+ } catch {
323
+ }
324
+ console.error(msg);
325
+ process.exit(1);
326
+ }
327
+ console.log(`Saved your summary for turn ${turnId.slice(0, 8)}.`);
328
+ return;
329
+ }
330
+ if (flags.turn || flags.text) {
331
+ console.error("--turn and --text only apply with --write");
332
+ process.exit(1);
333
+ }
264
334
  if (flags.period) {
265
335
  const validPeriods = ["hour", "day", "week", "month"];
266
336
  if (!validPeriods.includes(flags.period)) {
@@ -340,6 +410,7 @@ var cmd = command({
340
410
  if (flags.preset) url.searchParams.set("preset", flags.preset);
341
411
  if (flags.limit) url.searchParams.set("limit", flags.limit);
342
412
  if (flags.full) url.searchParams.set("full", "true");
413
+ if (flags.provisional) url.searchParams.set("provisional", "true");
343
414
  const res = await daemonFetch(urlOf(url));
344
415
  if (!res.ok) {
345
416
  let errorMsg = `Failed to get history: ${res.status}`;
@@ -353,9 +424,10 @@ var cmd = command({
353
424
  }
354
425
  const rows = await res.json();
355
426
  const compact = isCompact();
427
+ const showTurn = !!flags.provisional;
356
428
  for (const row of rows.reverse()) {
357
429
  if (compact && (row.type === "done" || row.type === "usage")) continue;
358
- console.log(compact ? formatRowCompact(row) : formatRow(row));
430
+ console.log(compact ? formatRowCompact(row, showTurn) : formatRow(row, showTurn));
359
431
  }
360
432
  }
361
433
  });
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  relativeAge,
4
4
  run
5
- } from "./chunk-EEOMA4DX.js";
5
+ } from "./chunk-WZZCA23D.js";
6
6
  import "./chunk-M74I3HHF.js";
7
7
  import "./chunk-TXSA4Q3V.js";
8
8
  import "./chunk-O7IGP7ZW.js";