volute 0.35.0 → 0.37.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 (167) hide show
  1. package/dist/{accept-ZBDVVCEU.js → accept-AHAOUFBK.js} +4 -4
  2. package/dist/activity-events-N6HCHU4P.js +15 -0
  3. package/dist/{ai-service-LURBEDDB.js → ai-service-C2YNARGH.js} +6 -6
  4. package/dist/{api-client-3A77HMH7.js → api-client-LC5YRA32.js} +1 -1
  5. package/dist/{archive-ESU2FUN4.js → archive-AWIJTVQV.js} +4 -4
  6. package/dist/{auth-WX4TESEI.js → auth-2QOOPMBX.js} +6 -6
  7. package/dist/{bridge-PXIO6PS2.js → bridge-F3ZJEKDN.js} +4 -4
  8. package/dist/{chat-QXAJF3FU.js → chat-5Y4FD77E.js} +9 -9
  9. package/dist/{chunk-BDYXIWA5.js → chunk-2NHRJ3YO.js} +13 -2
  10. package/dist/{chunk-AN2W47GW.js → chunk-3F7XK5Q7.js} +2 -2
  11. package/dist/{chunk-AOB6GVRM.js → chunk-46DYYHN6.js} +8 -3
  12. package/dist/{chunk-WZRZFFCL.js → chunk-5DPRTREW.js} +146 -186
  13. package/dist/{chunk-QWTR6AWZ.js → chunk-7AZQFSOV.js} +2 -2
  14. package/dist/{chunk-BMZQYACC.js → chunk-A6FLW5XD.js} +19 -4
  15. package/dist/{chunk-N5LMGYXX.js → chunk-BIEWHAAM.js} +2 -2
  16. package/dist/{chunk-5N7Y5WAM.js → chunk-CJ26DXZL.js} +29 -13
  17. package/dist/{chunk-ZSR72JB3.js → chunk-CU6OFXMM.js} +1 -1
  18. package/dist/{chunk-N446KRP7.js → chunk-GVVVMZ4J.js} +2 -2
  19. package/dist/chunk-K3NQKI34.js +10 -0
  20. package/dist/{chunk-F7ZNLYKZ.js → chunk-KAB6UGOL.js} +2 -2
  21. package/dist/{chunk-WJPROOU5.js → chunk-KBRGHKVU.js} +681 -3726
  22. package/dist/{chunk-PWQ2ITYG.js → chunk-KXXJYY62.js} +6 -6
  23. package/dist/{chunk-NJK5SDGR.js → chunk-LGNUFVMR.js} +1 -1
  24. package/dist/chunk-LQ6Z4FXN.js +87 -0
  25. package/dist/{chunk-J6CJQDWI.js → chunk-MQRS4J24.js} +2 -2
  26. package/dist/{chunk-CORXD635.js → chunk-N42QMDID.js} +3 -3
  27. package/dist/{chunk-IJHIXLVN.js → chunk-NYP3LBIV.js} +15 -13
  28. package/dist/{chunk-FT5KETXZ.js → chunk-ORNY3MZR.js} +4 -4
  29. package/dist/{chunk-A2ZLHBHG.js → chunk-PMMHVSCR.js} +2 -2
  30. package/dist/chunk-QQQI6ISK.js +853 -0
  31. package/dist/chunk-RG5TOL4O.js +18 -0
  32. package/dist/{chunk-VHJRZM2S.js → chunk-SNW2NPP4.js} +2 -2
  33. package/dist/chunk-SZJWC2GA.js +125 -0
  34. package/dist/{chunk-BKF4WQCY.js → chunk-T2TP6ZC6.js} +20 -8
  35. package/dist/{chunk-2TGZJFAT.js → chunk-TNZ5XQA4.js} +3 -3
  36. package/dist/{chunk-QCH6K235.js → chunk-UI7RPV2B.js} +1 -1
  37. package/dist/{chunk-XRQSAMX2.js → chunk-UIM5NHPP.js} +3 -3
  38. package/dist/{chunk-5XJYUFZH.js → chunk-UQFYNZKT.js} +76 -30
  39. package/dist/{chunk-OTC67N2Z.js → chunk-WC635OPK.js} +1 -1
  40. package/dist/{chunk-BV65KRHM.js → chunk-XLBQYIHH.js} +2 -2
  41. package/dist/{chunk-VY3RB2V7.js → chunk-Z6TIXE77.js} +3 -3
  42. package/dist/cli.js +24 -24
  43. package/dist/{clock-HSEKS5AR.js → clock-BMLJ2TR6.js} +8 -8
  44. package/dist/{cloud-sync-6JL4C24T.js → cloud-sync-OIX576NA.js} +20 -21
  45. package/dist/{config-UTS7QULS.js → config-QB7W3Z7P.js} +4 -4
  46. package/dist/connectors/discord-bridge.js +4 -4
  47. package/dist/connectors/slack-bridge.js +4 -4
  48. package/dist/connectors/telegram-bridge.js +4 -4
  49. package/dist/{conversations-2PW57WO2.js → conversations-G6YRSABR.js} +16 -10
  50. package/dist/{create-5BPOOJAN.js → create-C3BBFYV7.js} +4 -4
  51. package/dist/{create-UVCK2CS6.js → create-PN73742N.js} +4 -4
  52. package/dist/{daemon-client-RVIKXGFQ.js → daemon-client-2MIPKY3E.js} +1 -1
  53. package/dist/{daemon-restart-HSZ3BCX5.js → daemon-restart-L2O6L7NR.js} +9 -9
  54. package/dist/daemon.js +690 -1281
  55. package/dist/db-CBOCDYVA.js +9 -0
  56. package/dist/{db-BDMH4SZ2.js → db-IJL6B26S.js} +1 -1
  57. package/dist/{delete-L5PAVDGQ.js → delete-NLXES2C7.js} +3 -3
  58. package/dist/delivery-manager-4PVBUZJB.js +30 -0
  59. package/dist/{delivery-router-HEJSJAHQ.js → delivery-router-QTFEZ26O.js} +5 -5
  60. package/dist/down-25L2RKCQ.js +17 -0
  61. package/dist/echo-text-T5ZLGMA7.js +31 -0
  62. package/dist/{env-E4XHO2BI.js → env-IQ6Q2333.js} +6 -6
  63. package/dist/exec-ONYZEA5B.js +17 -0
  64. package/dist/{export-OAS6QVBN.js → export-JPDBQESV.js} +6 -6
  65. package/dist/{extension-D74CNM7G.js → extension-LZYHBNLV.js} +26 -7
  66. package/dist/extensions-CLYXNGYB.js +50 -0
  67. package/dist/{files-CWTK6V3H.js → files-LAQ3NXQK.js} +7 -7
  68. package/dist/{import-5A3T7QV4.js → import-EROF27RH.js} +12 -11
  69. package/dist/{isolation-TK5RX2WM.js → isolation-G5J3MTKU.js} +4 -4
  70. package/dist/{join-DF5XSJAC.js → join-6SZCA5FX.js} +3 -3
  71. package/dist/{list-PDMQM7ZV.js → list-KHJZJPEJ.js} +11 -5
  72. package/dist/{login-7TE6CIZF.js → login-F6YMAVLE.js} +6 -6
  73. package/dist/{login-GOTAYLXP.js → login-GYTH67ES.js} +4 -4
  74. package/dist/{logout-T4XS6LRU.js → logout-HHPH52KZ.js} +6 -6
  75. package/dist/{logout-6KIA74EV.js → logout-YHQLOFLR.js} +4 -4
  76. package/dist/message-delivery-N2V5APCS.js +40 -0
  77. package/dist/{mind-5IEYKV7I.js → mind-M57ET546.js} +19 -19
  78. package/dist/mind-activity-tracker-42ENM32S.js +18 -0
  79. package/dist/{mind-history-IE2QH7U5.js → mind-history-WHCNZ6I5.js} +86 -19
  80. package/dist/{mind-list-GEWHWAL4.js → mind-list-H3HC2ZRG.js} +4 -4
  81. package/dist/mind-manager-LS2AIXHQ.js +30 -0
  82. package/dist/{mind-profile-DCBDVF5B.js → mind-profile-7VYRJGFZ.js} +2 -2
  83. package/dist/mind-service-UDXF5WC2.js +36 -0
  84. package/dist/{mind-sleep-ITCF6OQA.js → mind-sleep-ZL5ZXFTM.js} +4 -4
  85. package/dist/{mind-status-X4SX3YUG.js → mind-status-ZWULKOUO.js} +4 -4
  86. package/dist/{mind-wake-KXMKMGWX.js → mind-wake-HK5ORGUK.js} +4 -4
  87. package/dist/{package-D2FSVFAX.js → package-5FGU5QNP.js} +6 -6
  88. package/dist/{read-67VRP2DO.js → read-CP7MYMJQ.js} +8 -8
  89. package/dist/{read-stdin-3X5VYKNS.js → read-stdin-4B5UYPPM.js} +1 -1
  90. package/dist/{register-SB7NXCOE.js → register-XOBFEMI4.js} +4 -4
  91. package/dist/{registry-GBSNW3HG.js → registry-KMELPC3X.js} +3 -3
  92. package/dist/{reject-MUR2KWJ4.js → reject-43AGXB6B.js} +4 -4
  93. package/dist/{restart-5EGG4JXU.js → restart-O5QIYQJT.js} +5 -5
  94. package/dist/{sandbox-R37VIU36.js → sandbox-PQYEICEF.js} +6 -6
  95. package/dist/scheduler-NTC74JYH.js +30 -0
  96. package/dist/{schema-XVZ2CLKW.js → schema-K575EBPE.js} +4 -2
  97. package/dist/{seed-EQORWX77.js → seed-55VC3A57.js} +2 -2
  98. package/dist/{seed-check-KJNTL72M.js → seed-check-HZPVFJKZ.js} +2 -2
  99. package/dist/{seed-cmd-ZM2XGVU2.js → seed-cmd-2KOEQZK6.js} +4 -4
  100. package/dist/{seed-create-DRWGGHEI.js → seed-create-Y2Z5JWBB.js} +6 -6
  101. package/dist/{seed-sprout-JYXGXOP3.js → seed-sprout-OLSIWXZN.js} +15 -15
  102. package/dist/{send-JBJJQ7CA.js → send-7CIP5GLS.js} +8 -8
  103. package/dist/{service-WNPCNHOX.js → service-YMHWPDXW.js} +6 -6
  104. package/dist/{setup-BJ4YAY26.js → setup-6Z34JJEB.js} +32 -37
  105. package/dist/{setup-RHJRFURI.js → setup-PF7JSFMO.js} +6 -4
  106. package/dist/{skill-TAAKEYBV.js → skill-ICN6Y2ZF.js} +6 -6
  107. package/dist/skills/tending/SKILL.md +52 -0
  108. package/dist/{skills-EKMCQ46K.js → skills-FDMLJGZ3.js} +8 -8
  109. package/dist/sleep-manager-TQP5ZJI5.js +34 -0
  110. package/dist/spirit-SM6ARJ2N.js +24 -0
  111. package/dist/{split-AWVOYOPZ.js → split-5YBEQTBF.js} +3 -3
  112. package/dist/{sprout-HE4TITMK.js → sprout-G6G57IOY.js} +2 -2
  113. package/dist/src-LT6ZBYYX.js +2133 -0
  114. package/dist/src-O4PRLMKM.js +425 -0
  115. package/dist/src-OYWRPLC6.js +617 -0
  116. package/dist/{start-3UXOPXQG.js → start-LMXXRR3X.js} +5 -5
  117. package/dist/{status-ZK34WYIM.js → status-MC2P7DBG.js} +7 -7
  118. package/dist/{stop-3XYIBGFM.js → stop-TWDKVEUX.js} +5 -5
  119. package/dist/system-chat-NNXYCSVL.js +34 -0
  120. package/dist/{systems-O43WGQY6.js → systems-Y2WZV2K4.js} +7 -7
  121. package/dist/{tailscale-ZIZ2HWJ5.js → tailscale-LTYNKIPZ.js} +4 -4
  122. package/dist/template-hash-SSIBEEYK.js +9 -0
  123. package/dist/up-5JXV6BZS.js +19 -0
  124. package/dist/{update-ANE5ZM7F.js → update-UOP2INF2.js} +7 -7
  125. package/dist/{update-check-UV55CBEP.js → update-check-IKS7SGK5.js} +4 -4
  126. package/dist/{upgrade-ZMDGC7M2.js → upgrade-RXFZR5FI.js} +3 -3
  127. package/dist/{variant-QWL2WSRI.js → variant-HHDTW74J.js} +1 -1
  128. package/dist/{version-notify-FXSEMXWW.js → version-notify-CSE4NBYM.js} +22 -23
  129. package/dist/{volute-config-D2XVS2YI.js → volute-config-TS62GS6A.js} +2 -2
  130. package/dist/web-assets/assets/index-B3xLeex8.js +75 -0
  131. package/dist/web-assets/assets/index-Dr4A90Lo.css +1 -0
  132. package/dist/web-assets/index.html +2 -2
  133. package/drizzle/0006_channels.sql +17 -0
  134. package/drizzle/0007_drop_conversation_name_title.sql +11 -0
  135. package/drizzle/0008_performance_indexes.sql +6 -0
  136. package/drizzle/meta/0006_snapshot.json +7 -0
  137. package/drizzle/meta/0007_snapshot.json +7 -0
  138. package/drizzle/meta/_journal.json +21 -0
  139. package/package.json +5 -5
  140. package/templates/_base/home/.config/routes.json +2 -2
  141. package/templates/_base/home/VOLUTE.md +1 -2
  142. package/templates/_base/src/lib/context-breakdown.ts +22 -16
  143. package/templates/_base/src/lib/format-prefix.ts +1 -7
  144. package/templates/claude/.init/.config/routes.json +2 -2
  145. package/templates/codex/.init/.config/routes.json +2 -2
  146. package/templates/pi/.init/.config/routes.json +2 -2
  147. package/dist/activity-events-ZW4SDL2C.js +0 -15
  148. package/dist/chunk-7KJOFUNN.js +0 -22
  149. package/dist/chunk-MDJGMOSD.js +0 -207
  150. package/dist/db-BVBJ57TU.js +0 -9
  151. package/dist/delivery-manager-H5ZVBMCQ.js +0 -31
  152. package/dist/down-74VXM45A.js +0 -17
  153. package/dist/exec-PY7THYH4.js +0 -17
  154. package/dist/extensions-XDDFY72A.js +0 -49
  155. package/dist/lib-DYEZMGW7.js +0 -6588
  156. package/dist/message-delivery-GRC4W6P7.js +0 -41
  157. package/dist/mind-activity-tracker-QBLIV7ZJ.js +0 -18
  158. package/dist/mind-manager-HFLB5653.js +0 -31
  159. package/dist/mind-service-X2CAA6W6.js +0 -37
  160. package/dist/scheduler-Y7O4CJXL.js +0 -31
  161. package/dist/sleep-manager-7KFK3USC.js +0 -35
  162. package/dist/spirit-ZFRDXMG7.js +0 -23
  163. package/dist/system-chat-IDPHYHY4.js +0 -35
  164. package/dist/template-hash-A7FNHTB7.js +0 -9
  165. package/dist/up-77ICEDEW.js +0 -19
  166. package/dist/web-assets/assets/index-BhxWKvbB.css +0 -1
  167. package/dist/web-assets/assets/index-CHVKJ9II.js +0 -75
