volute 0.34.0 → 0.35.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 (209) hide show
  1. package/README.md +7 -6
  2. package/dist/accept-ZBDVVCEU.js +42 -0
  3. package/dist/{activity-events-BN7V6KCC.js → activity-events-ZW4SDL2C.js} +4 -4
  4. package/dist/{ai-service-PSILB5WD.js → ai-service-LURBEDDB.js} +5 -5
  5. package/dist/{api-client-XUXOB7LI.js → api-client-3A77HMH7.js} +1 -1
  6. package/dist/api.d.ts +1 -5618
  7. package/dist/{archive-C2VEMQOR.js → archive-ESU2FUN4.js} +3 -3
  8. package/dist/{auth-ZFZXJZDQ.js → auth-WX4TESEI.js} +5 -5
  9. package/dist/bridge-PXIO6PS2.js +206 -0
  10. package/dist/chat-QXAJF3FU.js +51 -0
  11. package/dist/{chunk-7F2SW2KD.js → chunk-2TGZJFAT.js} +3 -3
  12. package/dist/{chunk-6LXAAQ43.js → chunk-33ODGMFZ.js} +1 -1
  13. package/dist/{chunk-4JSR7YO7.js → chunk-5N7Y5WAM.js} +1 -1
  14. package/dist/{chunk-FYCALD4Q.js → chunk-5T5YMX6S.js} +1 -1
  15. package/dist/{chunk-B2BVAIZ4.js → chunk-5XJYUFZH.js} +21 -15
  16. package/dist/{chunk-M3K5AARV.js → chunk-A2ZLHBHG.js} +2 -2
  17. package/dist/{chunk-U5BTYSAL.js → chunk-AN2W47GW.js} +2 -2
  18. package/dist/{chunk-G53F3JA4.js → chunk-AOB6GVRM.js} +1 -1
  19. package/dist/{chunk-N7BLAHNE.js → chunk-BDYXIWA5.js} +5 -5
  20. package/dist/{chunk-YUIHSKR6.js → chunk-BKF4WQCY.js} +2 -2
  21. package/dist/{chunk-6OWJXUAR.js → chunk-BMZQYACC.js} +2 -2
  22. package/dist/{chunk-NAOW2CLO.js → chunk-BTY4WNFE.js} +1 -1
  23. package/dist/{chunk-MLOQKQNB.js → chunk-BV65KRHM.js} +2 -2
  24. package/dist/{chunk-XWXBJQBE.js → chunk-CORXD635.js} +4 -4
  25. package/dist/{chunk-PVY5W6QN.js → chunk-F7ZNLYKZ.js} +2 -2
  26. package/dist/{chunk-BFWHBQK4.js → chunk-FT5KETXZ.js} +3 -3
  27. package/dist/{chunk-N3DNFPVA.js → chunk-IJHIXLVN.js} +8 -8
  28. package/dist/{chunk-V6ZCNULL.js → chunk-J6CJQDWI.js} +37 -28
  29. package/dist/{chunk-4RQBJWQX.js → chunk-LOPXTW6H.js} +1 -1
  30. package/dist/{chunk-47ZPNLF4.js → chunk-MDJGMOSD.js} +8 -137
  31. package/dist/{chunk-BTWAGDV5.js → chunk-N446KRP7.js} +3 -3
  32. package/dist/{chunk-6WAWMWR5.js → chunk-N5LMGYXX.js} +2 -2
  33. package/dist/{chunk-G6BSYHPK.js → chunk-NJK5SDGR.js} +1 -1
  34. package/dist/{chunk-D424ZQGI.js → chunk-O7IGP7ZW.js} +11 -3
  35. package/dist/{chunk-2IOP6PHB.js → chunk-OTC67N2Z.js} +2 -2
  36. package/dist/{chunk-V45JXOWY.js → chunk-PWQ2ITYG.js} +4 -4
  37. package/dist/{chunk-KTLFDYPT.js → chunk-QCH6K235.js} +1 -1
  38. package/dist/chunk-QHG4OMZL.js +145 -0
  39. package/dist/{chunk-IS7WJ56Q.js → chunk-QWTR6AWZ.js} +3 -3
  40. package/dist/chunk-TXSA4Q3V.js +116 -0
  41. package/dist/{chunk-BDK73LK6.js → chunk-VHJRZM2S.js} +2 -2
  42. package/dist/{chunk-SSI47XP2.js → chunk-VHWGEJ4V.js} +1 -1
  43. package/dist/chunk-VY3RB2V7.js +164 -0
  44. package/dist/chunk-WJPROOU5.js +8314 -0
  45. package/dist/{chunk-E5C7OWZ2.js → chunk-WZRZFFCL.js} +8 -8
  46. package/dist/{chunk-BM474GX6.js → chunk-XRQSAMX2.js} +4 -4
  47. package/dist/{chunk-OYAKCAVY.js → chunk-ZSR72JB3.js} +1 -1
  48. package/dist/{chunk-PLDWHR4D.js → chunk-ZX7EAV5J.js} +17 -7
  49. package/dist/cli.js +90 -29
  50. package/dist/clock-HSEKS5AR.js +289 -0
  51. package/dist/{cloud-sync-TG3TIX5H.js → cloud-sync-6JL4C24T.js} +21 -22
  52. package/dist/config-UTS7QULS.js +76 -0
  53. package/dist/connectors/discord-bridge.js +3 -3
  54. package/dist/connectors/slack-bridge.js +3 -3
  55. package/dist/connectors/telegram-bridge.js +3 -3
  56. package/dist/{conversations-HL2JP5GI.js → conversations-2PW57WO2.js} +5 -5
  57. package/dist/create-5BPOOJAN.js +75 -0
  58. package/dist/create-UVCK2CS6.js +50 -0
  59. package/dist/daemon-client-RVIKXGFQ.js +12 -0
  60. package/dist/daemon-restart-HSZ3BCX5.js +65 -0
  61. package/dist/daemon.js +845 -1766
  62. package/dist/{db-PLEDCBHZ.js → db-BDMH4SZ2.js} +7 -3
  63. package/dist/{db-RYX3SS2W.js → db-BVBJ57TU.js} +2 -2
  64. package/dist/delete-L5PAVDGQ.js +42 -0
  65. package/dist/delivery-manager-H5ZVBMCQ.js +31 -0
  66. package/dist/{delivery-router-D5ELDMS2.js → delivery-router-HEJSJAHQ.js} +4 -4
  67. package/dist/down-74VXM45A.js +17 -0
  68. package/dist/env-E4XHO2BI.js +223 -0
  69. package/dist/{exec-DVLXKRIO.js → exec-PY7THYH4.js} +4 -4
  70. package/dist/export-OAS6QVBN.js +113 -0
  71. package/dist/{extension-PM42QCID.js → extension-D74CNM7G.js} +25 -33
  72. package/dist/{extensions-BBGVL5JC.js → extensions-XDDFY72A.js} +22 -11
  73. package/dist/files-CWTK6V3H.js +53 -0
  74. package/dist/import-5A3T7QV4.js +143 -0
  75. package/dist/{isolation-62MKDZN3.js → isolation-TK5RX2WM.js} +3 -3
  76. package/dist/join-DF5XSJAC.js +67 -0
  77. package/dist/list-PDMQM7ZV.js +53 -0
  78. package/dist/login-7TE6CIZF.js +60 -0
  79. package/dist/login-GOTAYLXP.js +51 -0
  80. package/dist/logout-6KIA74EV.js +29 -0
  81. package/dist/logout-T4XS6LRU.js +50 -0
  82. package/dist/message-delivery-GRC4W6P7.js +41 -0
  83. package/dist/mind-5IEYKV7I.js +97 -0
  84. package/dist/{mind-activity-tracker-2ACNHA7B.js → mind-activity-tracker-QBLIV7ZJ.js} +5 -5
  85. package/dist/{mind-history-WOYFLQAI.js → mind-history-IE2QH7U5.js} +82 -71
  86. package/dist/mind-list-GEWHWAL4.js +38 -0
  87. package/dist/mind-manager-HFLB5653.js +31 -0
  88. package/dist/mind-profile-DCBDVF5B.js +53 -0
  89. package/dist/mind-service-X2CAA6W6.js +37 -0
  90. package/dist/mind-sleep-ITCF6OQA.js +47 -0
  91. package/dist/mind-status-X4SX3YUG.js +65 -0
  92. package/dist/mind-wake-KXMKMGWX.js +42 -0
  93. package/dist/{package-V2WHWVG6.js → package-D2FSVFAX.js} +5 -5
  94. package/dist/read-67VRP2DO.js +91 -0
  95. package/dist/{read-stdin-PIRM6A2Y.js → read-stdin-3X5VYKNS.js} +1 -1
  96. package/dist/register-SB7NXCOE.js +51 -0
  97. package/dist/{registry-UYV5S6QT.js → registry-GBSNW3HG.js} +2 -2
  98. package/dist/reject-MUR2KWJ4.js +40 -0
  99. package/dist/restart-5EGG4JXU.js +42 -0
  100. package/dist/{sandbox-SI5HMBP3.js → sandbox-R37VIU36.js} +5 -5
  101. package/dist/scheduler-Y7O4CJXL.js +31 -0
  102. package/dist/{schema-ETMABTW4.js → schema-XVZ2CLKW.js} +1 -1
  103. package/dist/{seed-WNGI6PNW.js → seed-EQORWX77.js} +2 -2
  104. package/dist/seed-check-KJNTL72M.js +35 -0
  105. package/dist/seed-cmd-ZM2XGVU2.js +30 -0
  106. package/dist/seed-create-DRWGGHEI.js +113 -0
  107. package/dist/seed-sprout-JYXGXOP3.js +148 -0
  108. package/dist/send-JBJJQ7CA.js +409 -0
  109. package/dist/service-WNPCNHOX.js +121 -0
  110. package/dist/{setup-Z3DEVWV7.js → setup-BJ4YAY26.js} +153 -127
  111. package/dist/{setup-GGMKENLN.js → setup-RHJRFURI.js} +3 -3
  112. package/dist/skill-TAAKEYBV.js +389 -0
  113. package/dist/skills/volute-mind/SKILL.md +3 -7
  114. package/dist/skills/volute-mind/references/extensions.md +8 -11
  115. package/dist/{skills-Q6VZ2UGD.js → skills-EKMCQ46K.js} +7 -7
  116. package/dist/sleep-manager-7KFK3USC.js +35 -0
  117. package/dist/spirit-ZFRDXMG7.js +23 -0
  118. package/dist/split-AWVOYOPZ.js +64 -0
  119. package/dist/{sprout-E3HJIV2Z.js → sprout-HE4TITMK.js} +2 -2
  120. package/dist/start-3UXOPXQG.js +39 -0
  121. package/dist/status-ZK34WYIM.js +125 -0
  122. package/dist/stop-3XYIBGFM.js +41 -0
  123. package/dist/system-chat-IDPHYHY4.js +35 -0
  124. package/dist/systems-O43WGQY6.js +52 -0
  125. package/dist/{tailscale-ZEUK7GKZ.js → tailscale-ZIZ2HWJ5.js} +4 -4
  126. package/dist/{template-hash-EJRTKE36.js → template-hash-A7FNHTB7.js} +2 -2
  127. package/dist/up-77ICEDEW.js +19 -0
  128. package/dist/update-ANE5ZM7F.js +225 -0
  129. package/dist/{update-check-X3YG4WVP.js → update-check-UV55CBEP.js} +3 -3
  130. package/dist/upgrade-ZMDGC7M2.js +74 -0
  131. package/dist/variant-QWL2WSRI.js +62 -0
  132. package/dist/{version-notify-YCH4UVQ2.js → version-notify-FXSEMXWW.js} +28 -27
  133. package/dist/{volute-config-WBKYJGYQ.js → volute-config-D2XVS2YI.js} +1 -1
  134. package/dist/web-assets/assets/index-BhxWKvbB.css +1 -0
  135. package/dist/web-assets/assets/index-CHVKJ9II.js +75 -0
  136. package/dist/web-assets/index.html +2 -2
  137. package/dist/web-assets/sw.js +117 -0
  138. package/package.json +5 -5
  139. package/packages/extensions/pages/dist/ui/assets/index-DKZLNMED.js +2 -0
  140. package/packages/extensions/pages/dist/ui/index.html +1 -1
  141. package/packages/extensions/pages/skills/pages/SKILL.md +84 -9
  142. package/templates/_base/src/lib/auto-commit.ts +8 -8
  143. package/templates/_base/src/lib/volute-server.ts +6 -0
  144. package/templates/claude/src/agent.ts +8 -1
  145. package/dist/accept-TW6V4WI4.js +0 -42
  146. package/dist/bridge-O753D5F4.js +0 -207
  147. package/dist/chat-BHYX7DJ4.js +0 -68
  148. package/dist/chunk-47XDEWWV.js +0 -156
  149. package/dist/chunk-CVL5IGIR.js +0 -2084
  150. package/dist/chunk-PB65JZK2.js +0 -85
  151. package/dist/chunk-TAHX36HZ.js +0 -3679
  152. package/dist/clock-3X4DSC2N.js +0 -281
  153. package/dist/config-OROA5DUA.js +0 -72
  154. package/dist/create-3SEKKI6P.js +0 -71
  155. package/dist/create-UOSOQ2HN.js +0 -44
  156. package/dist/daemon-client-WOAQXXBM.js +0 -12
  157. package/dist/daemon-restart-5ABHNXJZ.js +0 -52
  158. package/dist/delete-KYOVWR23.js +0 -35
  159. package/dist/delivery-manager-2BR5NZKF.js +0 -32
  160. package/dist/down-QVFN4UPK.js +0 -15
  161. package/dist/env-R34DT7XL.js +0 -195
  162. package/dist/export-6ZXAXATG.js +0 -112
  163. package/dist/files-VQV2VZQO.js +0 -47
  164. package/dist/import-MK2I2T6F.js +0 -23
  165. package/dist/join-DGYHTJUH.js +0 -66
  166. package/dist/list-C644WTHV.js +0 -49
  167. package/dist/login-IIGEQPHL.js +0 -47
  168. package/dist/login-KZQLMAWE.js +0 -47
  169. package/dist/logout-AGTZVRGP.js +0 -40
  170. package/dist/logout-KD6GXIJJ.js +0 -21
  171. package/dist/message-delivery-V3R6NXJP.js +0 -42
  172. package/dist/mind-BI4EPBVZ.js +0 -108
  173. package/dist/mind-list-6VPM7GUQ.js +0 -30
  174. package/dist/mind-manager-MWW3BTS4.js +0 -32
  175. package/dist/mind-profile-WPG42U5Y.js +0 -47
  176. package/dist/mind-service-VIKZJK2M.js +0 -38
  177. package/dist/mind-sleep-XDISJY74.js +0 -42
  178. package/dist/mind-status-7FTZWPZF.js +0 -56
  179. package/dist/mind-wake-KIIKEI3A.js +0 -37
  180. package/dist/read-H5C26YO7.js +0 -85
  181. package/dist/register-J27WP33N.js +0 -47
  182. package/dist/reject-OEANJYIA.js +0 -40
  183. package/dist/restart-V5EGYBJG.js +0 -33
  184. package/dist/scheduler-AGG3L2FO.js +0 -32
  185. package/dist/seed-check-PXTH7YXS.js +0 -32
  186. package/dist/seed-cmd-VENFTGS3.js +0 -36
  187. package/dist/seed-create-663ALOKH.js +0 -112
  188. package/dist/seed-sprout-EH3AGKAI.js +0 -132
  189. package/dist/send-7FUUUZZH.js +0 -386
  190. package/dist/skill-DKNYJS4P.js +0 -362
  191. package/dist/skills/shared-files/SKILL.md +0 -44
  192. package/dist/skills/shared-files/scripts/merge.ts +0 -72
  193. package/dist/skills/shared-files/scripts/pull.ts +0 -52
  194. package/dist/sleep-manager-BJK2ROPX.js +0 -36
  195. package/dist/spirit-4JP4TY4C.js +0 -23
  196. package/dist/split-3YPMS2CL.js +0 -63
  197. package/dist/start-W3TPKX4D.js +0 -33
  198. package/dist/status-4OVFXFEJ.js +0 -115
  199. package/dist/stop-GTT6YWYO.js +0 -32
  200. package/dist/system-channel-DXD2JBOU.js +0 -36
  201. package/dist/system-chat-TYLOL7SX.js +0 -36
  202. package/dist/systems-AYLO727G.js +0 -61
  203. package/dist/up-PA7F2CXE.js +0 -18
  204. package/dist/update-HG4LCUSG.js +0 -215
  205. package/dist/upgrade-YGNIDICG.js +0 -67
  206. package/dist/variant-MZUMRTQO.js +0 -41
  207. package/dist/web-assets/assets/index-DiiwC-CZ.css +0 -1
  208. package/dist/web-assets/assets/index-d6y5b9Ij.js +0 -75
  209. package/packages/extensions/pages/dist/ui/assets/index-tLTROSk5.js +0 -2
