volute 0.34.0 → 0.36.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 (227) 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-PWOGSMRL.js} +4 -4
  4. package/dist/{ai-service-PSILB5WD.js → ai-service-GSZWIETO.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-Y2YEOCGB.js} +3 -3
  8. package/dist/{auth-ZFZXJZDQ.js → auth-YTQME4EV.js} +5 -5
  9. package/dist/bridge-PXIO6PS2.js +206 -0
  10. package/dist/chat-ED7YOGKO.js +51 -0
  11. package/dist/{chunk-6LXAAQ43.js → chunk-33ODGMFZ.js} +1 -1
  12. package/dist/{chunk-G53F3JA4.js → chunk-46DYYHN6.js} +8 -3
  13. package/dist/{chunk-FYCALD4Q.js → chunk-5T5YMX6S.js} +1 -1
  14. package/dist/{chunk-B2BVAIZ4.js → chunk-6F3YNULE.js} +76 -24
  15. package/dist/{chunk-N7BLAHNE.js → chunk-75AJ54GM.js} +16 -5
  16. package/dist/{chunk-4JSR7YO7.js → chunk-7PTQGPJY.js} +29 -13
  17. package/dist/{chunk-XWXBJQBE.js → chunk-B35VNNSS.js} +4 -4
  18. package/dist/{chunk-V45JXOWY.js → chunk-BOLJUV77.js} +4 -4
  19. package/dist/{chunk-NAOW2CLO.js → chunk-BTY4WNFE.js} +1 -1
  20. package/dist/{chunk-OYAKCAVY.js → chunk-CU6OFXMM.js} +1 -1
  21. package/dist/{chunk-7F2SW2KD.js → chunk-DJT5Y4UF.js} +3 -3
  22. package/dist/{chunk-BM474GX6.js → chunk-DMV5P2LU.js} +4 -4
  23. package/dist/{chunk-TAHX36HZ.js → chunk-DQ7VBXAP.js} +2014 -436
  24. package/dist/{chunk-N3DNFPVA.js → chunk-GBDVNPN2.js} +15 -13
  25. package/dist/{chunk-E5C7OWZ2.js → chunk-IIWF2IPD.js} +150 -190
  26. package/dist/{chunk-PVY5W6QN.js → chunk-KAB6UGOL.js} +2 -2
  27. package/dist/{chunk-BDK73LK6.js → chunk-L72WYMF7.js} +2 -2
  28. package/dist/{chunk-G6BSYHPK.js → chunk-LGNUFVMR.js} +1 -1
  29. package/dist/{chunk-4RQBJWQX.js → chunk-LOPXTW6H.js} +1 -1
  30. package/dist/{chunk-BFWHBQK4.js → chunk-M5RYAA5I.js} +3 -3
  31. package/dist/{chunk-V6ZCNULL.js → chunk-N2AUHW4C.js} +37 -28
  32. package/dist/{chunk-6OWJXUAR.js → chunk-NUX47Y2V.js} +19 -4
  33. package/dist/{chunk-D424ZQGI.js → chunk-O7IGP7ZW.js} +11 -3
  34. package/dist/{chunk-U5BTYSAL.js → chunk-PJ4IPTIN.js} +2 -2
  35. package/dist/{chunk-BTWAGDV5.js → chunk-PY557GDR.js} +3 -3
  36. package/dist/{chunk-47ZPNLF4.js → chunk-PZYJBOQP.js} +8 -137
  37. package/dist/chunk-QHG4OMZL.js +145 -0
  38. package/dist/chunk-RG5TOL4O.js +18 -0
  39. package/dist/{chunk-6WAWMWR5.js → chunk-SWW6AUVW.js} +2 -2
  40. package/dist/{chunk-YUIHSKR6.js → chunk-T2TP6ZC6.js} +20 -8
  41. package/dist/chunk-TWAN7ZNO.js +164 -0
  42. package/dist/chunk-TXSA4Q3V.js +116 -0
  43. package/dist/{chunk-KTLFDYPT.js → chunk-UI7RPV2B.js} +1 -1
  44. package/dist/{chunk-SSI47XP2.js → chunk-VHWGEJ4V.js} +1 -1
  45. package/dist/{chunk-IS7WJ56Q.js → chunk-X2J7QUFH.js} +3 -3
  46. package/dist/{chunk-M3K5AARV.js → chunk-YDBAY3NA.js} +2 -2
  47. package/dist/{chunk-MLOQKQNB.js → chunk-YTWZORJN.js} +2 -2
  48. package/dist/{chunk-2IOP6PHB.js → chunk-ZTVKQOU7.js} +2 -2
  49. package/dist/{chunk-PLDWHR4D.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-TG3TIX5H.js → cloud-sync-BOCZSDIA.js} +20 -22
  53. package/dist/config-UTS7QULS.js +76 -0
  54. package/dist/connectors/discord-bridge.js +3 -3
  55. package/dist/connectors/slack-bridge.js +3 -3
  56. package/dist/connectors/telegram-bridge.js +3 -3
  57. package/dist/{conversations-HL2JP5GI.js → conversations-HH3CJD4E.js} +15 -9
  58. package/dist/create-5BPOOJAN.js +75 -0
  59. package/dist/create-QBEPSD2Z.js +50 -0
  60. package/dist/daemon-client-RVIKXGFQ.js +12 -0
  61. package/dist/daemon-restart-SIR3UR4B.js +65 -0
  62. package/dist/daemon.js +1186 -1989
  63. package/dist/{db-PLEDCBHZ.js → db-BDMH4SZ2.js} +7 -3
  64. package/dist/{db-RYX3SS2W.js → db-URORGSXQ.js} +2 -2
  65. package/dist/delete-L5PAVDGQ.js +42 -0
  66. package/dist/delivery-manager-WTGIPBGY.js +30 -0
  67. package/dist/{delivery-router-D5ELDMS2.js → delivery-router-VSULHXNH.js} +4 -4
  68. package/dist/down-DGGLZ5TA.js +17 -0
  69. package/dist/env-E4XHO2BI.js +223 -0
  70. package/dist/{exec-DVLXKRIO.js → exec-X3C6ZZTQ.js} +4 -4
  71. package/dist/export-HTFOHOKL.js +113 -0
  72. package/dist/{extension-PM42QCID.js → extension-AKZ46YSL.js} +46 -35
  73. package/dist/extensions-OOSFVH7U.js +50 -0
  74. package/dist/files-H2YLRD37.js +53 -0
  75. package/dist/import-OL5BZX7S.js +143 -0
  76. package/dist/{isolation-62MKDZN3.js → isolation-N74RWOUX.js} +3 -3
  77. package/dist/join-DF5XSJAC.js +67 -0
  78. package/dist/list-GJ4RUQQT.js +59 -0
  79. package/dist/login-GOTAYLXP.js +51 -0
  80. package/dist/login-JXRVMBRB.js +60 -0
  81. package/dist/logout-6KIA74EV.js +29 -0
  82. package/dist/logout-FW243JBU.js +50 -0
  83. package/dist/message-delivery-YORUXKDQ.js +40 -0
  84. package/dist/mind-6VJJHF65.js +97 -0
  85. package/dist/{mind-activity-tracker-2ACNHA7B.js → mind-activity-tracker-66UVYIFW.js} +5 -5
  86. package/dist/mind-history-MII2SK7F.js +342 -0
  87. package/dist/mind-list-GEWHWAL4.js +38 -0
  88. package/dist/mind-manager-TJ2SUPRX.js +30 -0
  89. package/dist/mind-profile-DCBDVF5B.js +53 -0
  90. package/dist/mind-service-E7FM2WZF.js +36 -0
  91. package/dist/mind-sleep-ITCF6OQA.js +47 -0
  92. package/dist/mind-status-X4SX3YUG.js +65 -0
  93. package/dist/mind-wake-KXMKMGWX.js +42 -0
  94. package/dist/{package-V2WHWVG6.js → package-3W2MEXHB.js} +5 -5
  95. package/dist/read-ZUDG4JWU.js +91 -0
  96. package/dist/{read-stdin-PIRM6A2Y.js → read-stdin-3X5VYKNS.js} +1 -1
  97. package/dist/register-SB7NXCOE.js +51 -0
  98. package/dist/{registry-UYV5S6QT.js → registry-YPHK534W.js} +2 -2
  99. package/dist/reject-MUR2KWJ4.js +40 -0
  100. package/dist/restart-5EGG4JXU.js +42 -0
  101. package/dist/{sandbox-SI5HMBP3.js → sandbox-LP6YRAXS.js} +5 -5
  102. package/dist/scheduler-FRJ5DK24.js +30 -0
  103. package/dist/{schema-ETMABTW4.js → schema-MISD3JFG.js} +3 -1
  104. package/dist/{seed-WNGI6PNW.js → seed-CEC4RC23.js} +2 -2
  105. package/dist/seed-check-KJNTL72M.js +35 -0
  106. package/dist/seed-cmd-WTTG7SRQ.js +30 -0
  107. package/dist/seed-create-M6RCC6RP.js +113 -0
  108. package/dist/seed-sprout-ZKCHFJKH.js +148 -0
  109. package/dist/send-LXUT2GGR.js +409 -0
  110. package/dist/service-M6N3RUYU.js +121 -0
  111. package/dist/{setup-Z3DEVWV7.js → setup-PJOF5UV5.js} +153 -127
  112. package/dist/{setup-GGMKENLN.js → setup-PMJHCZQX.js} +5 -3
  113. package/dist/skill-TAAKEYBV.js +389 -0
  114. package/dist/skills/tending/SKILL.md +52 -0
  115. package/dist/skills/volute-mind/SKILL.md +3 -7
  116. package/dist/skills/volute-mind/references/extensions.md +8 -11
  117. package/dist/{skills-Q6VZ2UGD.js → skills-2PTRTBQP.js} +7 -7
  118. package/dist/sleep-manager-WAZWMFJT.js +34 -0
  119. package/dist/spirit-6KVDIROQ.js +24 -0
  120. package/dist/split-AWVOYOPZ.js +64 -0
  121. package/dist/{sprout-E3HJIV2Z.js → sprout-WX2FFYLP.js} +2 -2
  122. package/dist/src-FQE4BHRG.js +617 -0
  123. package/dist/src-GW6FP6VL.js +425 -0
  124. package/dist/src-QEOLMAYC.js +2133 -0
  125. package/dist/start-3UXOPXQG.js +39 -0
  126. package/dist/status-3IVSLJDN.js +125 -0
  127. package/dist/stop-3XYIBGFM.js +41 -0
  128. package/dist/system-chat-2IFS5HCX.js +34 -0
  129. package/dist/systems-O43WGQY6.js +52 -0
  130. package/dist/{tailscale-ZEUK7GKZ.js → tailscale-DZU4WM3E.js} +4 -4
  131. package/dist/{template-hash-EJRTKE36.js → template-hash-6ITI3WC4.js} +2 -2
  132. package/dist/up-4SCIUIMG.js +19 -0
  133. package/dist/update-RIQYUPVN.js +225 -0
  134. package/dist/{update-check-X3YG4WVP.js → update-check-4TIJKVGD.js} +3 -3
  135. package/dist/upgrade-ZMDGC7M2.js +74 -0
  136. package/dist/variant-QWL2WSRI.js +62 -0
  137. package/dist/{version-notify-YCH4UVQ2.js → version-notify-UXSHBZ35.js} +27 -27
  138. package/dist/{volute-config-WBKYJGYQ.js → volute-config-V7UFFBG3.js} +1 -1
  139. package/dist/web-assets/assets/index-C-eYso8Y.js +75 -0
  140. package/dist/web-assets/assets/index-CCv_fSte.css +1 -0
  141. package/dist/web-assets/index.html +2 -2
  142. package/dist/web-assets/sw.js +117 -0
  143. package/drizzle/0006_channels.sql +17 -0
  144. package/drizzle/0007_drop_conversation_name_title.sql +11 -0
  145. package/drizzle/0008_performance_indexes.sql +6 -0
  146. package/drizzle/meta/0006_snapshot.json +7 -0
  147. package/drizzle/meta/0007_snapshot.json +7 -0
  148. package/drizzle/meta/_journal.json +21 -0
  149. package/package.json +5 -5
  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/templates/_base/home/.config/routes.json +2 -2
  154. package/templates/_base/home/VOLUTE.md +1 -2
  155. package/templates/_base/src/lib/auto-commit.ts +8 -8
  156. package/templates/_base/src/lib/format-prefix.ts +1 -7
  157. package/templates/_base/src/lib/volute-server.ts +6 -0
  158. package/templates/claude/.init/.config/routes.json +2 -2
  159. package/templates/claude/src/agent.ts +8 -1
  160. package/templates/codex/.init/.config/routes.json +2 -2
  161. package/templates/pi/.init/.config/routes.json +2 -2
  162. package/dist/accept-TW6V4WI4.js +0 -42
  163. package/dist/bridge-O753D5F4.js +0 -207
  164. package/dist/chat-BHYX7DJ4.js +0 -68
  165. package/dist/chunk-47XDEWWV.js +0 -156
  166. package/dist/chunk-CVL5IGIR.js +0 -2084
  167. package/dist/chunk-PB65JZK2.js +0 -85
  168. package/dist/clock-3X4DSC2N.js +0 -281
  169. package/dist/config-OROA5DUA.js +0 -72
  170. package/dist/create-3SEKKI6P.js +0 -71
  171. package/dist/create-UOSOQ2HN.js +0 -44
  172. package/dist/daemon-client-WOAQXXBM.js +0 -12
  173. package/dist/daemon-restart-5ABHNXJZ.js +0 -52
  174. package/dist/delete-KYOVWR23.js +0 -35
  175. package/dist/delivery-manager-2BR5NZKF.js +0 -32
  176. package/dist/down-QVFN4UPK.js +0 -15
  177. package/dist/env-R34DT7XL.js +0 -195
  178. package/dist/export-6ZXAXATG.js +0 -112
  179. package/dist/extensions-BBGVL5JC.js +0 -38
  180. package/dist/files-VQV2VZQO.js +0 -47
  181. package/dist/import-MK2I2T6F.js +0 -23
  182. package/dist/join-DGYHTJUH.js +0 -66
  183. package/dist/list-C644WTHV.js +0 -49
  184. package/dist/login-IIGEQPHL.js +0 -47
  185. package/dist/login-KZQLMAWE.js +0 -47
  186. package/dist/logout-AGTZVRGP.js +0 -40
  187. package/dist/logout-KD6GXIJJ.js +0 -21
  188. package/dist/message-delivery-V3R6NXJP.js +0 -42
  189. package/dist/mind-BI4EPBVZ.js +0 -108
  190. package/dist/mind-history-WOYFLQAI.js +0 -264
  191. package/dist/mind-list-6VPM7GUQ.js +0 -30
  192. package/dist/mind-manager-MWW3BTS4.js +0 -32
  193. package/dist/mind-profile-WPG42U5Y.js +0 -47
  194. package/dist/mind-service-VIKZJK2M.js +0 -38
  195. package/dist/mind-sleep-XDISJY74.js +0 -42
  196. package/dist/mind-status-7FTZWPZF.js +0 -56
  197. package/dist/mind-wake-KIIKEI3A.js +0 -37
  198. package/dist/read-H5C26YO7.js +0 -85
  199. package/dist/register-J27WP33N.js +0 -47
  200. package/dist/reject-OEANJYIA.js +0 -40
  201. package/dist/restart-V5EGYBJG.js +0 -33
  202. package/dist/scheduler-AGG3L2FO.js +0 -32
  203. package/dist/seed-check-PXTH7YXS.js +0 -32
  204. package/dist/seed-cmd-VENFTGS3.js +0 -36
  205. package/dist/seed-create-663ALOKH.js +0 -112
  206. package/dist/seed-sprout-EH3AGKAI.js +0 -132
  207. package/dist/send-7FUUUZZH.js +0 -386
  208. package/dist/skill-DKNYJS4P.js +0 -362
  209. package/dist/skills/shared-files/SKILL.md +0 -44
  210. package/dist/skills/shared-files/scripts/merge.ts +0 -72
  211. package/dist/skills/shared-files/scripts/pull.ts +0 -52
  212. package/dist/sleep-manager-BJK2ROPX.js +0 -36
  213. package/dist/spirit-4JP4TY4C.js +0 -23
  214. package/dist/split-3YPMS2CL.js +0 -63
  215. package/dist/start-W3TPKX4D.js +0 -33
  216. package/dist/status-4OVFXFEJ.js +0 -115
  217. package/dist/stop-GTT6YWYO.js +0 -32
  218. package/dist/system-channel-DXD2JBOU.js +0 -36
  219. package/dist/system-chat-TYLOL7SX.js +0 -36
  220. package/dist/systems-AYLO727G.js +0 -61
  221. package/dist/up-PA7F2CXE.js +0 -18
  222. package/dist/update-HG4LCUSG.js +0 -215
  223. package/dist/upgrade-YGNIDICG.js +0 -67
  224. package/dist/variant-MZUMRTQO.js +0 -41
  225. package/dist/web-assets/assets/index-DiiwC-CZ.css +0 -1
  226. package/dist/web-assets/assets/index-d6y5b9Ij.js +0 -75
  227. package/packages/extensions/pages/dist/ui/assets/index-tLTROSk5.js +0 -2