@@ -3,7 +3,7 @@ import {
3
3
  subcommands
4
4
  } from "./chunk-TXSA4Q3V.js";
5
5
  import "./chunk-O7IGP7ZW.js";
6
- import "./chunk-7KJOFUNN.js";
6
+ import "./chunk-K3NQKI34.js";
7
7
 
8
8
  // packages/cli/src/commands/mind.ts
9
9
  function transformMindFlag(args) {
@@ -18,75 +18,75 @@ var cmd = subcommands({
18
18
  commands: {
19
19
  create: {
20
20
  description: "Create a new mind",
21
- run: (args) => import("./create-UVCK2CS6.js").then((m) => m.run(args))
21
+ run: (args) => import("./create-PN73742N.js").then((m) => m.run(args))
22
22
  },
23
23
  start: {
24
24
  description: "Start a mind",
25
- run: (args) => import("./start-3UXOPXQG.js").then((m) => m.run(args))
25
+ run: (args) => import("./start-LMXXRR3X.js").then((m) => m.run(args))
26
26
  },
27
27
  stop: {
28
28
  description: "Stop a mind",
29
- run: (args) => import("./stop-3XYIBGFM.js").then((m) => m.run(args))
29
+ run: (args) => import("./stop-TWDKVEUX.js").then((m) => m.run(args))
30
30
  },
31
31
  restart: {
32
32
  description: "Restart a mind",
33
- run: (args) => import("./restart-5EGG4JXU.js").then((m) => m.run(args))
33
+ run: (args) => import("./restart-O5QIYQJT.js").then((m) => m.run(args))
34
34
  },
35
35
  delete: {
36
36
  description: "Delete a mind",
37
- run: (args) => import("./delete-L5PAVDGQ.js").then((m) => m.run(args))
37
+ run: (args) => import("./delete-NLXES2C7.js").then((m) => m.run(args))
38
38
  },
39
39
  list: {
40
40
  description: "List all minds",
41
- run: (args) => import("./mind-list-GEWHWAL4.js").then((m) => m.run(args))
41
+ run: (args) => import("./mind-list-H3HC2ZRG.js").then((m) => m.run(args))
42
42
  },
43
43
  status: {
44
44
  description: "Check mind status",
45
- run: (args) => import("./mind-status-X4SX3YUG.js").then((m) => m.run(args))
45
+ run: (args) => import("./mind-status-ZWULKOUO.js").then((m) => m.run(args))
46
46
  },
47
47
  history: {
48
48
  description: "View mind activity history",
49
- run: (args) => import("./mind-history-IE2QH7U5.js").then((m) => m.run(transformMindFlag(args)))
49
+ run: (args) => import("./mind-history-WHCNZ6I5.js").then((m) => m.run(transformMindFlag(args)))
50
50
  },
51
51
  profile: {
52
52
  description: "Update mind profile",
53
- run: (args) => import("./mind-profile-DCBDVF5B.js").then((m) => m.run(args))
53
+ run: (args) => import("./mind-profile-7VYRJGFZ.js").then((m) => m.run(args))
54
54
  },
55
55
  upgrade: {
56
56
  description: "Upgrade mind to latest template",
57
- run: (args) => import("./upgrade-ZMDGC7M2.js").then((m) => m.run(args))
57
+ run: (args) => import("./upgrade-RXFZR5FI.js").then((m) => m.run(args))
58
58
  },
59
59
  import: {
60
60
  description: "Import an OpenClaw workspace",
61
- run: (args) => import("./import-5A3T7QV4.js").then((m) => m.run(args))
61
+ run: (args) => import("./import-EROF27RH.js").then((m) => m.run(args))
62
62
  },
63
63
  export: {
64
64
  description: "Export a mind",
65
- run: (args) => import("./export-OAS6QVBN.js").then((m) => m.run(args))
65
+ run: (args) => import("./export-JPDBQESV.js").then((m) => m.run(args))
66
66
  },
67
67
  split: {
68
68
  description: "Create a variant",
69
- run: (args) => import("./split-AWVOYOPZ.js").then((m) => m.run(args))
69
+ run: (args) => import("./split-5YBEQTBF.js").then((m) => m.run(args))
70
70
  },
71
71
  join: {
72
72
  description: "Merge variant back",
73
- run: (args) => import("./join-DF5XSJAC.js").then((m) => m.run(args))
73
+ run: (args) => import("./join-6SZCA5FX.js").then((m) => m.run(args))
74
74
  },
75
75
  sleep: {
76
76
  description: "Put a mind to sleep",
77
- run: (args) => import("./mind-sleep-ITCF6OQA.js").then((m) => m.run(args))
77
+ run: (args) => import("./mind-sleep-ZL5ZXFTM.js").then((m) => m.run(args))
78
78
  },
79
79
  wake: {
80
80
  description: "Wake a sleeping mind",
81
- run: (args) => import("./mind-wake-KXMKMGWX.js").then((m) => m.run(args))
81
+ run: (args) => import("./mind-wake-HK5ORGUK.js").then((m) => m.run(args))
82
82
  },
83
83
  seed: {
84
84
  description: "(legacy) Use 'volute seed create' instead",
85
- run: (args) => import("./seed-EQORWX77.js").then((m) => m.run(args))
85
+ run: (args) => import("./seed-55VC3A57.js").then((m) => m.run(args))
86
86
  },
87
87
  sprout: {
88
88
  description: "(legacy) Use 'volute seed sprout' instead",
89
- run: (args) => import("./sprout-HE4TITMK.js").then((m) => m.run(args))
89
+ run: (args) => import("./sprout-G6G57IOY.js").then((m) => m.run(args))
90
90
  }
91
91
  },
92
92
  footer: "Mind name can be omitted (where applicable) if VOLUTE_MIND is set."
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ getActiveMinds,
4
+ markIdle,
5
+ onMindEvent,
6
+ stopAll
7
+ } from "./chunk-GVVVMZ4J.js";
8
+ import "./chunk-N42QMDID.js";
9
+ import "./chunk-T2TP6ZC6.js";
10
+ import "./chunk-2NHRJ3YO.js";
11
+ import "./chunk-CJ26DXZL.js";
12
+ import "./chunk-K3NQKI34.js";
13
+ export {
14
+ getActiveMinds,
15
+ markIdle,
16
+ onMindEvent,
17
+ stopAll
18
+ };
@@ -6,10 +6,6 @@ import {
6
6
  import {
7
7
  resolveMindName
8
8
  } from "./chunk-BTY4WNFE.js";
9
- import {
10
- command
11
- } from "./chunk-TXSA4Q3V.js";
12
- import "./chunk-O7IGP7ZW.js";
13
9
  import {
14
10
  daemonFetch
15
11
  } from "./chunk-ZX7EAV5J.js";
@@ -17,7 +13,11 @@ import {
17
13
  getClient,
18
14
  urlOf
19
15
  } from "./chunk-LOPXTW6H.js";
20
- import "./chunk-7KJOFUNN.js";
16
+ import {
17
+ command
18
+ } from "./chunk-TXSA4Q3V.js";
19
+ import "./chunk-O7IGP7ZW.js";
20
+ import "./chunk-K3NQKI34.js";
21
21
 
22
22
  // packages/cli/src/commands/mind-history.ts
23
23
  function normalizeTimestamp(dateStr) {
@@ -149,19 +149,48 @@ function formatRowCompact(row) {
149
149
  return `[${time}] [${row.type}] ${row.content ?? ""}`;
150
150
  }
151
151
  }
152
+ function periodKeyFromTimestamp(dateStr, period) {
153
+ const d = new Date(normalizeTimestamp(dateStr));
154
+ switch (period) {
155
+ case "hour": {
156
+ const y = d.getFullYear();
157
+ const m = String(d.getMonth() + 1).padStart(2, "0");
158
+ const day = String(d.getDate()).padStart(2, "0");
159
+ const h = String(d.getHours()).padStart(2, "0");
160
+ return `${y}-${m}-${day}T${h}`;
161
+ }
162
+ case "day": {
163
+ const y = d.getFullYear();
164
+ const m = String(d.getMonth() + 1).padStart(2, "0");
165
+ const day = String(d.getDate()).padStart(2, "0");
166
+ return `${y}-${m}-${day}`;
167
+ }
168
+ case "week": {
169
+ const local = new Date(d.getFullYear(), d.getMonth(), d.getDate());
170
+ local.setDate(local.getDate() + 4 - (local.getDay() || 7));
171
+ const yearStart = new Date(local.getFullYear(), 0, 1);
172
+ const weekNum = Math.ceil(((local.getTime() - yearStart.getTime()) / 864e5 + 1) / 7);
173
+ return `${local.getFullYear()}-W${String(weekNum).padStart(2, "0")}`;
174
+ }
175
+ case "month": {
176
+ const y = d.getFullYear();
177
+ const m = String(d.getMonth() + 1).padStart(2, "0");
178
+ return `${y}-${m}`;
179
+ }
180
+ default: {
181
+ const y = d.getFullYear();
182
+ const m = String(d.getMonth() + 1).padStart(2, "0");
183
+ const day = String(d.getDate()).padStart(2, "0");
184
+ return `${y}-${m}-${day}`;
185
+ }
186
+ }
187
+ }
152
188
  var PERIOD_LABELS = {
153
189
  hour: "Hourly",
154
190
  day: "Daily",
155
191
  week: "Weekly",
156
192
  month: "Monthly"
157
193
  };
158
- function formatMetaSummary(row) {
159
- const label = PERIOD_LABELS[row.period] ?? row.period;
160
- return `
161
- === ${row.period_key} (${label}) ===
162
- ${row.content ?? ""}
163
- `;
164
- }
165
194
  function getDefaultRange(period) {
166
195
  const now = /* @__PURE__ */ new Date();
167
196
  switch (period) {
@@ -225,20 +254,58 @@ var cmd = command({
225
254
  else params.set("from", getDefaultRange(flags.period));
226
255
  if (flags.to) params.set("to", flags.to);
227
256
  if (flags.limit) params.set("limit", flags.limit);
228
- const res2 = await daemonFetch(`/api/v1/history/summaries?${params}`);
229
- if (!res2.ok) {
230
- let errorMsg = `Failed to get summaries: ${res2.status}`;
257
+ const activityParams = new URLSearchParams();
258
+ activityParams.set("mind", name2);
259
+ if (flags.from) activityParams.set("from", flags.from);
260
+ else activityParams.set("from", getDefaultRange(flags.period));
261
+ if (flags.to) activityParams.set("to", flags.to);
262
+ const [summaryRes, activityRes] = await Promise.all([
263
+ daemonFetch(`/api/v1/history/summaries?${params}`),
264
+ daemonFetch(`/api/v1/history/activity?${activityParams}`)
265
+ ]);
266
+ if (!summaryRes.ok) {
267
+ let errorMsg = `Failed to get summaries: ${summaryRes.status}`;
231
268
  try {
232
- const data = await res2.json();
269
+ const data = await summaryRes.json();
233
270
  if (data.error) errorMsg = data.error;
234
271
  } catch {
235
272
  }
236
273
  console.error(errorMsg);
237
274
  process.exit(1);
238
275
  }
239
- const rows2 = await res2.json();
240
- for (const row of rows2.reverse()) {
241
- console.log(formatMetaSummary(row));
276
+ const rows2 = await summaryRes.json();
277
+ let activities = [];
278
+ if (activityRes.ok) {
279
+ activities = await activityRes.json();
280
+ } else {
281
+ console.error(
282
+ `Warning: could not fetch activity data (${activityRes.status}), showing summaries only`
283
+ );
284
+ }
285
+ const activityByPeriod = /* @__PURE__ */ new Map();
286
+ for (const act of activities) {
287
+ const key = periodKeyFromTimestamp(act.created_at, flags.period);
288
+ if (!activityByPeriod.has(key)) activityByPeriod.set(key, []);
289
+ activityByPeriod.get(key).push(act);
290
+ }
291
+ const allKeys = /* @__PURE__ */ new Set([...rows2.map((r) => r.period_key), ...activityByPeriod.keys()]);
292
+ const sortedKeys = [...allKeys].sort();
293
+ const summaryByKey = new Map(rows2.map((r) => [r.period_key, r]));
294
+ for (const key of sortedKeys) {
295
+ const summary = summaryByKey.get(key);
296
+ const periodActivities = activityByPeriod.get(key);
297
+ const label = PERIOD_LABELS[flags.period] ?? flags.period;
298
+ console.log(`
299
+ === ${key} (${label}) ===`);
300
+ if (summary?.content) console.log(summary.content);
301
+ if (periodActivities?.length) {
302
+ console.log("\nActivity:");
303
+ for (const act of periodActivities) {
304
+ const time = new Date(normalizeTimestamp(act.created_at)).toLocaleTimeString();
305
+ console.log(` [${time}] ${act.summary}`);
306
+ }
307
+ }
308
+ console.log();
242
309
  }
243
310
  return;
244
311
  }
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ daemonFetch
4
+ } from "./chunk-ZX7EAV5J.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-ZX7EAV5J.js";
9
- import "./chunk-7KJOFUNN.js";
9
+ import "./chunk-K3NQKI34.js";
10
10
 
11
11
  // packages/cli/src/commands/mind-list.ts
12
12
  var cmd = command({
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ MindManager,
4
+ getMindManager,
5
+ initMindManager
6
+ } from "./chunk-KBRGHKVU.js";
7
+ import "./chunk-PMMHVSCR.js";
8
+ import "./chunk-UQFYNZKT.js";
9
+ import "./chunk-46DYYHN6.js";
10
+ import "./chunk-NYP3LBIV.js";
11
+ import "./chunk-CU6OFXMM.js";
12
+ import "./chunk-KXXJYY62.js";
13
+ import "./chunk-7AZQFSOV.js";
14
+ import "./chunk-GVVVMZ4J.js";
15
+ import "./chunk-3F7XK5Q7.js";
16
+ import "./chunk-SNW2NPP4.js";
17
+ import "./chunk-UIM5NHPP.js";
18
+ import "./chunk-ORNY3MZR.js";
19
+ import "./chunk-A6FLW5XD.js";
20
+ import "./chunk-5DPRTREW.js";
21
+ import "./chunk-N42QMDID.js";
22
+ import "./chunk-T2TP6ZC6.js";
23
+ import "./chunk-2NHRJ3YO.js";
24
+ import "./chunk-CJ26DXZL.js";
25
+ import "./chunk-K3NQKI34.js";
26
+ export {
27
+ MindManager,
28
+ getMindManager,
29
+ initMindManager
30
+ };
@@ -6,7 +6,7 @@ import {
6
6
  command
7
7
  } from "./chunk-TXSA4Q3V.js";
8
8
  import "./chunk-O7IGP7ZW.js";
9
- import "./chunk-7KJOFUNN.js";
9
+ import "./chunk-K3NQKI34.js";
10
10
 
11
11
  // packages/cli/src/commands/mind-profile.ts
12
12
  var cmd = command({
@@ -29,7 +29,7 @@ var cmd = command({
29
29
  );
30
30
  process.exit(1);
31
31
  }
32
- const { daemonFetch } = await import("./daemon-client-RVIKXGFQ.js");
32
+ const { daemonFetch } = await import("./daemon-client-2MIPKY3E.js");
33
33
  const body = {};
34
34
  if (displayName) body.displayName = displayName;
35
35
  if (description) body.description = description;
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ sleepMind,
4
+ startMindFull,
5
+ startSpiritFull,
6
+ stopMindFull,
7
+ stopSpiritFull,
8
+ wakeMind
9
+ } from "./chunk-KBRGHKVU.js";
10
+ import "./chunk-PMMHVSCR.js";
11
+ import "./chunk-UQFYNZKT.js";
12
+ import "./chunk-46DYYHN6.js";
13
+ import "./chunk-NYP3LBIV.js";
14
+ import "./chunk-CU6OFXMM.js";
15
+ import "./chunk-KXXJYY62.js";
16
+ import "./chunk-7AZQFSOV.js";
17
+ import "./chunk-GVVVMZ4J.js";
18
+ import "./chunk-3F7XK5Q7.js";
19
+ import "./chunk-SNW2NPP4.js";
20
+ import "./chunk-UIM5NHPP.js";
21
+ import "./chunk-ORNY3MZR.js";
22
+ import "./chunk-A6FLW5XD.js";
23
+ import "./chunk-5DPRTREW.js";
24
+ import "./chunk-N42QMDID.js";
25
+ import "./chunk-T2TP6ZC6.js";
26
+ import "./chunk-2NHRJ3YO.js";
27
+ import "./chunk-CJ26DXZL.js";
28
+ import "./chunk-K3NQKI34.js";
29
+ export {
30
+ sleepMind,
31
+ startMindFull,
32
+ startSpiritFull,
33
+ stopMindFull,
34
+ stopSpiritFull,
35
+ wakeMind
36
+ };
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  resolveMindName
4
4
  } from "./chunk-BTY4WNFE.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-ZX7EAV5J.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-ZX7EAV5J.js";
12
- import "./chunk-7KJOFUNN.js";
12
+ import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // packages/cli/src/commands/mind-sleep.ts
15
15
  var cmd = command({
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  resolveMindName
4
4
  } from "./chunk-BTY4WNFE.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-ZX7EAV5J.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-ZX7EAV5J.js";
12
- import "./chunk-7KJOFUNN.js";
12
+ import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // packages/cli/src/commands/mind-status.ts
15
15
  var cmd = command({
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  resolveMindName
4
4
  } from "./chunk-BTY4WNFE.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-ZX7EAV5J.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-ZX7EAV5J.js";
12
- import "./chunk-7KJOFUNN.js";
12
+ import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // packages/cli/src/commands/mind-wake.ts
15
15
  var cmd = command({
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import "./chunk-7KJOFUNN.js";
2
+ import "./chunk-K3NQKI34.js";
3
3
 
4
4
  // package.json
5
5
  var package_default = {
6
6
  name: "volute",
7
- version: "0.35.0",
7
+ version: "0.37.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",
@@ -49,9 +49,9 @@ var package_default = {
49
49
  scripts: {
50
50
  dev: "tsx src/cli.ts",
51
51
  build: "npm run build:ext && tsup && cp -r skills dist/skills && npm run build:web",
52
- "build:ext": "npm run build:ext-theme --workspace=packages/ui && cp packages/ui/dist/ext-theme.css packages/daemon/src/web/ui/public/ext-theme.css && npm run build:ui --workspace=packages/extensions/notes && npm run build:ui --workspace=packages/extensions/pages && npm run build:ui --workspace=packages/extensions/plan",
53
- "build:web": "vite build --config packages/daemon/src/web/ui/vite.config.ts",
54
- "dev:web": "vite --config packages/daemon/src/web/ui/vite.config.ts",
52
+ "build:ext": "npm run build:ext-theme --workspace=packages/ui && cp packages/ui/dist/ext-theme.css packages/web/public/ext-theme.css && npm run build:ui --workspace=packages/extensions/notes && npm run build:ui --workspace=packages/extensions/pages && npm run build:ui --workspace=packages/extensions/plan",
53
+ "build:web": "npm run build:ui --workspace=packages/web",
54
+ "dev:web": "npm run dev --workspace=packages/web",
55
55
  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)",
56
56
  "test:e2e": "node --import tsx --import ./test/setup.ts --test --test-force-exit --test-concurrency=1 test/daemon-e2e.test.ts",
57
57
  "test:all": "npm test && npm run test:e2e",
@@ -61,7 +61,7 @@ var package_default = {
61
61
  typecheck: "tsc --noEmit",
62
62
  "typecheck:templates": "tsx scripts/typecheck-templates.ts",
63
63
  "lint:templates": "biome check templates/",
64
- "typecheck:web": "svelte-check --tsconfig packages/daemon/src/web/ui/tsconfig.json",
64
+ "typecheck:web": "svelte-check --tsconfig packages/web/tsconfig.json",
65
65
  prepare: "lefthook install",
66
66
  prepublishOnly: "npm run build",
67
67
  "db:generate": "drizzle-kit generate",
@@ -6,14 +6,14 @@ import {
6
6
  import {
7
7
  resolveMindName
8
8
  } from "./chunk-BTY4WNFE.js";
9
+ import {
10
+ daemonFetch
11
+ } from "./chunk-ZX7EAV5J.js";
9
12
  import {
10
13
  command
11
14
  } from "./chunk-TXSA4Q3V.js";
12
15
  import "./chunk-O7IGP7ZW.js";
13
- import {
14
- daemonFetch
15
- } from "./chunk-ZX7EAV5J.js";
16
- import "./chunk-7KJOFUNN.js";
16
+ import "./chunk-K3NQKI34.js";
17
17
 
18
18
  // packages/cli/src/commands/chat/read.ts
19
19
  async function resolveConversationId(mindName, input) {
@@ -27,12 +27,12 @@ async function resolveConversationId(mindName, input) {
27
27
  const convs = await res.json();
28
28
  const cleaned = input.replace(/^[@#]/, "");
29
29
  const lower = cleaned.toLowerCase();
30
- const channelMatch = convs.find((c) => c.type === "channel" && c.name?.toLowerCase() === lower);
30
+ const channelMatch = convs.find(
31
+ (c) => c.type === "channel" && c.channel_name?.toLowerCase() === lower
32
+ );
31
33
  if (channelMatch) return channelMatch.id;
32
- const titleMatch = convs.find((c) => c.title?.toLowerCase() === lower);
33
- if (titleMatch) return titleMatch.id;
34
34
  const dmMatch = convs.find(
35
- (c) => c.type === "dm" && c.title?.toLowerCase().split(/,\s*/).some((name) => name === lower)
35
+ (c) => c.type === "dm" && c.participants?.some((p) => p.username.toLowerCase() === lower && p.username !== mindName)
36
36
  );
37
37
  if (dmMatch) return dmMatch.id;
38
38
  const prefixMatch = convs.find((c) => c.id.startsWith(input));
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  readStdin
4
4
  } from "./chunk-33ODGMFZ.js";
5
- import "./chunk-7KJOFUNN.js";
5
+ import "./chunk-K3NQKI34.js";
6
6
  export {
7
7
  readStdin
8
8
  };
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  promptLine
4
4
  } from "./chunk-VHWGEJ4V.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-ZX7EAV5J.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-ZX7EAV5J.js";
12
- import "./chunk-7KJOFUNN.js";
12
+ import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // packages/cli/src/commands/systems/register.ts
15
15
  var cmd = command({
@@ -24,9 +24,9 @@ import {
24
24
  voluteHome,
25
25
  voluteSystemDir,
26
26
  voluteUserHome
27
- } from "./chunk-BDYXIWA5.js";
28
- import "./chunk-5N7Y5WAM.js";
29
- import "./chunk-7KJOFUNN.js";
27
+ } from "./chunk-2NHRJ3YO.js";
28
+ import "./chunk-CJ26DXZL.js";
29
+ import "./chunk-K3NQKI34.js";
30
30
  export {
31
31
  addMind,
32
32
  addSpirit,
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  resolveMindName
4
4
  } from "./chunk-BTY4WNFE.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-ZX7EAV5J.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-ZX7EAV5J.js";
12
- import "./chunk-7KJOFUNN.js";
12
+ import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // packages/cli/src/commands/chat/reject.ts
15
15
  var cmd = command({
@@ -2,10 +2,6 @@
2
2
  import {
3
3
  resolveMindName
4
4
  } from "./chunk-BTY4WNFE.js";
5
- import {
6
- command
7
- } from "./chunk-TXSA4Q3V.js";
8
- import "./chunk-O7IGP7ZW.js";
9
5
  import {
10
6
  daemonFetch
11
7
  } from "./chunk-ZX7EAV5J.js";
@@ -13,7 +9,11 @@ import {
13
9
  getClient,
14
10
  urlOf
15
11
  } from "./chunk-LOPXTW6H.js";
16
- import "./chunk-7KJOFUNN.js";
12
+ import {
13
+ command
14
+ } from "./chunk-TXSA4Q3V.js";
15
+ import "./chunk-O7IGP7ZW.js";
16
+ import "./chunk-K3NQKI34.js";
17
17
 
18
18
  // packages/cli/src/commands/restart.ts
19
19
  var cmd = command({
@@ -5,12 +5,12 @@ import {
5
5
  isSandboxEnabled,
6
6
  shellEscape,
7
7
  wrapForSandbox
8
- } from "./chunk-PWQ2ITYG.js";
9
- import "./chunk-BKF4WQCY.js";
10
- import "./chunk-BMZQYACC.js";
11
- import "./chunk-BDYXIWA5.js";
12
- import "./chunk-5N7Y5WAM.js";
13
- import "./chunk-7KJOFUNN.js";
8
+ } from "./chunk-KXXJYY62.js";
9
+ import "./chunk-A6FLW5XD.js";
10
+ import "./chunk-T2TP6ZC6.js";
11
+ import "./chunk-2NHRJ3YO.js";
12
+ import "./chunk-CJ26DXZL.js";
13
+ import "./chunk-K3NQKI34.js";
14
14
  export {
15
15
  buildDenyRead,
16
16
  initSandbox,
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ Scheduler,
4
+ getScheduler,
5
+ initScheduler
6
+ } from "./chunk-KBRGHKVU.js";
7
+ import "./chunk-PMMHVSCR.js";
8
+ import "./chunk-UQFYNZKT.js";
9
+ import "./chunk-46DYYHN6.js";
10
+ import "./chunk-NYP3LBIV.js";
11
+ import "./chunk-CU6OFXMM.js";
12
+ import "./chunk-KXXJYY62.js";
13
+ import "./chunk-7AZQFSOV.js";
14
+ import "./chunk-GVVVMZ4J.js";
15
+ import "./chunk-3F7XK5Q7.js";
16
+ import "./chunk-SNW2NPP4.js";
17
+ import "./chunk-UIM5NHPP.js";
18
+ import "./chunk-ORNY3MZR.js";
19
+ import "./chunk-A6FLW5XD.js";
20
+ import "./chunk-5DPRTREW.js";
21
+ import "./chunk-N42QMDID.js";
22
+ import "./chunk-T2TP6ZC6.js";
23
+ import "./chunk-2NHRJ3YO.js";
24
+ import "./chunk-CJ26DXZL.js";
25
+ import "./chunk-K3NQKI34.js";
26
+ export {
27
+ Scheduler,
28
+ getScheduler,
29
+ initScheduler
30
+ };
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  activity,
4
+ channels,
4
5
  conversationParticipants,
5
6
  conversationReads,
6
7
  conversations,
@@ -14,10 +15,11 @@ import {
14
15
  systemPrompts,
15
16
  turns,
16
17
  users
17
- } from "./chunk-5N7Y5WAM.js";
18
- import "./chunk-7KJOFUNN.js";
18
+ } from "./chunk-CJ26DXZL.js";
19
+ import "./chunk-K3NQKI34.js";
19
20
  export {
20
21
  activity,
22
+ channels,
21
23
  conversationParticipants,
22
24
  conversationReads,
23
25
  conversations,