@@ -3,14 +3,18 @@ import {
3
3
  getAllSites,
4
4
  getPublishedPages,
5
5
  getRecentPages,
6
+ getSystemPages,
6
7
  initDb,
7
- syncPublishedPages
8
- } from "./chunk-PB65JZK2.js";
8
+ syncPublishedPages,
9
+ syncSystemPages
10
+ } from "./chunk-QHG4OMZL.js";
9
11
  import "./chunk-7KJOFUNN.js";
10
12
  export {
11
13
  getAllSites,
12
14
  getPublishedPages,
13
15
  getRecentPages,
16
+ getSystemPages,
14
17
  initDb,
15
- syncPublishedPages
18
+ syncPublishedPages,
19
+ syncSystemPages
16
20
  };
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getDb
4
- } from "./chunk-N7BLAHNE.js";
5
- import "./chunk-4JSR7YO7.js";
4
+ } from "./chunk-BDYXIWA5.js";
5
+ import "./chunk-5N7Y5WAM.js";
6
6
  import "./chunk-7KJOFUNN.js";
7
7
  export {
8
8
  getDb
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ resolveMindName
4
+ } from "./chunk-BTY4WNFE.js";
5
+ import {
6
+ command
7
+ } from "./chunk-TXSA4Q3V.js";
8
+ import "./chunk-O7IGP7ZW.js";
9
+ import "./chunk-7KJOFUNN.js";
10
+
11
+ // packages/cli/src/commands/delete.ts
12
+ var cmd = command({
13
+ name: "volute mind delete",
14
+ description: "Delete a mind from the registry",
15
+ args: [{ name: "name", description: "Mind to delete (or use VOLUTE_MIND)" }],
16
+ flags: {
17
+ force: { type: "boolean", description: "Also delete the mind's directory" }
18
+ },
19
+ async run({ args, flags }) {
20
+ const name = resolveMindName({ mind: args.name });
21
+ const { daemonFetch } = await import("./daemon-client-RVIKXGFQ.js");
22
+ const { getClient, urlOf } = await import("./api-client-3A77HMH7.js");
23
+ const client = getClient();
24
+ const url = urlOf(client.api.minds[":name"].$url({ param: { name } })) + (flags.force ? "?force=true" : "");
25
+ const res = await daemonFetch(url, { method: "DELETE" });
26
+ const data = await res.json();
27
+ if (!res.ok) {
28
+ console.error(data.error ?? "Failed to delete mind");
29
+ process.exit(1);
30
+ }
31
+ console.log(`Removed ${name}.`);
32
+ if (flags.force) {
33
+ console.log("Deleted mind directory.");
34
+ } else {
35
+ console.log("Use --force to also delete the mind directory.");
36
+ }
37
+ }
38
+ });
39
+ var run = cmd.execute;
40
+ export {
41
+ run
42
+ };
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ DeliveryManager,
4
+ getDeliveryManager,
5
+ initDeliveryManager
6
+ } from "./chunk-WJPROOU5.js";
7
+ import "./chunk-5XJYUFZH.js";
8
+ import "./chunk-AOB6GVRM.js";
9
+ import "./chunk-IJHIXLVN.js";
10
+ import "./chunk-QWTR6AWZ.js";
11
+ import "./chunk-N446KRP7.js";
12
+ import "./chunk-QHG4OMZL.js";
13
+ import "./chunk-XRQSAMX2.js";
14
+ import "./chunk-WZRZFFCL.js";
15
+ import "./chunk-CORXD635.js";
16
+ import "./chunk-ZSR72JB3.js";
17
+ import "./chunk-PWQ2ITYG.js";
18
+ import "./chunk-A2ZLHBHG.js";
19
+ import "./chunk-FT5KETXZ.js";
20
+ import "./chunk-BKF4WQCY.js";
21
+ import "./chunk-AN2W47GW.js";
22
+ import "./chunk-VHJRZM2S.js";
23
+ import "./chunk-BMZQYACC.js";
24
+ import "./chunk-BDYXIWA5.js";
25
+ import "./chunk-5N7Y5WAM.js";
26
+ import "./chunk-7KJOFUNN.js";
27
+ export {
28
+ DeliveryManager,
29
+ getDeliveryManager,
30
+ initDeliveryManager
31
+ };
@@ -6,10 +6,10 @@ import {
6
6
  registerMindDir,
7
7
  resolveDeliveryMode,
8
8
  resolveRoute
9
- } from "./chunk-IS7WJ56Q.js";
10
- import "./chunk-YUIHSKR6.js";
11
- import "./chunk-N7BLAHNE.js";
12
- import "./chunk-4JSR7YO7.js";
9
+ } from "./chunk-QWTR6AWZ.js";
10
+ import "./chunk-BKF4WQCY.js";
11
+ import "./chunk-BDYXIWA5.js";
12
+ import "./chunk-5N7Y5WAM.js";
13
13
  import "./chunk-7KJOFUNN.js";
