volute 0.33.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 (255) hide show
  1. package/README.md +7 -6
  2. package/dist/accept-ZBDVVCEU.js +42 -0
  3. package/dist/activity-events-ZW4SDL2C.js +15 -0
  4. package/dist/{ai-service-SBY2WG7O.js → ai-service-LURBEDDB.js} +6 -6
  5. package/dist/{api-client-YPKOZP2O.js → api-client-3A77HMH7.js} +2 -2
  6. package/dist/api.d.ts +1 -5195
  7. package/dist/{archive-INXYFVCW.js → archive-ESU2FUN4.js} +4 -4
  8. package/dist/{auth-GKCDSO4T.js → auth-WX4TESEI.js} +6 -6
  9. package/dist/bridge-PXIO6PS2.js +206 -0
  10. package/dist/chat-QXAJF3FU.js +51 -0
  11. package/dist/{chunk-NNB4WIG7.js → chunk-2TGZJFAT.js} +3 -3
  12. package/dist/{chunk-6LXAAQ43.js → chunk-33ODGMFZ.js} +1 -1
  13. package/dist/{chunk-RPZZSXV3.js → chunk-5N7Y5WAM.js} +21 -2
  14. package/dist/chunk-5T5YMX6S.js +23 -0
  15. package/dist/{chunk-7J3HEVR7.js → chunk-5XJYUFZH.js} +28 -16
  16. package/dist/chunk-7KJOFUNN.js +22 -0
  17. package/dist/{chunk-2NGTS5UU.js → chunk-A2ZLHBHG.js} +2 -2
  18. package/dist/{chunk-KIEPMIM5.js → chunk-AN2W47GW.js} +2 -2
  19. package/dist/{chunk-G53F3JA4.js → chunk-AOB6GVRM.js} +1 -1
  20. package/dist/{chunk-LRCG2JLP.js → chunk-BDYXIWA5.js} +9 -5
  21. package/dist/{chunk-YUIHSKR6.js → chunk-BKF4WQCY.js} +2 -2
  22. package/dist/{chunk-N432I7QH.js → chunk-BMZQYACC.js} +2 -2
  23. package/dist/{chunk-NAOW2CLO.js → chunk-BTY4WNFE.js} +1 -1
  24. package/dist/{chunk-ALEF47VT.js → chunk-BV65KRHM.js} +2 -2
  25. package/dist/{chunk-KVK2DLWI.js → chunk-CORXD635.js} +4 -4
  26. package/dist/{chunk-PVY5W6QN.js → chunk-F7ZNLYKZ.js} +2 -2
  27. package/dist/{chunk-QTUVYI7W.js → chunk-FT5KETXZ.js} +3 -3
  28. package/dist/{chunk-C7I35G4R.js → chunk-IJHIXLVN.js} +44 -8
  29. package/dist/{chunk-JUKK7FPS.js → chunk-J6CJQDWI.js} +37 -28
  30. package/dist/{chunk-4RQBJWQX.js → chunk-LOPXTW6H.js} +1 -1
  31. package/dist/{chunk-RSX4OPZY.js → chunk-MDJGMOSD.js} +8 -137
  32. package/dist/{chunk-LOEJ4HPQ.js → chunk-N446KRP7.js} +3 -3
  33. package/dist/{chunk-I5KY25PQ.js → chunk-N5LMGYXX.js} +2 -2
  34. package/dist/{chunk-G6BSYHPK.js → chunk-NJK5SDGR.js} +1 -1
  35. package/dist/{chunk-D424ZQGI.js → chunk-O7IGP7ZW.js} +11 -3
  36. package/dist/{chunk-M7UL5S3Q.js → chunk-OTC67N2Z.js} +2 -2
  37. package/dist/{chunk-GY5HBI7A.js → chunk-PWQ2ITYG.js} +4 -4
  38. package/dist/{chunk-KTLFDYPT.js → chunk-QCH6K235.js} +1 -1
  39. package/dist/chunk-QHG4OMZL.js +145 -0
  40. package/dist/{chunk-SKLSMHXO.js → chunk-QWTR6AWZ.js} +3 -3
  41. package/dist/chunk-TXSA4Q3V.js +116 -0
  42. package/dist/{chunk-VH33ZWMW.js → chunk-VHJRZM2S.js} +2 -2
  43. package/dist/{chunk-SSI47XP2.js → chunk-VHWGEJ4V.js} +1 -1
  44. package/dist/chunk-VY3RB2V7.js +164 -0
  45. package/dist/chunk-WJPROOU5.js +8314 -0
  46. package/dist/{chunk-RVGLDGMI.js → chunk-WZRZFFCL.js} +25 -27
  47. package/dist/{chunk-JYVGHWEJ.js → chunk-XRQSAMX2.js} +4 -4
  48. package/dist/{chunk-OYAKCAVY.js → chunk-ZSR72JB3.js} +1 -1
  49. package/dist/{chunk-UKVWJRKN.js → chunk-ZX7EAV5J.js} +17 -7
  50. package/dist/cli.js +90 -29
  51. package/dist/clock-HSEKS5AR.js +289 -0
  52. package/dist/{cloud-sync-4NWLMFVH.js → cloud-sync-6JL4C24T.js} +22 -23
  53. package/dist/config-UTS7QULS.js +76 -0
  54. package/dist/connectors/discord-bridge.js +4 -4
  55. package/dist/connectors/slack-bridge.js +4 -4
  56. package/dist/connectors/telegram-bridge.js +4 -4
  57. package/dist/{conversations-AWI5SZW2.js → conversations-2PW57WO2.js} +6 -6
  58. package/dist/create-5BPOOJAN.js +75 -0
  59. package/dist/create-UVCK2CS6.js +50 -0
  60. package/dist/daemon-client-RVIKXGFQ.js +12 -0
  61. package/dist/daemon-restart-HSZ3BCX5.js +65 -0
  62. package/dist/daemon.js +1349 -1211
  63. package/dist/db-BDMH4SZ2.js +20 -0
  64. package/dist/db-BVBJ57TU.js +9 -0
  65. package/dist/delete-L5PAVDGQ.js +42 -0
  66. package/dist/delivery-manager-H5ZVBMCQ.js +31 -0
  67. package/dist/{delivery-router-FL45JL7N.js → delivery-router-HEJSJAHQ.js} +5 -5
  68. package/dist/down-74VXM45A.js +17 -0
  69. package/dist/env-E4XHO2BI.js +223 -0
  70. package/dist/exec-PY7THYH4.js +17 -0
  71. package/dist/export-OAS6QVBN.js +113 -0
  72. package/dist/extension-D74CNM7G.js +89 -0
  73. package/dist/extensions-XDDFY72A.js +49 -0
  74. package/dist/files-CWTK6V3H.js +53 -0
  75. package/dist/import-5A3T7QV4.js +143 -0
  76. package/dist/{isolation-LLAYQYDY.js → isolation-TK5RX2WM.js} +4 -4
  77. package/dist/join-DF5XSJAC.js +67 -0
  78. package/dist/lib-DYEZMGW7.js +6588 -0
  79. package/dist/list-PDMQM7ZV.js +53 -0
  80. package/dist/login-7TE6CIZF.js +60 -0
  81. package/dist/login-GOTAYLXP.js +51 -0
  82. package/dist/logout-6KIA74EV.js +29 -0
  83. package/dist/logout-T4XS6LRU.js +50 -0
  84. package/dist/message-delivery-GRC4W6P7.js +41 -0
  85. package/dist/mind-5IEYKV7I.js +97 -0
  86. package/dist/mind-activity-tracker-QBLIV7ZJ.js +18 -0
  87. package/dist/mind-history-IE2QH7U5.js +275 -0
  88. package/dist/mind-list-GEWHWAL4.js +38 -0
  89. package/dist/mind-manager-HFLB5653.js +31 -0
  90. package/dist/mind-profile-DCBDVF5B.js +53 -0
  91. package/dist/mind-service-X2CAA6W6.js +37 -0
  92. package/dist/mind-sleep-ITCF6OQA.js +47 -0
  93. package/dist/mind-status-X4SX3YUG.js +65 -0
  94. package/dist/mind-wake-KXMKMGWX.js +42 -0
  95. package/dist/{package-U3VFO273.js → package-D2FSVFAX.js} +11 -8
  96. package/dist/read-67VRP2DO.js +91 -0
  97. package/dist/{read-stdin-HQJ7774D.js → read-stdin-3X5VYKNS.js} +2 -2
  98. package/dist/register-SB7NXCOE.js +51 -0
  99. package/dist/{registry-PJ4S5PHQ.js → registry-GBSNW3HG.js} +3 -3
  100. package/dist/reject-MUR2KWJ4.js +40 -0
  101. package/dist/restart-5EGG4JXU.js +42 -0
  102. package/dist/{sandbox-GJOK4QLQ.js → sandbox-R37VIU36.js} +6 -6
  103. package/dist/scheduler-Y7O4CJXL.js +31 -0
  104. package/dist/{schema-PA3M5ZKH.js → schema-XVZ2CLKW.js} +4 -2
  105. package/dist/{seed-QDYVLG74.js → seed-EQORWX77.js} +3 -3
  106. package/dist/seed-check-KJNTL72M.js +35 -0
  107. package/dist/seed-cmd-ZM2XGVU2.js +30 -0
  108. package/dist/seed-create-DRWGGHEI.js +113 -0
  109. package/dist/seed-sprout-JYXGXOP3.js +148 -0
  110. package/dist/send-JBJJQ7CA.js +409 -0
  111. package/dist/service-WNPCNHOX.js +121 -0
  112. package/dist/{setup-XMCBE3LF.js → setup-BJ4YAY26.js} +155 -129
  113. package/dist/{setup-TISPCO22.js → setup-RHJRFURI.js} +4 -4
  114. package/dist/skill-TAAKEYBV.js +389 -0
  115. package/dist/skills/plan-coordinator/SKILL.md +60 -0
  116. package/dist/skills/volute-mind/SKILL.md +9 -227
  117. package/dist/skills/volute-mind/references/extensions.md +34 -0
  118. package/dist/skills/volute-mind/references/integrations.md +48 -0
  119. package/dist/skills/volute-mind/references/routing.md +86 -0
  120. package/dist/skills/volute-mind/references/sleep.md +33 -0
  121. package/dist/skills/volute-mind/references/variants.md +31 -0
  122. package/dist/{skills-7FV7EJTE.js → skills-EKMCQ46K.js} +12 -8
  123. package/dist/sleep-manager-7KFK3USC.js +35 -0
  124. package/dist/spirit-ZFRDXMG7.js +23 -0
  125. package/dist/split-AWVOYOPZ.js +64 -0
  126. package/dist/{sprout-WKLZXUIQ.js → sprout-HE4TITMK.js} +3 -3
  127. package/dist/start-3UXOPXQG.js +39 -0
  128. package/dist/status-ZK34WYIM.js +125 -0
  129. package/dist/stop-3XYIBGFM.js +41 -0
  130. package/dist/system-chat-IDPHYHY4.js +35 -0
  131. package/dist/systems-O43WGQY6.js +52 -0
  132. package/dist/{tailscale-XHQBZROW.js → tailscale-ZIZ2HWJ5.js} +5 -5
  133. package/dist/template-hash-A7FNHTB7.js +9 -0
  134. package/dist/up-77ICEDEW.js +19 -0
  135. package/dist/update-ANE5ZM7F.js +225 -0
  136. package/dist/{update-check-ZD6OOIYQ.js → update-check-UV55CBEP.js} +4 -4
  137. package/dist/upgrade-ZMDGC7M2.js +74 -0
  138. package/dist/variant-QWL2WSRI.js +62 -0
  139. package/dist/{version-notify-NBI2MTJO.js → version-notify-FXSEMXWW.js} +29 -28
  140. package/dist/{volute-config-HD7WWUQC.js → volute-config-D2XVS2YI.js} +2 -2
  141. package/dist/web-assets/assets/index-BhxWKvbB.css +1 -0
  142. package/dist/web-assets/assets/index-CHVKJ9II.js +75 -0
  143. package/dist/web-assets/ext-theme.css +48 -9
  144. package/dist/web-assets/index.html +2 -2
  145. package/dist/web-assets/sw.js +117 -0
  146. package/drizzle/0005_meta_summaries.sql +15 -0
  147. package/drizzle/meta/0005_snapshot.json +7 -0
  148. package/drizzle/meta/_journal.json +7 -0
  149. package/package.json +10 -7
  150. package/packages/extensions/pages/dist/ui/assets/index-DKZLNMED.js +2 -0
  151. package/packages/extensions/pages/dist/ui/index.html +1 -1
  152. package/packages/extensions/pages/skills/pages/SKILL.md +84 -9
  153. package/packages/extensions/plan/dist/ui/assets/index-CJj2gZnZ.css +1 -0
  154. package/packages/extensions/plan/dist/ui/assets/index-FMEJmvQz.js +61 -0
  155. package/packages/extensions/plan/dist/ui/index.html +14 -0
  156. package/packages/extensions/plan/skills/plan/SKILL.md +43 -0
  157. package/packages/extensions/plan/skills/plan/scripts/plan-hook.sh +37 -0
  158. package/templates/_base/home/VOLUTE.md +12 -19
  159. package/templates/_base/src/lib/auto-commit.ts +8 -8
  160. package/templates/_base/src/lib/context-breakdown.ts +450 -0
  161. package/templates/_base/src/lib/format-prefix.ts +17 -0
  162. package/templates/_base/src/lib/hook-loader.ts +8 -2
  163. package/templates/_base/src/lib/router.ts +75 -33
  164. package/templates/_base/src/lib/routing.ts +4 -1
  165. package/templates/_base/src/lib/startup.ts +16 -8
  166. package/templates/_base/src/lib/types.ts +2 -1
  167. package/templates/_base/src/lib/volute-server.ts +75 -8
  168. package/templates/claude/.init/CLAUDE.md +4 -10
  169. package/templates/claude/package.json.tmpl +1 -0
  170. package/templates/claude/src/agent.ts +108 -33
  171. package/templates/claude/src/lib/hooks/reply-instructions.ts +27 -7
  172. package/templates/claude/src/lib/stream-consumer.ts +2 -2
  173. package/templates/claude/src/server.ts +1 -0
  174. package/templates/codex/package.json.tmpl +1 -0
  175. package/templates/codex/src/agent.ts +80 -8
  176. package/templates/codex/src/server.ts +1 -4
  177. package/templates/pi/package.json.tmpl +1 -0
  178. package/templates/pi/src/agent.ts +115 -36
  179. package/templates/pi/src/lib/event-handler.ts +22 -7
  180. package/templates/pi/src/lib/reply-instructions-extension.ts +23 -4
  181. package/templates/pi/src/lib/subagents.ts +20 -17
  182. package/templates/pi/src/server.ts +2 -5
  183. package/dist/accept-D5VBM7JW.js +0 -42
  184. package/dist/activity-events-XJO3P4RR.js +0 -15
  185. package/dist/bridge-TXWWPPOJ.js +0 -207
  186. package/dist/chat-U5ZOME3O.js +0 -68
  187. package/dist/chunk-3Z2DPESO.js +0 -3634
  188. package/dist/chunk-A2A4KLFE.js +0 -1528
  189. package/dist/chunk-K3NQKI34.js +0 -10
  190. package/dist/chunk-NPKSDYA2.js +0 -156
  191. package/dist/chunk-PB65JZK2.js +0 -85
  192. package/dist/clock-BVH3V6E3.js +0 -266
  193. package/dist/config-H2H4UIF7.js +0 -72
  194. package/dist/create-2FK7Z46Y.js +0 -44
  195. package/dist/create-YWD2TIP4.js +0 -71
  196. package/dist/daemon-client-6QXHZ7US.js +0 -12
  197. package/dist/daemon-restart-GOBUKLX7.js +0 -52
  198. package/dist/db-F34YLV7D.js +0 -9
  199. package/dist/db-RA45JBFG.js +0 -16
  200. package/dist/delete-QTGWEDBI.js +0 -35
  201. package/dist/delivery-manager-PFAKEJTC.js +0 -32
  202. package/dist/down-FWWTEKXM.js +0 -15
  203. package/dist/env-JCOF2222.js +0 -191
  204. package/dist/export-SUYRLI5Q.js +0 -112
  205. package/dist/extension-OBTGKQQD.js +0 -175
  206. package/dist/extensions-KYNTVTMO.js +0 -30
  207. package/dist/files-65PMW5IK.js +0 -47
  208. package/dist/history-DKCDI3JO.js +0 -128
  209. package/dist/import-DDUFE7AY.js +0 -23
  210. package/dist/join-I5QEE3LG.js +0 -66
  211. package/dist/list-JQ463EDA.js +0 -41
  212. package/dist/login-D7ETSU4R.js +0 -47
  213. package/dist/login-RIJF2F4G.js +0 -47
  214. package/dist/logout-5MLHZALK.js +0 -40
  215. package/dist/logout-UZJRGY4Z.js +0 -21
  216. package/dist/message-delivery-DFF5SJRM.js +0 -42
  217. package/dist/mind-IOJFLEM5.js +0 -108
  218. package/dist/mind-activity-tracker-F6O4Q2SL.js +0 -18
  219. package/dist/mind-list-WUPMQDYQ.js +0 -30
  220. package/dist/mind-manager-NBJF5D26.js +0 -32
  221. package/dist/mind-profile-P67FEHOY.js +0 -47
  222. package/dist/mind-service-2MQ6UK5N.js +0 -38
  223. package/dist/mind-sleep-WW2IX7JT.js +0 -42
  224. package/dist/mind-status-L3EFFRPR.js +0 -56
  225. package/dist/mind-wake-VSSGW465.js +0 -37
  226. package/dist/read-EBY56C33.js +0 -75
  227. package/dist/register-HD74C4TT.js +0 -47
  228. package/dist/reject-UJKFBHRO.js +0 -40
  229. package/dist/restart-3UCMRUVC.js +0 -33
  230. package/dist/scheduler-ZZ7XGQG6.js +0 -32
  231. package/dist/seed-check-S2IX25RL.js +0 -32
  232. package/dist/seed-cmd-DKOUFEAU.js +0 -36
  233. package/dist/seed-create-4XBBOLRH.js +0 -112
  234. package/dist/seed-sprout-GQEIIQRT.js +0 -132
  235. package/dist/send-QIV2INHB.js +0 -373
  236. package/dist/skill-PSQGRRJX.js +0 -358
  237. package/dist/skills/shared-files/SKILL.md +0 -44
  238. package/dist/skills/shared-files/scripts/merge.ts +0 -72
  239. package/dist/skills/shared-files/scripts/pull.ts +0 -52
  240. package/dist/sleep-manager-JTXSN7NV.js +0 -36
  241. package/dist/spirit-VRONKFMF.js +0 -23
  242. package/dist/split-STOROBYJ.js +0 -63
  243. package/dist/start-K2NCUUCG.js +0 -33
  244. package/dist/status-3JBTFSMI.js +0 -115
  245. package/dist/stop-H26JZDXF.js +0 -32
  246. package/dist/system-chat-JAPOJ3KE.js +0 -36
  247. package/dist/systems-XRI52VCH.js +0 -61
  248. package/dist/template-hash-A6VVKOXJ.js +0 -9
  249. package/dist/up-M5AS6SBV.js +0 -18
  250. package/dist/update-UD543CXX.js +0 -215
  251. package/dist/upgrade-O4Q7WJM3.js +0 -67
  252. package/dist/variant-7TGZHOU3.js +0 -41
  253. package/dist/web-assets/assets/index-CWJrVveV.css +0 -1
  254. package/dist/web-assets/assets/index-DJt14FRI.js +0 -75
  255. package/packages/extensions/pages/dist/ui/assets/index-tLTROSk5.js +0 -2
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ getAllSites,
4
+ getPublishedPages,
5
+ getRecentPages,
6
+ getSystemPages,
7
+ initDb,
8
+ syncPublishedPages,
9
+ syncSystemPages
10
+ } from "./chunk-QHG4OMZL.js";
11
+ import "./chunk-7KJOFUNN.js";
12
+ export {
13
+ getAllSites,
14
+ getPublishedPages,
15
+ getRecentPages,
16
+ getSystemPages,
17
+ initDb,
18
+ syncPublishedPages,
19
+ syncSystemPages
20
+ };
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ getDb
4
+ } from "./chunk-BDYXIWA5.js";
5
+ import "./chunk-5N7Y5WAM.js";
6
+ import "./chunk-7KJOFUNN.js";
7
+ export {
8
+ getDb
9
+ };
@@ -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,11 +6,11 @@ import {
6
6
  registerMindDir,
7
7
  resolveDeliveryMode,
8
8
  resolveRoute
9
- } from "./chunk-SKLSMHXO.js";
10
- import "./chunk-YUIHSKR6.js";
11
- import "./chunk-LRCG2JLP.js";
12
- import "./chunk-RPZZSXV3.js";
13
- import "./chunk-K3NQKI34.js";
9
+ } from "./chunk-QWTR6AWZ.js";
10
+ import "./chunk-BKF4WQCY.js";
11
+ import "./chunk-BDYXIWA5.js";
12
+ import "./chunk-5N7Y5WAM.js";
13
+ import "./chunk-7KJOFUNN.js";
14
14
  export {
15
15
  clearConfigCache,
16
16
  extractTextContent,
@@ -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
+ };
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ exec,
4
+ execInherit,
5
+ gitExec,
6
+ resolveVoluteBin
7
+ } from "./chunk-AN2W47GW.js";
8
+ import "./chunk-VHJRZM2S.js";
9
+ import "./chunk-BDYXIWA5.js";
10
+ import "./chunk-5N7Y5WAM.js";
11
+ import "./chunk-7KJOFUNN.js";
12
+ export {
13
+ exec,
14
+ execInherit,
15
+ gitExec,
16
+ resolveVoluteBin
17
+ };
@@ -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
+ };
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ subcommands
4
+ } from "./chunk-TXSA4Q3V.js";
5
+ import "./chunk-O7IGP7ZW.js";
6
+ import {
7
+ daemonFetch
8
+ } from "./chunk-ZX7EAV5J.js";
9
+ import "./chunk-7KJOFUNN.js";
10
+
11
+ // packages/cli/src/commands/extension.ts
12
+ async function listExtensions() {
13
+ const res = await daemonFetch("/api/extensions/all");
14
+ if (!res.ok) {
15
+ const body = await res.json().catch(() => ({ error: "Unknown error" }));
16
+ console.error(`Error: ${body.error}`);
17
+ process.exit(1);
18
+ }
19
+ const extensions = await res.json();
20
+ if (extensions.length === 0) {
21
+ console.log("No extensions found.");
22
+ return;
23
+ }
24
+ console.log("Extensions:\n");
25
+ for (const ext of extensions) {
26
+ const status = ext.enabled ? "enabled" : "disabled";
27
+ console.log(` ${ext.id} \u2014 ${ext.name} v${ext.version} (${ext.source}, ${status})`);
28
+ if (ext.description) console.log(` ${ext.description}`);
29
+ }
30
+ }
31
+ async function installExtension(args) {
32
+ const pkg = args[0];
33
+ if (!pkg) {
34
+ console.error("Usage: volute extension install <package>");
35
+ process.exit(1);
36
+ }
37
+ console.log(`Installing "${pkg}"...`);
38
+ const res = await daemonFetch("/api/extensions/install", {
39
+ method: "POST",
40
+ headers: { "Content-Type": "application/json" },
41
+ body: JSON.stringify({ package: pkg })
42
+ });
43
+ if (!res.ok) {
44
+ const body = await res.json().catch(() => ({ error: "Unknown error" }));
45
+ console.error(`Failed to install "${pkg}": ${body.error}`);
46
+ process.exit(1);
47
+ }
48
+ console.log(`Installed "${pkg}".`);
49
+ console.log("Restart the daemon (`volute restart`) to load the extension.");
50
+ }
51
+ async function uninstallExtension(args) {
52
+ const pkg = args[0];
53
+ if (!pkg) {
54
+ console.error("Usage: volute extension uninstall <package>");
55
+ process.exit(1);
56
+ }
57
+ const res = await daemonFetch(`/api/extensions/uninstall/${encodeURIComponent(pkg)}`, {
58
+ method: "DELETE"
59
+ });
60
+ if (!res.ok) {
61
+ const body = await res.json().catch(() => ({ error: "Unknown error" }));
62
+ console.error(`Failed to uninstall "${pkg}": ${body.error}`);
63
+ process.exit(1);
64
+ }
65
+ console.log(`Removed "${pkg}".`);
66
+ console.log("Restart the daemon (`volute restart`) to unload the extension.");
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;
87
+ export {
88
+ run
89
+ };
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ getAllDiscoveredExtensions,
4
+ getExtensionStandardSkills,
5
+ getLoadedExtensions,
6
+ installNpmExtension,
7
+ loadAllExtensions,
8
+ notifyExtensionsDaemonStart,
9
+ notifyExtensionsDaemonStop,
10
+ notifyExtensionsMindStart,
11
+ notifyExtensionsMindStop,
12
+ parseCommandArgs,
13
+ setExtensionEnabled,
14
+ uninstallNpmExtension
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";
35
+ import "./chunk-7KJOFUNN.js";
36
+ export {
37
+ getAllDiscoveredExtensions,
38
+ getExtensionStandardSkills,
39
+ getLoadedExtensions,
40
+ installNpmExtension,
41
+ loadAllExtensions,
42
+ notifyExtensionsDaemonStart,
43
+ notifyExtensionsDaemonStop,
44
+ notifyExtensionsMindStart,
45
+ notifyExtensionsMindStop,
46
+ parseCommandArgs,
47
+ setExtensionEnabled,
48
+ uninstallNpmExtension
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
+ };