@@ -1,37 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- resolveMindName
4
- } from "./chunk-NAOW2CLO.js";
5
- import {
6
- parseArgs
7
- } from "./chunk-D424ZQGI.js";
8
- import {
9
- daemonFetch
10
- } from "./chunk-PLDWHR4D.js";
11
- import "./chunk-N7BLAHNE.js";
12
- import "./chunk-4JSR7YO7.js";
13
- import "./chunk-7KJOFUNN.js";
14
-
15
- // src/commands/mind-wake.ts
16
- async function run(args) {
17
- const { positional, flags } = parseArgs(args, {
18
- mind: { type: "string" }
19
- });
20
- const name = positional[0] || resolveMindName(flags);
21
- if (!name) {
22
- console.error("Usage: volute mind wake <name>");
23
- process.exit(1);
24
- }
25
- const res = await daemonFetch(`/api/minds/${encodeURIComponent(name)}/wake`, {
26
- method: "POST"
27
- });
28
- const data = await res.json();
29
- if (!res.ok) {
30
- console.error(data.error || "Failed to wake mind");
31
- process.exit(1);
32
- }
33
- console.log(`${name} is waking up`);
34
- }
35
- export {
36
- run
37
- };
@@ -1,85 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- compactTime,
4
- isCompact
5
- } from "./chunk-FYCALD4Q.js";
6
- import {
7
- resolveMindName
8
- } from "./chunk-NAOW2CLO.js";
9
- import {
10
- parseArgs
11
- } from "./chunk-D424ZQGI.js";
12
- import {
13
- daemonFetch
14
- } from "./chunk-PLDWHR4D.js";
15
- import "./chunk-N7BLAHNE.js";
16
- import "./chunk-4JSR7YO7.js";
17
- import "./chunk-7KJOFUNN.js";
18
-
19
- // src/commands/chat/read.ts
20
- async function resolveConversationId(mindName, input) {
21
- if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(input)) {
22
- return input;
23
- }
24
- const res = await daemonFetch(`/api/minds/${encodeURIComponent(mindName)}/conversations`);
25
- if (!res.ok) {
26
- return input;
27
- }
28
- const convs = await res.json();
29
- const cleaned = input.replace(/^[@#]/, "");
30
- const lower = cleaned.toLowerCase();
31
- const channelMatch = convs.find((c) => c.type === "channel" && c.name?.toLowerCase() === lower);
32
- if (channelMatch) return channelMatch.id;
33
- const titleMatch = convs.find((c) => c.title?.toLowerCase() === lower);
34
- if (titleMatch) return titleMatch.id;
35
- const dmMatch = convs.find(
36
- (c) => c.type === "dm" && c.title?.toLowerCase().split(/,\s*/).some((name) => name === lower)
37
- );
38
- if (dmMatch) return dmMatch.id;
39
- const prefixMatch = convs.find((c) => c.id.startsWith(input));
40
- if (prefixMatch) return prefixMatch.id;
41
- return input;
42
- }
43
- async function run(args) {
44
- const { positional, flags } = parseArgs(args, {
45
- mind: { type: "string" },
46
- limit: { type: "number" }
47
- });
48
- const input = positional[0];
49
- if (!input) {
50
- console.error("Usage: volute chat read <conversation> [--limit N] [--mind <name>]");
51
- process.exit(1);
52
- }
53
- const mindName = resolveMindName(flags);
54
- const conversationId = await resolveConversationId(mindName, input);
55
- const limit = String(flags.limit ?? 50);
56
- const res = await daemonFetch(
57
- `/api/minds/${encodeURIComponent(mindName)}/conversations/${encodeURIComponent(conversationId)}/messages?limit=${limit}`
58
- );
59
- if (!res.ok) {
60
- console.error(`Failed to read conversation: ${res.status}`);
61
- process.exit(1);
62
- }
63
- const data = await res.json();
64
- if (!Array.isArray(data.items)) {
65
- console.error("Unexpected response format from server");
66
- process.exit(1);
67
- }
68
- const compact = isCompact();
69
- for (const msg of data.items) {
70
- const sender = msg.sender_name ?? msg.role;
71
- const text = Array.isArray(msg.content) ? msg.content.filter((b) => b.type === "text").map((b) => b.text).join("") : msg.content;
72
- if (compact) {
73
- const time = compactTime(msg.created_at);
74
- console.log(`[${time}] ${sender}: ${text}`);
75
- } else {
76
- const time = new Date(
77
- msg.created_at.endsWith("Z") ? msg.created_at : `${msg.created_at}Z`
78
- ).toLocaleString();
79
- console.log(`[${time}] ${sender}: ${text}`);
80
- }
81
- }
82
- }
83
- export {
84
- run
85
- };
@@ -1,47 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- promptLine
4
- } from "./chunk-SSI47XP2.js";
5
- import {
6
- parseArgs
7
- } from "./chunk-D424ZQGI.js";
8
- import {
9
- daemonFetch
10
- } from "./chunk-PLDWHR4D.js";
11
- import "./chunk-N7BLAHNE.js";
12
- import "./chunk-4JSR7YO7.js";
13
- import "./chunk-7KJOFUNN.js";
14
-
15
- // src/commands/systems/register.ts
16
- async function run(args) {
17
- const { flags } = parseArgs(args, {
18
- name: { type: "string" }
19
- });
20
- let name = flags.name;
21
- if (!name) {
22
- if (!process.stdin.isTTY) {
23
- console.error("Usage: volute systems register --name <system-name>");
24
- process.exit(1);
25
- }
26
- name = await promptLine("Choose a system name: ");
27
- if (!name) {
28
- console.error("No name provided.");
29
- process.exit(1);
30
- }
31
- }
32
- const res = await daemonFetch("/api/system/register", {
33
- method: "POST",
34
- headers: { "Content-Type": "application/json" },
35
- body: JSON.stringify({ name })
36
- });
37
- if (!res.ok) {
38
- const body = await res.json().catch(() => ({ error: `HTTP ${res.status}` }));
39
- console.error(`Registration failed: ${body.error}`);
40
- process.exit(1);
41
- }
42
- const { system } = await res.json();
43
- console.log(`Registered as "${system}". Credentials saved.`);
44
- }
45
- export {
46
- run
47
- };
@@ -1,40 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- resolveMindName
4
- } from "./chunk-NAOW2CLO.js";
5
- import {
6
- parseArgs
7
- } from "./chunk-D424ZQGI.js";
8
- import {
9
- daemonFetch
10
- } from "./chunk-PLDWHR4D.js";
11
- import "./chunk-N7BLAHNE.js";
12
- import "./chunk-4JSR7YO7.js";
13
- import "./chunk-7KJOFUNN.js";
14
-
15
- // src/commands/chat/reject.ts
16
- async function run(args) {
17
- const { positional, flags } = parseArgs(args, {
18
- mind: { type: "string" }
19
- });
20
- const mind = resolveMindName(flags);
21
- const id = positional[0];
22
- if (!id) {
23
- console.error("Usage: volute chat reject <id> [--mind <name>]");
24
- process.exit(1);
25
- }
26
- const res = await daemonFetch(`/api/minds/${encodeURIComponent(mind)}/files/reject`, {
27
- method: "POST",
28
- headers: { "Content-Type": "application/json" },
29
- body: JSON.stringify({ id })
30
- });
31
- if (!res.ok) {
32
- const data = await res.json();
33
- console.error(data.error ?? `Failed to reject file: ${res.status}`);
34
- process.exit(1);
35
- }
36
- console.log(`File rejected: ${id}`);
37
- }
38
- export {
39
- run
40
- };
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- resolveMindName
4
- } from "./chunk-NAOW2CLO.js";
5
- import {
6
- getClient,
7
- urlOf
8
- } from "./chunk-4RQBJWQX.js";
9
- import {
10
- daemonFetch
11
- } from "./chunk-PLDWHR4D.js";
12
- import "./chunk-N7BLAHNE.js";
13
- import "./chunk-4JSR7YO7.js";
14
- import "./chunk-7KJOFUNN.js";
15
-
16
- // src/commands/restart.ts
17
- async function run(args) {
18
- const name = resolveMindName({ mind: args[0] });
19
- const client = getClient();
20
- const res = await daemonFetch(
21
- urlOf(client.api.minds[":name"].restart.$url({ param: { name } })),
22
- { method: "POST" }
23
- );
24
- const data = await res.json();
25
- if (!res.ok) {
26
- console.error(data.error || "Failed to restart mind");
27
- process.exit(1);
28
- }
29
- console.log(`${name} restarted on port ${data.port}`);
30
- }
31
- export {
32
- run
33
- };
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- Scheduler,
4
- getScheduler,
5
- initScheduler
6
- } from "./chunk-TAHX36HZ.js";
7
- import "./chunk-CVL5IGIR.js";
8
- import "./chunk-B2BVAIZ4.js";
9
- import "./chunk-G53F3JA4.js";
10
- import "./chunk-N3DNFPVA.js";
11
- import "./chunk-OYAKCAVY.js";
12
- import "./chunk-V45JXOWY.js";
13
- import "./chunk-IS7WJ56Q.js";
14
- import "./chunk-BTWAGDV5.js";
15
- import "./chunk-M3K5AARV.js";
16
- import "./chunk-PB65JZK2.js";
17
- import "./chunk-BM474GX6.js";
18
- import "./chunk-E5C7OWZ2.js";
19
- import "./chunk-XWXBJQBE.js";
20
- import "./chunk-BFWHBQK4.js";
21
- import "./chunk-YUIHSKR6.js";
22
- import "./chunk-U5BTYSAL.js";
23
- import "./chunk-BDK73LK6.js";
24
- import "./chunk-6OWJXUAR.js";
25
- import "./chunk-N7BLAHNE.js";
26
- import "./chunk-4JSR7YO7.js";
27
- import "./chunk-7KJOFUNN.js";
28
- export {
29
- Scheduler,
30
- getScheduler,
31
- initScheduler
32
- };
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- parseArgs
4
- } from "./chunk-D424ZQGI.js";
5
- import "./chunk-7KJOFUNN.js";
6
-
7
- // src/commands/seed-check.ts
8
- async function run(args) {
9
- const { positional } = parseArgs(args, {});
10
- const name = positional[0];
11
- if (!name) {
12
- console.error("Usage: volute seed check <name>");
13
- process.exit(1);
14
- }
15
- const { daemonFetch } = await import("./daemon-client-WOAQXXBM.js");
16
- const res = await daemonFetch(`/api/minds/${encodeURIComponent(name)}/seed-check`);
17
- if (!res.ok) {
18
- if (res.status === 404) {
19
- console.log(`Seed "${name}" not found \u2014 it may have been deleted or already sprouted.`);
20
- } else {
21
- console.error(`seed check failed for ${name}: HTTP ${res.status}`);
22
- }
23
- return;
24
- }
25
- const data = await res.json();
26
- if (data.output) {
27
- console.log(data.output);
28
- }
29
- }
30
- export {
31
- run
32
- };
@@ -1,36 +0,0 @@
1
- #!/usr/bin/env node
2
- import "./chunk-7KJOFUNN.js";
3
-
4
- // src/commands/seed-cmd.ts
5
- async function run(args) {
6
- const subcommand = args[0];
7
- switch (subcommand) {
8
- case "create":
9
- await import("./seed-create-663ALOKH.js").then((m) => m.run(args.slice(1)));
10
- break;
11
- case "sprout":
12
- await import("./seed-sprout-EH3AGKAI.js").then((m) => m.run(args.slice(1)));
13
- break;
14
- case "check":
15
- await import("./seed-check-PXTH7YXS.js").then((m) => m.run(args.slice(1)));
16
- break;
17
- case "--help":
18
- case "-h":
19
- case void 0:
20
- printUsage();
21
- break;
22
- default:
23
- printUsage();
24
- process.exit(1);
25
- }
26
- }
27
- function printUsage() {
28
- console.log(`volute seed \u2014 seed lifecycle
29
-
30
- volute seed create <name> Plant a new seed
31
- volute seed sprout Complete orientation and become a full mind
32
- volute seed check <name> Check seed readiness (used by spirit scheduler)`);
33
- }
34
- export {
35
- run
36
- };
@@ -1,112 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- promptLine
4
- } from "./chunk-SSI47XP2.js";
5
- import {
6
- parseArgs
7
- } from "./chunk-D424ZQGI.js";
8
- import "./chunk-7KJOFUNN.js";
9
-
10
- // src/commands/seed-create.ts
11
- async function chooseModel(daemonFetch) {
12
- const res = await daemonFetch("/api/system/ai/models");
13
- if (!res.ok) {
14
- console.error(`Failed to fetch AI models (HTTP ${res.status}). Is the daemon running?`);
15
- process.exit(1);
16
- }
17
- const models = await res.json();
18
- const enabled = models.filter((m) => m.enabled);
19
- if (enabled.length === 0) return void 0;
20
- console.log("\nAvailable models:");
21
- for (let i = 0; i < enabled.length; i++) {
22
- console.log(` ${i + 1}) ${enabled[i].name} (${enabled[i].provider})`);
23
- }
24
- const answer = await promptLine(`
25
- Choose a model [1-${enabled.length}]: `);
26
- const idx = parseInt(answer, 10) - 1;
27
- if (Number.isNaN(idx) || idx < 0 || idx >= enabled.length) {
28
- console.error("Invalid selection");
29
- process.exit(1);
30
- }
31
- const chosen = enabled[idx];
32
- return `${chosen.provider}:${chosen.id}`;
33
- }
34
- async function run(args) {
35
- const { positional, flags } = parseArgs(args, {
36
- template: { type: "string" },
37
- model: { type: "string" },
38
- description: { type: "string" },
39
- skills: { type: "string" },
40
- "created-by": { type: "string" }
41
- });
42
- const name = positional[0];
43
- if (!name) {
44
- console.error(
45
- "Usage: volute seed create <name> [--template <name>] [--model <model>] [--description <text>] [--skills <list|none>] [--created-by <username>]"
46
- );
47
- process.exit(1);
48
- }
49
- const skills = flags.skills === "none" ? [] : flags.skills ? flags.skills.split(",") : void 0;
50
- const createdBy = flags["created-by"];
51
- const { daemonFetch } = await import("./daemon-client-WOAQXXBM.js");
52
- const { getClient, urlOf } = await import("./api-client-XUXOB7LI.js");
53
- const client = getClient();
54
- let model = flags.model;
55
- let template = flags.template;
56
- if (!template) {
57
- const { resolveTemplate } = await import("./ai-service-PSILB5WD.js");
58
- template = resolveTemplate(model);
59
- }
60
- if (template !== "claude" && !model) {
61
- if (process.env.VOLUTE_MIND || !process.stdin.isTTY) {
62
- const { getSpiritModel } = await import("./spirit-4JP4TY4C.js");
63
- const { qualifyModelId } = await import("./ai-service-PSILB5WD.js");
64
- const spiritModel = getSpiritModel();
65
- if (spiritModel) {
66
- model = template === "pi" ? qualifyModelId(spiritModel) : spiritModel;
67
- }
68
- }
69
- if (!model) {
70
- model = await chooseModel(daemonFetch);
71
- if (!model) {
72
- console.error("No AI models configured. Set up providers in the web dashboard first.");
73
- process.exit(1);
74
- }
75
- }
76
- }
77
- const createRes = await daemonFetch(urlOf(client.api.minds.$url()), {
78
- method: "POST",
79
- headers: { "Content-Type": "application/json" },
80
- body: JSON.stringify({
81
- name,
82
- template,
83
- stage: "seed",
84
- description: flags.description,
85
- model,
86
- skills,
87
- createdBy
88
- })
89
- });
90
- const createData = await createRes.json();
91
- if (!createRes.ok) {
92
- console.error(createData.error ?? "Failed to create mind");
93
- process.exit(1);
94
- }
95
- const startRes = await daemonFetch(
96
- urlOf(client.api.minds[":name"].start.$url({ param: { name } })),
97
- { method: "POST" }
98
- );
99
- if (!startRes.ok) {
100
- const startData = await startRes.json();
101
- console.error(startData.error ?? "Failed to start mind");
102
- process.exit(1);
103
- }
104
- console.log(`
105
- Seeded mind: ${name} (port ${createData.port})`);
106
- console.log(`
107
- Talk to your new mind:`);
108
- console.log(` volute chat send @${name} "hello"`);
109
- }
110
- export {
111
- run
112
- };
@@ -1,132 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- getStandardSkillsWithExtensions
4
- } from "./chunk-N3DNFPVA.js";
5
- import "./chunk-YUIHSKR6.js";
6
- import "./chunk-U5BTYSAL.js";
7
- import "./chunk-BDK73LK6.js";
8
- import "./chunk-6OWJXUAR.js";
9
- import {
10
- findMind,
11
- mindDir
12
- } from "./chunk-N7BLAHNE.js";
13
- import "./chunk-4JSR7YO7.js";
14
- import "./chunk-7KJOFUNN.js";
15
-
16
- // src/commands/seed-sprout.ts
17
- import { existsSync, readFileSync } from "fs";
18
- import { resolve } from "path";
19
- var ORIENTATION_MARKER = "You don't have a soul yet";
20
- async function run(_args) {
21
- const mindName = process.env.VOLUTE_MIND;
22
- if (!mindName) {
23
- console.error("volute seed sprout must be run by a mind (VOLUTE_MIND not set)");
24
- process.exit(1);
25
- }
26
- const entry = await findMind(mindName);
27
- if (!entry) {
28
- console.error(`Unknown mind: ${mindName}`);
29
- process.exit(1);
30
- }
31
- if (entry.stage !== "seed") {
32
- console.error(`${mindName} is not a seed \u2014 already at stage "${entry.stage}"`);
33
- process.exit(1);
34
- }
35
- const dir = mindDir(mindName);
36
- const soulPath = resolve(dir, "home/SOUL.md");
37
- const memoryPath = resolve(dir, "home/MEMORY.md");
38
- if (!existsSync(soulPath)) {
39
- console.error("Write your SOUL.md before sprouting.");
40
- process.exit(1);
41
- }
42
- const soul = readFileSync(soulPath, "utf-8");
43
- if (soul.includes(ORIENTATION_MARKER)) {
44
- console.error(
45
- "Your SOUL.md still contains the orientation template. Write your own identity first."
46
- );
47
- process.exit(1);
48
- }
49
- if (!existsSync(memoryPath)) {
50
- console.error("Write your MEMORY.md before sprouting.");
51
- process.exit(1);
52
- }
53
- const { isImagegenEnabled } = await import("./setup-GGMKENLN.js");
54
- if (isImagegenEnabled()) {
55
- const { readVoluteConfig } = await import("./volute-config-WBKYJGYQ.js");
56
- const config = readVoluteConfig(dir);
57
- const avatarPath = config?.profile?.avatar;
58
- if (!avatarPath || !existsSync(resolve(dir, "home", avatarPath))) {
59
- console.error(
60
- "Generate an avatar before sprouting. Use `imagegen generate` to create one, then `volute mind profile --avatar <path>` to set it."
61
- );
62
- process.exit(1);
63
- }
64
- }
65
- const { daemonFetch } = await import("./daemon-client-WOAQXXBM.js");
66
- const { getClient, urlOf } = await import("./api-client-XUXOB7LI.js");
67
- const { mindSkillsDir } = await import("./skills-Q6VZ2UGD.js");
68
- const client = getClient();
69
- const failedSkills = [];
70
- for (const skillId of getStandardSkillsWithExtensions()) {
71
- const skillDir = resolve(mindSkillsDir(dir), skillId);
72
- if (!existsSync(skillDir)) {
73
- const installRes = await daemonFetch(
74
- urlOf(client.api.minds[":name"].skills.install.$url({ param: { name: mindName } })),
75
- {
76
- method: "POST",
77
- headers: { "Content-Type": "application/json" },
78
- body: JSON.stringify({ skillId })
79
- }
80
- );
81
- if (!installRes.ok) {
82
- const data = await installRes.json().catch(() => ({ error: `HTTP ${installRes.status}` }));
83
- console.error(`Failed to install skill ${skillId}: ${data.error}`);
84
- failedSkills.push(skillId);
85
- }
86
- }
87
- }
88
- const orientationDir = resolve(mindSkillsDir(dir), "orientation");
89
- if (existsSync(orientationDir)) {
90
- const delRes = await daemonFetch(
91
- urlOf(
92
- client.api.minds[":name"].skills[":skill"].$url({
93
- param: { name: mindName, skill: "orientation" }
94
- })
95
- ),
96
- { method: "DELETE" }
97
- );
98
- if (!delRes.ok) {
99
- const data = await delRes.json().catch(() => ({ error: `HTTP ${delRes.status}` }));
100
- console.error(`Failed to uninstall orientation skill: ${data.error}`);
101
- }
102
- }
103
- if (failedSkills.length > 0) {
104
- console.error(`Warning: failed to install skills: ${failedSkills.join(", ")}`);
105
- }
106
- const sproutRes = await daemonFetch(
107
- urlOf(client.api.minds[":name"].sprout.$url({ param: { name: mindName } })),
108
- { method: "POST" }
109
- );
110
- if (!sproutRes.ok) {
111
- const data = await sproutRes.json().catch(() => ({ error: `HTTP ${sproutRes.status}` }));
112
- console.error(data.error ?? "Failed to update stage");
113
- process.exit(1);
114
- }
115
- const res = await daemonFetch(
116
- urlOf(client.api.minds[":name"].restart.$url({ param: { name: mindName } })),
117
- {
118
- method: "POST",
119
- headers: { "Content-Type": "application/json" },
120
- body: JSON.stringify({ context: { type: "sprouted" } })
121
- }
122
- );
123
- if (!res.ok) {
124
- const data = await res.json().catch(() => ({ error: `HTTP ${res.status}` }));
125
- console.error(data.error ?? "Failed to restart after sprouting");
126
- process.exit(1);
127
- }
128
- console.log("Sprouted! You now have full mind capabilities.");
129
- }
130
- export {
131
- run
132
- };