14
14
  export {
15
15
  clearConfigCache,
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ run,
4
+ stopDaemon
5
+ } from "./chunk-J6CJQDWI.js";
6
+ import "./chunk-2TGZJFAT.js";
7
+ import "./chunk-TXSA4Q3V.js";
8
+ import "./chunk-O7IGP7ZW.js";
9
+ import "./chunk-AN2W47GW.js";
10
+ import "./chunk-VHJRZM2S.js";
11
+ import "./chunk-BDYXIWA5.js";
12
+ import "./chunk-5N7Y5WAM.js";
13
+ import "./chunk-7KJOFUNN.js";
14
+ export {
15
+ run,
16
+ stopDaemon
17
+ };
@@ -0,0 +1,223 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ isCompact
4
+ } from "./chunk-5T5YMX6S.js";
5
+ import {
6
+ promptLine
7
+ } from "./chunk-VHWGEJ4V.js";
8
+ import {
9
+ command,
10
+ subcommands
11
+ } from "./chunk-TXSA4Q3V.js";
12
+ import "./chunk-O7IGP7ZW.js";
13
+ import {
14
+ daemonFetch
15
+ } from "./chunk-ZX7EAV5J.js";
16
+ import {
17
+ getClient,
18
+ urlOf
19
+ } from "./chunk-LOPXTW6H.js";
20
+ import "./chunk-7KJOFUNN.js";
21
+
22
+ // packages/cli/src/commands/env.ts
23
+ function maskValue(value) {
24
+ if (value.length <= 6) return "***";
25
+ return `${value.slice(0, 3)}...${value.slice(-3)}`;
26
+ }
27
+ var envSetCmd = command({
28
+ name: "volute env set",
29
+ description: "Set an environment variable",
30
+ args: [
31
+ { name: "key", required: true, description: "Variable name" },
32
+ { name: "value", description: "Variable value (prompts if omitted)" }
33
+ ],
34
+ flags: {
35
+ mind: { type: "string", description: "Mind name" }
36
+ },
37
+ run: async ({ args, flags }) => {
38
+ const client = getClient();
39
+ const key = args.key;
40
+ const value = args.value ?? await promptLine(`Enter value for ${key}: `);
41
+ let res;
42
+ if (flags.mind) {
43
+ res = await daemonFetch(
44
+ urlOf(
45
+ client.api.minds[":name"].env[":key"].$url({
46
+ param: { name: flags.mind, key }
47
+ })
48
+ ),
49
+ {
50
+ method: "PUT",
51
+ headers: { "Content-Type": "application/json" },
52
+ body: JSON.stringify({ value })
53
+ }
54
+ );
55
+ } else {
56
+ res = await daemonFetch(urlOf(client.api.env[":key"].$url({ param: { key } })), {
57
+ method: "PUT",
58
+ headers: { "Content-Type": "application/json" },
59
+ body: JSON.stringify({ value })
60
+ });
61
+ }
62
+ if (!res.ok) {
63
+ const body = await res.json().catch(() => ({}));
64
+ console.error(body.error ?? `Failed to set ${key}`);
65
+ process.exit(1);
66
+ }
67
+ const scope = flags.mind ? `mind:${flags.mind}` : "shared";
68
+ console.log(`Set ${key} [${scope}]`);
69
+ }
70
+ });
71
+ var envGetCmd = command({
72
+ name: "volute env get",
73
+ description: "Get an environment variable value",
74
+ args: [{ name: "key", required: true, description: "Variable name" }],
75
+ flags: {
76
+ mind: { type: "string", description: "Mind name" }
77
+ },
78
+ run: async ({ args, flags }) => {
79
+ const client = getClient();
80
+ const key = args.key;
81
+ if (flags.mind) {
82
+ const res = await daemonFetch(
83
+ urlOf(
84
+ client.api.minds[":name"].env[":key"].$url({
85
+ param: { name: flags.mind, key }
86
+ })
87
+ )
88
+ );
89
+ if (!res.ok) {
90
+ const body = await res.json().catch(() => ({}));
91
+ console.error(body.error ?? `${key} not set`);
92
+ process.exit(1);
93
+ }
94
+ const data = await res.json();
95
+ console.log(data.value);
96
+ } else {
97
+ const res = await daemonFetch(urlOf(client.api.env.$url()));
98
+ if (!res.ok) {
99
+ console.error(`Failed to read shared env`);
100
+ process.exit(1);
101
+ }
102
+ const env = await res.json();
103
+ if (key in env) {
104
+ console.log(env[key]);
105
+ } else {
106
+ console.error(`${key} not set`);
107
+ process.exit(1);
108
+ }
109
+ }
110
+ }
111
+ });
112
+ var envListCmd = command({
113
+ name: "volute env list",
114
+ description: "List environment variables",
115
+ args: [],
116
+ flags: {
117
+ mind: { type: "string", description: "Mind name" },
118
+ reveal: { type: "boolean", description: "Show values unmasked" }
119
+ },
120
+ run: async ({ flags }) => {
121
+ const client = getClient();
122
+ const compact = isCompact();
123
+ if (flags.mind) {
124
+ const res = await daemonFetch(
125
+ urlOf(client.api.minds[":name"].env.$url({ param: { name: flags.mind } }))
126
+ );
127
+ if (!res.ok) {
128
+ const body = await res.json().catch(() => ({}));
129
+ console.error(body.error ?? "Failed to list env");
130
+ process.exit(1);
131
+ }
132
+ const data = await res.json();
133
+ const allKeys = /* @__PURE__ */ new Set([...Object.keys(data.shared), ...Object.keys(data.mind)]);
134
+ if (allKeys.size === 0) {
135
+ console.log("No environment variables set.");
136
+ return;
137
+ }
138
+ for (const key of [...allKeys].sort()) {
139
+ const scope = key in data.mind ? "mind" : "shared";
140
+ const raw = key in data.mind ? data.mind[key] : data.shared[key];
141
+ const value = flags.reveal ? raw : maskValue(raw);
142
+ console.log(compact ? `${key}=${value}` : `${key}=${value} [${scope}]`);
143
+ }
144
+ } else {
145
+ const res = await daemonFetch(urlOf(client.api.env.$url()));
146
+ if (!res.ok) {
147
+ console.error("Failed to list shared env");
148
+ process.exit(1);
149
+ }
150
+ const env = await res.json();
151
+ const keys = Object.keys(env);
152
+ if (keys.length === 0) {
153
+ console.log("No shared environment variables set.");
154
+ return;
155
+ }
156
+ for (const key of keys.sort()) {
157
+ const value = flags.reveal ? env[key] : maskValue(env[key]);
158
+ console.log(compact ? `${key}=${value}` : `${key}=${value} [shared]`);
159
+ }
160
+ }
161
+ }
162
+ });
163
+ var envRemoveCmd = command({
164
+ name: "volute env remove",
165
+ description: "Remove an environment variable",
166
+ args: [{ name: "key", required: true, description: "Variable name" }],
167
+ flags: {
168
+ mind: { type: "string", description: "Mind name" }
169
+ },
170
+ run: async ({ args, flags }) => {
171
+ const client = getClient();
172
+ const key = args.key;
173
+ let res;
174
+ if (flags.mind) {
175
+ res = await daemonFetch(
176
+ urlOf(
177
+ client.api.minds[":name"].env[":key"].$url({
178
+ param: { name: flags.mind, key }
179
+ })
180
+ ),
181
+ { method: "DELETE" }
182
+ );
183
+ } else {
184
+ res = await daemonFetch(urlOf(client.api.env[":key"].$url({ param: { key } })), {
185
+ method: "DELETE"
186
+ });
187
+ }
188
+ if (!res.ok) {
189
+ const scope2 = flags.mind ? `mind:${flags.mind}` : "shared";
190
+ console.error(`${key} not set in ${scope2} scope`);
191
+ process.exit(1);
192
+ }
193
+ const scope = flags.mind ? `mind:${flags.mind}` : "shared";
194
+ console.log(`Removed ${key} [${scope}]`);
195
+ }
196
+ });
197
+ var cmd = subcommands({
198
+ name: "volute env",
199
+ description: "Manage environment variables",
200
+ commands: {
201
+ set: {
202
+ description: "Set an environment variable",
203
+ run: envSetCmd.execute
204
+ },
205
+ get: {
206
+ description: "Get an environment variable",
207
+ run: envGetCmd.execute
208
+ },
209
+ list: {
210
+ description: "List environment variables",
211
+ run: envListCmd.execute
212
+ },
213
+ remove: {
214
+ description: "Remove an environment variable",
215
+ run: envRemoveCmd.execute
216
+ }
217
+ },
218
+ footer: "Use --mind <name> or VOLUTE_MIND for mind-scoped variables."
219
+ });
220
+ var run = cmd.execute;
221
+ export {
222
+ run
223
+ };
@@ -4,10 +4,10 @@ import {
4
4
  execInherit,
5
5
  gitExec,
6
6
  resolveVoluteBin
7
- } from "./chunk-U5BTYSAL.js";
8
- import "./chunk-BDK73LK6.js";
9
- import "./chunk-N7BLAHNE.js";
10
- import "./chunk-4JSR7YO7.js";
7
+ } from "./chunk-AN2W47GW.js";
8
+ import "./chunk-VHJRZM2S.js";
9
+ import "./chunk-BDYXIWA5.js";
10
+ import "./chunk-5N7Y5WAM.js";
11
11
  import "./chunk-7KJOFUNN.js";
12
12
  export {
13
13
  exec,
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ command
4
+ } from "./chunk-TXSA4Q3V.js";
5
+ import "./chunk-O7IGP7ZW.js";
6
+ import {
7
+ addHistoryToArchive,
8
+ createExportArchive
9
+ } from "./chunk-N5LMGYXX.js";
10
+ import {
11
+ findMind,
12
+ mindDir
13
+ } from "./chunk-BDYXIWA5.js";
14
+ import "./chunk-5N7Y5WAM.js";
15
+ import "./chunk-7KJOFUNN.js";
16
+
17
+ // packages/cli/src/commands/export.ts
18
+ import { existsSync, writeFileSync } from "fs";
19
+ import { resolve } from "path";
20
+ var cmd = command({
21
+ name: "volute mind export",
22
+ description: "Export a mind to an archive",
23
+ args: [{ name: "name", required: true, description: "Mind to export" }],
24
+ flags: {
25
+ "include-env": { type: "boolean", description: "Include environment variables" },
26
+ "include-identity": { type: "boolean", description: "Include identity keys" },
27
+ "include-connectors": { type: "boolean", description: "Include connector configs" },
28
+ "include-history": { type: "boolean", description: "Include message history" },
29
+ "include-sessions": { type: "boolean", description: "Include session data" },
30
+ "include-src": { type: "boolean", description: "Include source code" },
31
+ all: { type: "boolean", description: "Include everything" },
32
+ output: { type: "string", description: "Output file path" }
33
+ },
34
+ run: async ({ args, flags }) => {
35
+ const name = args.name;
36
+ const entry = await findMind(name);
37
+ if (!entry) {
38
+ console.error(`Unknown mind: ${name}`);
39
+ process.exit(1);
40
+ }
41
+ const dir = mindDir(name);
42
+ if (!existsSync(dir)) {
43
+ console.error(`Mind directory missing: ${dir}`);
44
+ process.exit(1);
45
+ }
46
+ const includeAll = flags.all;
47
+ const includeEnv = includeAll || flags["include-env"];
48
+ const includeIdentity = includeAll || flags["include-identity"];
49
+ const includeConnectors = includeAll || flags["include-connectors"];
50
+ const includeHistory = includeAll || flags["include-history"];
51
+ const includeSessions = includeAll || flags["include-sessions"];
52
+ const includeSrc = includeAll || flags["include-src"];
53
+ const zip = createExportArchive({
54
+ name,
55
+ template: entry.template ?? "claude",
56
+ stage: entry.stage,
57
+ includeSrc,
58
+ includeEnv,
59
+ includeIdentity,
60
+ includeConnectors,
61
+ includeHistory,
62
+ includeSessions
63
+ });
64
+ if (includeHistory) {
65
+ try {
66
+ const { daemonFetch } = await import("./daemon-client-RVIKXGFQ.js");
67
+ const { getClient, urlOf } = await import("./api-client-3A77HMH7.js");
68
+ const client = getClient();
69
+ const res = await daemonFetch(
70
+ urlOf(client.api.minds[":name"].history.export.$url({ param: { name } }))
71
+ );
72
+ if (!res.ok) {
73
+ const text = await res.text().catch(() => "");
74
+ throw new Error(`Failed to fetch history: HTTP ${res.status}${text ? ` - ${text}` : ""}`);
75
+ }
76
+ const rows = await res.json();
77
+ addHistoryToArchive(zip, rows);
78
+ } catch (err) {
79
+ console.error(`Error: could not export history: ${err.message}`);
80
+ process.exit(1);
81
+ }
82
+ }
83
+ const outputPath = resolve(flags.output ?? `${name}.volute`);
84
+ const buf = zip.toBuffer();
85
+ try {
86
+ writeFileSync(outputPath, buf);
87
+ } catch (err) {
88
+ console.error(`Failed to write archive to ${outputPath}: ${err.message}`);
89
+ process.exit(1);
90
+ }
91
+ const sizeMB = (buf.length / 1024 / 1024).toFixed(2);
92
+ console.log(`
93
+ Exported ${name} \u2192 ${outputPath} (${sizeMB} MB)`);
94
+ const included = [];
95
+ const excluded = [];
96
+ for (const [key, val] of [
97
+ ["src", includeSrc],
98
+ ["env", includeEnv],
99
+ ["identity", includeIdentity],
100
+ ["connectors", includeConnectors],
101
+ ["history", includeHistory],
102
+ ["sessions", includeSessions]
103
+ ]) {
104
+ (val ? included : excluded).push(key);
105
+ }
106
+ if (included.length > 0) console.log(` Included: ${included.join(", ")}`);
107
+ if (excluded.length > 0) console.log(` Excluded: ${excluded.join(", ")}`);
108
+ }
109
+ });
110
+ var run = cmd.execute;
111
+ export {
112
+ run
113
+ };
@@ -1,41 +1,14 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ subcommands
4
+ } from "./chunk-TXSA4Q3V.js";
5
+ import "./chunk-O7IGP7ZW.js";
2
6
  import {
3
7
  daemonFetch
4
- } from "./chunk-PLDWHR4D.js";
5
- import "./chunk-N7BLAHNE.js";
6
- import "./chunk-4JSR7YO7.js";
8
+ } from "./chunk-ZX7EAV5J.js";
7
9
  import "./chunk-7KJOFUNN.js";
8
10
 
9
- // src/commands/extension.ts
10
- async function run(args) {
11
- const subcommand = args[0];
12
- switch (subcommand) {
13
- case "list":
14
- await listExtensions();
15
- break;
16
- case "install":
17
- await installExtension(args.slice(1));
18
- break;
19
- case "uninstall":
20
- await uninstallExtension(args.slice(1));
21
- break;
22
- case "--help":
23
- case "-h":
24
- case void 0:
25
- printUsage();
26
- break;
27
- default:
28
- console.error(`Unknown subcommand: ${subcommand}`);
29
- printUsage();
30
- process.exit(1);
31
- }
32
- }
33
- function printUsage() {
34
- console.log(`Usage:
35
- volute extension list List installed extensions
36
- volute extension install <package> Install a third-party extension
37
- volute extension uninstall <package> Uninstall a third-party extension`);
38
- }
11
+ // packages/cli/src/commands/extension.ts
39
12
  async function listExtensions() {
40
13
  const res = await daemonFetch("/api/extensions/all");
41
14
  if (!res.ok) {
@@ -92,6 +65,25 @@ async function uninstallExtension(args) {
92
65
  console.log(`Removed "${pkg}".`);
93
66
  console.log("Restart the daemon (`volute restart`) to unload the extension.");
94
67
  }
68
+ var cmd = subcommands({
69
+ name: "volute extension",
70
+ description: "Manage extensions",
71
+ commands: {
72
+ list: {
73
+ description: "List installed extensions",
74
+ run: async () => listExtensions()
75
+ },
76
+ install: {
77
+ description: "Install a third-party extension",
78
+ run: installExtension
79
+ },
80
+ uninstall: {
81
+ description: "Uninstall a third-party extension",
82
+ run: uninstallExtension
83
+ }
84
+ }
85
+ });
86
+ var run = cmd.execute;
95
87
  export {
96
88
  run
97
89
  };
@@ -9,19 +9,29 @@ import {
9
9
  notifyExtensionsDaemonStop,
10
10
  notifyExtensionsMindStart,
11
11
  notifyExtensionsMindStop,
12
+ parseCommandArgs,
12
13
  setExtensionEnabled,
13
14
  uninstallNpmExtension
14
- } from "./chunk-CVL5IGIR.js";
15
- import "./chunk-N3DNFPVA.js";
16
- import "./chunk-PB65JZK2.js";
17
- import "./chunk-BM474GX6.js";
18
- import "./chunk-XWXBJQBE.js";
19
- import "./chunk-YUIHSKR6.js";
20
- import "./chunk-U5BTYSAL.js";
21
- import "./chunk-BDK73LK6.js";
22
- import "./chunk-6OWJXUAR.js";
23
- import "./chunk-N7BLAHNE.js";
24
- import "./chunk-4JSR7YO7.js";
15
+ } from "./chunk-WJPROOU5.js";
16
+ import "./chunk-5XJYUFZH.js";
17
+ import "./chunk-AOB6GVRM.js";
18
+ import "./chunk-IJHIXLVN.js";
19
+ import "./chunk-QWTR6AWZ.js";
20
+ import "./chunk-N446KRP7.js";
21
+ import "./chunk-QHG4OMZL.js";
22
+ import "./chunk-XRQSAMX2.js";
23
+ import "./chunk-WZRZFFCL.js";
24
+ import "./chunk-CORXD635.js";
25
+ import "./chunk-ZSR72JB3.js";
26
+ import "./chunk-PWQ2ITYG.js";
27
+ import "./chunk-A2ZLHBHG.js";
28
+ import "./chunk-FT5KETXZ.js";
29
+ import "./chunk-BKF4WQCY.js";
30
+ import "./chunk-AN2W47GW.js";
31
+ import "./chunk-VHJRZM2S.js";
32
+ import "./chunk-BMZQYACC.js";
33
+ import "./chunk-BDYXIWA5.js";
34
+ import "./chunk-5N7Y5WAM.js";
25
35
  import "./chunk-7KJOFUNN.js";
26
36
  export {
27
37
  getAllDiscoveredExtensions,
@@ -33,6 +43,7 @@ export {
33
43
  notifyExtensionsDaemonStop,
34
44
  notifyExtensionsMindStart,
35
45
  notifyExtensionsMindStop,
46
+ parseCommandArgs,
36
47
  setExtensionEnabled,
37
48
  uninstallNpmExtension
38
49
  };
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ resolveMindName
4
+ } from "./chunk-BTY4WNFE.js";
5
+ import {
6
+ command
7
+ } from "./chunk-TXSA4Q3V.js";
8
+ import "./chunk-O7IGP7ZW.js";
9
+ import {
10
+ daemonFetch
11
+ } from "./chunk-ZX7EAV5J.js";
12
+ import {
13
+ formatFileSize
14
+ } from "./chunk-BV65KRHM.js";
15
+ import "./chunk-BDYXIWA5.js";
16
+ import "./chunk-5N7Y5WAM.js";
17
+ import "./chunk-7KJOFUNN.js";
18
+
19
+ // packages/cli/src/commands/chat/files.ts
20
+ var cmd = command({
21
+ name: "volute chat files",
22
+ description: "List pending incoming files",
23
+ flags: {
24
+ mind: { type: "string", description: "Mind name" }
25
+ },
26
+ async run({ flags }) {
27
+ const mind = resolveMindName(flags);
28
+ const res = await daemonFetch(`/api/minds/${encodeURIComponent(mind)}/files/pending`);
29
+ if (!res.ok) {
30
+ const data = await res.json();
31
+ console.error(data.error ?? `Failed to list pending files: ${res.status}`);
32
+ process.exit(1);
33
+ }
34
+ const pending = await res.json();
35
+ if (pending.length === 0) {
36
+ console.log("No pending files.");
37
+ return;
38
+ }
39
+ const idW = Math.max(2, ...pending.map((p) => p.id.length));
40
+ const senderW = Math.max(6, ...pending.map((p) => p.sender.length));
41
+ const fileW = Math.max(4, ...pending.map((p) => p.filename.length));
42
+ console.log(`${"ID".padEnd(idW)} ${"SENDER".padEnd(senderW)} ${"FILE".padEnd(fileW)} SIZE`);
43
+ for (const p of pending) {
44
+ console.log(
45
+ `${p.id.padEnd(idW)} ${p.sender.padEnd(senderW)} ${p.filename.padEnd(fileW)} ${formatFileSize(p.size)}`
46
+ );
47
+ }
48
+ }
49
+ });
50
+ var run = cmd.execute;
51
+ export {
52
+ run
53
+ };