volute 0.48.0 → 0.50.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 (215) hide show
  1. package/README.md +79 -328
  2. package/dist/{accept-KYNC5X3U.js → accept-5NK5XJB5.js} +2 -1
  3. package/dist/{activity-events-MIOK3IOU.js → activity-events-H7YI3BTF.js} +4 -4
  4. package/dist/{ai-service-643TNFPH.js → ai-service-V4CTNGI3.js} +6 -5
  5. package/dist/{archive-6Z4GFQPH.js → archive-ORM3ENHI.js} +3 -3
  6. package/dist/{auth-A4VGHADI.js → auth-DT7GY7EZ.js} +11 -7
  7. package/dist/{avatar-image-Y45R7LW5.js → avatar-image-QEPAP3A5.js} +4 -4
  8. package/dist/{backup-UDH4GMSW.js → backup-IE6PMXJO.js} +17 -18
  9. package/dist/{bridge-3FNSWLNQ.js → bridge-YK7NTRU5.js} +2 -1
  10. package/dist/{channels-SGQZHNQJ.js → channels-FSAHOQWI.js} +2 -1
  11. package/dist/{chat-X43VYHH2.js → chat-W5K6HCBE.js} +9 -9
  12. package/dist/{chunk-LTLFOSA4.js → chunk-3BAFMGCJ.js} +3 -3
  13. package/dist/{chunk-XVBSFLM7.js → chunk-4CN7OCJE.js} +2 -2
  14. package/dist/{chunk-HPGN6XRT.js → chunk-574M6I7F.js} +39 -6
  15. package/dist/{chunk-FJ2MZ5PH.js → chunk-5FVANDON.js} +2 -2
  16. package/dist/{chunk-2MJ7EOMT.js → chunk-5IIVOWSP.js} +28 -19
  17. package/dist/{chunk-4FCL4DVZ.js → chunk-5PKFJHCR.js} +2 -2
  18. package/dist/{chunk-MOERAQXH.js → chunk-5TPC4KCV.js} +38 -31
  19. package/dist/{chunk-YNBXEQAP.js → chunk-632FJ23O.js} +24 -20
  20. package/dist/{chunk-T4VS7UDW.js → chunk-636GFQNE.js} +12 -12
  21. package/dist/{chunk-EIQDZC43.js → chunk-6BM2I736.js} +25 -6
  22. package/dist/{chunk-WARH6GIV.js → chunk-74T3CEXK.js} +17 -15
  23. package/dist/{chunk-OQJMTHEH.js → chunk-77IZUVBB.js} +2 -2
  24. package/dist/{chunk-USD45JKR.js → chunk-7DXLIYPY.js} +77 -64
  25. package/dist/chunk-7FDWPQCU.js +289 -0
  26. package/dist/chunk-7OZWKHA3.js +548 -0
  27. package/dist/{chunk-IJPMIEVE.js → chunk-7UWXAJMK.js} +1 -1
  28. package/dist/{chunk-SZJCJVXV.js → chunk-7XDOTN4R.js} +2 -2
  29. package/dist/{chunk-YKA7DCVW.js → chunk-AFSLNUTT.js} +1 -1
  30. package/dist/{chunk-DGGZVZTM.js → chunk-AJWFDIEY.js} +17 -2
  31. package/dist/chunk-ALIVXDM4.js +1014 -0
  32. package/dist/chunk-CAIYV33P.js +523 -0
  33. package/dist/{chunk-MTRMQFCQ.js → chunk-E5S3ILVA.js} +2 -2
  34. package/dist/{chunk-SHKM5RGD.js → chunk-EEOMA4DX.js} +1 -1
  35. package/dist/chunk-EQKSRVDE.js +2857 -0
  36. package/dist/chunk-FNJCBRD3.js +31 -0
  37. package/dist/chunk-HW6Q7AMB.js +113 -0
  38. package/dist/chunk-JI67D7O2.js +1222 -0
  39. package/dist/{chunk-3YUBFTDN.js → chunk-KAEZOVP6.js} +1 -1
  40. package/dist/chunk-LNNI3MS4.js +54 -0
  41. package/dist/{chunk-BCG45AQB.js → chunk-M74I3HHF.js} +15 -5
  42. package/dist/chunk-MLZBBLMT.js +109 -0
  43. package/dist/{chunk-5T5YMX6S.js → chunk-PW65BXY5.js} +5 -0
  44. package/dist/{chunk-2OIYNHWO.js → chunk-QFVGPKJI.js} +1 -1
  45. package/dist/{chunk-T2TP6ZC6.js → chunk-QUSMYGNQ.js} +6 -0
  46. package/dist/{chunk-HNGFKPNS.js → chunk-SFRYRW37.js} +85 -36
  47. package/dist/{chunk-7KRIHYLR.js → chunk-SSNZ6ZNN.js} +2 -2
  48. package/dist/{chunk-HUNDXZBZ.js → chunk-TGJHGVBZ.js} +48 -19
  49. package/dist/{chunk-PJVPDY2Z.js → chunk-U3EJJ7JN.js} +2 -2
  50. package/dist/{chunk-ODDGGLM6.js → chunk-UC6BNMGT.js} +43 -13
  51. package/dist/{chunk-Q7HOAVFR.js → chunk-WBBKYUGF.js} +4 -6
  52. package/dist/{chunk-WQ46E33M.js → chunk-X67VT4QO.js} +2 -2
  53. package/dist/{chunk-MJRXFUMS.js → chunk-YQOYZ6G7.js} +3 -5
  54. package/dist/{chunk-VZRA5TYO.js → chunk-ZUG76D3P.js} +36 -6
  55. package/dist/cli.js +34 -27
  56. package/dist/{clock-CNRF6F7T.js → clock-LH7UFNLJ.js} +5 -4
  57. package/dist/{cloud-sync-WHKCB4CD.js → cloud-sync-IDJFVDEP.js} +23 -20
  58. package/dist/{config-RPSLA2HX.js → config-UGJS57VT.js} +3 -3
  59. package/dist/{conversations-C7IKYSHD.js → conversations-S2232Y5I.js} +9 -5
  60. package/dist/{create-GJKHABJB.js → create-2M7DAHQX.js} +2 -2
  61. package/dist/{create-VIQVP3QB.js → create-M727VUDF.js} +2 -1
  62. package/dist/{daemon-client-ZFY5MOAL.js → daemon-client-VVYFZI2D.js} +2 -1
  63. package/dist/{daemon-restart-7KUHVZIN.js → daemon-restart-2AAGYFHE.js} +6 -7
  64. package/dist/daemon.js +2166 -833
  65. package/dist/{db-FO6LXYCW.js → db-QAY45Z56.js} +2 -2
  66. package/dist/{delete-ESEP7NGQ.js → delete-O7PEFQDF.js} +1 -1
  67. package/dist/delivery-manager-B4OKWD2P.js +33 -0
  68. package/dist/{delivery-router-3QFG2ZEX.js → delivery-router-JE7SHYNU.js} +10 -6
  69. package/dist/{down-G6IADJXV.js → down-D4IRNEMJ.js} +5 -5
  70. package/dist/echo-text-WYAAODBV.js +39 -0
  71. package/dist/{env-C7Z55QCJ.js → env-ABM5IMA7.js} +8 -7
  72. package/dist/{env-6TGPO5WG.js → env-AZK5X4W7.js} +3 -3
  73. package/dist/{exec-QIFYZG4C.js → exec-2H65LMTA.js} +3 -3
  74. package/dist/{export-C2K3NIRD.js → export-3E3EL6W3.js} +4 -4
  75. package/dist/{extension-J4ZQ2GHV.js → extension-MRYJWSMV.js} +2 -1
  76. package/dist/{extensions-GEKF47A4.js → extensions-7KP3X6G7.js} +23 -20
  77. package/dist/{files-LXQSQOFG.js → files-6BMKVG5G.js} +5 -4
  78. package/dist/{import-SX3ZXHB4.js → import-UPNTEBBT.js} +9 -9
  79. package/dist/{isolation-MCT4ZYLT.js → isolation-OKDFM6WA.js} +5 -3
  80. package/dist/{join-34TR2GXQ.js → join-PYA36HEC.js} +1 -1
  81. package/dist/{list-PMUXZNAM.js → list-4BVGH7AN.js} +8 -3
  82. package/dist/{login-CL4IT2ED.js → login-MOXVLULE.js} +7 -6
  83. package/dist/{login-ARRZ4ORJ.js → login-RJJTCVR3.js} +4 -3
  84. package/dist/{logout-YZRMZ3O2.js → logout-BYV433X6.js} +2 -1
  85. package/dist/{logout-HZYJCYCA.js → logout-DWD3OQVT.js} +4 -3
  86. package/dist/message-delivery-3456PXB7.js +43 -0
  87. package/dist/migrate-thread-config-4A5LW36Z.js +90 -0
  88. package/dist/{mind-46AOK373.js → mind-NYRALSV2.js} +19 -19
  89. package/dist/{mind-activity-tracker-YVZPC4A5.js → mind-activity-tracker-L7GCYXQR.js} +5 -5
  90. package/dist/{mind-contacts-GV7XYL5D.js → mind-contacts-QYU4TPEA.js} +8 -7
  91. package/dist/{mind-history-TTGA5BHZ.js → mind-history-NXXOOTX6.js} +34 -11
  92. package/dist/{mind-list-OTHV4ZO4.js → mind-list-SYRA7CH5.js} +3 -2
  93. package/dist/{mind-profile-LUG353ZT.js → mind-profile-MRCVZPYT.js} +1 -1
  94. package/dist/mind-service-5TA7UJAT.js +47 -0
  95. package/dist/{mind-sleep-DV7KP255.js → mind-sleep-TH6BRQ5X.js} +5 -4
  96. package/dist/{mind-status-BJNPGXKC.js → mind-status-Z2LQFA6F.js} +3 -2
  97. package/dist/{mind-wake-LVTZ55EZ.js → mind-wake-LDGPRA42.js} +2 -1
  98. package/dist/{package-RTN2PS7O.js → package-XYSV7NUT.js} +27 -26
  99. package/dist/prompts-QKFPX6DQ.js +24 -0
  100. package/dist/{read-YSWUXYL7.js → read-ZXGUT4QC.js} +5 -3
  101. package/dist/{register-42VBJKTP.js → register-OX4HRSGC.js} +4 -3
  102. package/dist/{registry-UMMDRPRM.js → registry-4UF6OCOE.js} +10 -4
  103. package/dist/{reject-SXGCYN4A.js → reject-TWB4QJHG.js} +2 -1
  104. package/dist/{restart-YYEGZJDD.js → restart-AGEGNSYQ.js} +6 -5
  105. package/dist/{sandbox-5VQ454XP.js → sandbox-EGEU5GGE.js} +8 -5
  106. package/dist/scheduler-UV6RUJ7P.js +25 -0
  107. package/dist/{schema-VEVO7HG6.js → schema-C2GIPD4V.js} +3 -3
  108. package/dist/{seed-F2HXZQU4.js → seed-3IMBOAGK.js} +1 -1
  109. package/dist/{seed-check-TYD7RRZY.js → seed-check-NRJEQZST.js} +14 -5
  110. package/dist/{seed-cmd-MLCTGSX5.js → seed-cmd-U73XVQMI.js} +3 -3
  111. package/dist/{seed-create-KQ7OILWB.js → seed-create-FBLNVSUP.js} +4 -4
  112. package/dist/{seed-readiness-RBPGOLSZ.js → seed-readiness-QRA46ZJQ.js} +4 -5
  113. package/dist/{seed-sprout-HVYCFJLA.js → seed-sprout-3B4SZX7J.js} +12 -12
  114. package/dist/{send-TD2X5U3K.js → send-NBRZJXKX.js} +34 -12
  115. package/dist/{service-CVZMQYK6.js → service-XMXAXGJD.js} +4 -4
  116. package/dist/{service-install-VCRMFWX5.js → service-install-MOKTEG7B.js} +5 -5
  117. package/dist/{setup-5ECWTYKG.js → setup-CAJFOR2N.js} +12 -3
  118. package/dist/{setup-AE4CVUC4.js → setup-JGYAXXW7.js} +6 -7
  119. package/dist/{skill-UUM4JZRF.js → skill-NXIHDQCG.js} +7 -6
  120. package/dist/skills/dreaming/references/INSTALL.md +2 -2
  121. package/dist/skills/imagegen/SKILL.md +21 -4
  122. package/dist/skills/imagegen/scripts/imagegen.ts +124 -21
  123. package/dist/skills/tending/SKILL.md +7 -7
  124. package/dist/skills/volute-mind/SKILL.md +6 -6
  125. package/dist/skills/volute-mind/references/integrations.md +2 -2
  126. package/dist/skills/volute-mind/references/routing.md +19 -18
  127. package/dist/skills/volute-mind/references/variants.md +48 -14
  128. package/dist/{skills-B3SVDCEB.js → skills-5MSMT7PT.js} +7 -6
  129. package/dist/sleep-manager-LIEPO6WG.js +41 -0
  130. package/dist/spirit-IL5EMWYZ.js +34 -0
  131. package/dist/spirit-availability-YFEGJNJ2.js +42 -0
  132. package/dist/{split-SKZ4Y2D6.js → split-BU5VWX6P.js} +5 -2
  133. package/dist/{sprout-KQ43BWZJ.js → sprout-UPXGJ5HX.js} +1 -1
  134. package/dist/{src-YH6PQ7LJ.js → src-HGNE2XG4.js} +7 -1
  135. package/dist/{src-WLJE73NP.js → src-LCSOQY6Z.js} +60 -54
  136. package/dist/{src-JAOVXO5W.js → src-UDMJZ6MH.js} +8 -8
  137. package/dist/{start-O6UKK7BG.js → start-MUMNFR52.js} +4 -3
  138. package/dist/{status-F4PGREUU.js → status-IL67CYM4.js} +7 -6
  139. package/dist/{stop-UBX6X5RA.js → stop-EKERNYTX.js} +6 -5
  140. package/dist/system-events-A6IGCEC3.js +46 -0
  141. package/dist/system-install-YZSWCPDK.js +8 -0
  142. package/dist/{systems-JJNGQHAO.js → systems-VDRUZXNF.js} +5 -4
  143. package/dist/{tailscale-MCLY5GYE.js → tailscale-SJUW2ETR.js} +3 -3
  144. package/dist/{template-staleness-EMQORSGG.js → template-staleness-T27VCGYA.js} +4 -4
  145. package/dist/{turn-tracker-KLPV3PAU.js → turn-tracker-6EI2EL7G.js} +7 -7
  146. package/dist/{up-RVGDE6CQ.js → up-CLL4665A.js} +5 -6
  147. package/dist/{update-OXQEGGXD.js → update-HVAUCQPN.js} +5 -5
  148. package/dist/{update-check-266R4ZSY.js → update-check-2MGBBAFF.js} +3 -3
  149. package/dist/{upgrade-K5FIQPQD.js → upgrade-LIE46UBB.js} +1 -1
  150. package/dist/variant-cleanup-HJ7Z75R6.js +22 -0
  151. package/dist/{version-notify-73YURTFR.js → version-notify-7BUHWZNT.js} +11 -28
  152. package/dist/web-assets/assets/index-ClsUcXiW.js +95 -0
  153. package/dist/web-assets/assets/index-Dz3wTbtR.css +1 -0
  154. package/dist/web-assets/index.html +2 -2
  155. package/dist/xai-P42CRCZA.js +129 -0
  156. package/drizzle/0013_variant_purpose.sql +3 -0
  157. package/drizzle/0014_system_events.sql +26 -0
  158. package/drizzle/0015_rename_session_to_thread.sql +12 -0
  159. package/drizzle/0016_brain_to_human.sql +4 -0
  160. package/drizzle/0017_event_history_rows.sql +9 -0
  161. package/drizzle/meta/_journal.json +35 -0
  162. package/package.json +27 -26
  163. package/packages/extensions/notes/dist/ui/assets/index-BBs8pyel.js +67 -0
  164. package/packages/extensions/notes/dist/ui/index.html +1 -1
  165. package/packages/extensions/pages/dist/ui/assets/index-B589e8Xe.js +2 -0
  166. package/packages/extensions/pages/dist/ui/index.html +1 -1
  167. package/packages/extensions/plan/dist/ui/assets/index-B8s8wxyt.js +67 -0
  168. package/packages/extensions/plan/dist/ui/index.html +1 -1
  169. package/templates/_base/.init/.config/prompts.json +1 -0
  170. package/templates/_base/.init/.local/hooks/startup-context.ts +34 -2
  171. package/templates/_base/home/.config/routes.json +2 -2
  172. package/templates/_base/home/VOLUTE.md +30 -5
  173. package/templates/_base/src/lib/daemon-client.ts +28 -8
  174. package/templates/_base/src/lib/event-turn.ts +39 -0
  175. package/templates/_base/src/lib/format-prefix.ts +21 -2
  176. package/templates/_base/src/lib/router.ts +6 -2
  177. package/templates/_base/src/lib/routing.ts +8 -8
  178. package/templates/_base/src/lib/startup.ts +9 -1
  179. package/templates/_base/src/lib/types.ts +7 -1
  180. package/templates/_base/src/lib/volute-server.ts +30 -1
  181. package/templates/claude/.init/.config/routes.json +3 -3
  182. package/templates/claude/.init/CLAUDE.md +1 -1
  183. package/templates/claude/package.json.tmpl +4 -4
  184. package/templates/claude/src/agent.ts +5 -2
  185. package/templates/claude/src/lib/hooks/identity-reload.ts +12 -3
  186. package/templates/claude/src/lib/hooks/reply-instructions.ts +26 -1
  187. package/templates/codex/.init/.config/routes.json +3 -3
  188. package/templates/codex/.init/AGENTS.md +1 -1
  189. package/templates/codex/package.json.tmpl +4 -4
  190. package/templates/codex/src/agent.ts +11 -11
  191. package/templates/codex/src/lib/turn-context.ts +51 -0
  192. package/templates/pi/.init/.config/routes.json +3 -3
  193. package/templates/pi/.init/MINDS.md +1 -1
  194. package/templates/pi/package.json.tmpl +6 -6
  195. package/templates/pi/src/agent.ts +9 -1
  196. package/templates/pi/src/lib/event-handler.ts +47 -6
  197. package/templates/pi/src/lib/reply-instructions-extension.ts +28 -1
  198. package/dist/chunk-5KXCM5AW.js +0 -169
  199. package/dist/chunk-IYCV34IU.js +0 -158
  200. package/dist/chunk-VB2QXUJQ.js +0 -5260
  201. package/dist/chunk-WW6C3PLV.js +0 -280
  202. package/dist/delivery-manager-HZTT5SJR.js +0 -36
  203. package/dist/echo-text-H3SH337Q.js +0 -36
  204. package/dist/message-delivery-GPQ5SE5N.js +0 -40
  205. package/dist/mind-service-2ARGJNKP.js +0 -44
  206. package/dist/notices-2KU5NTRY.js +0 -25
  207. package/dist/scheduler-I7JZCT47.js +0 -34
  208. package/dist/sleep-manager-Z27R3WTW.js +0 -38
  209. package/dist/spirit-WXS3HCLN.js +0 -25
  210. package/dist/system-chat-63ABFF6V.js +0 -40
  211. package/dist/web-assets/assets/index-WdZ60R6c.css +0 -1
  212. package/dist/web-assets/assets/index-taX6Ezfa.js +0 -92
  213. package/packages/extensions/notes/dist/ui/assets/index-D0-DgYyj.js +0 -67
  214. package/packages/extensions/pages/dist/ui/assets/index-DtzftuPA.js +0 -2
  215. package/packages/extensions/plan/dist/ui/assets/index-Cfzs-0G9.js +0 -67
@@ -1,280 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- minds,
4
- schema_exports
5
- } from "./chunk-2MJ7EOMT.js";
6
-
7
- // packages/daemon/src/lib/db.ts
8
- import { chmodSync, existsSync } from "fs";
9
- import { dirname, resolve as resolve2 } from "path";
10
- import { fileURLToPath as fileURLToPath2 } from "url";
11
- import { sql } from "drizzle-orm";
12
- import { drizzle } from "drizzle-orm/libsql";
13
- import { migrate } from "drizzle-orm/libsql/migrator";
14
-
15
- // packages/daemon/src/lib/mind/registry.ts
16
- import { mkdirSync } from "fs";
17
- import { homedir } from "os";
18
- import { resolve } from "path";
19
- import { fileURLToPath } from "url";
20
- import { and, eq, inArray, isNull } from "drizzle-orm";
21
- var SPIRIT_NAME = "volute";
22
- function isSpiritName(name) {
23
- return name === SPIRIT_NAME;
24
- }
25
- function voluteHome() {
26
- if (process.env.VOLUTE_HOME) return process.env.VOLUTE_HOME;
27
- if (fileURLToPath(import.meta.url).endsWith(".ts")) {
28
- throw new Error(
29
- 'VOLUTE_HOME must be set when running from source. For tests, run via "npm test" or add "--import ./test/setup.ts".'
30
- );
31
- }
32
- return resolve(homedir(), ".volute");
33
- }
34
- function voluteUserHome() {
35
- if (process.env.VOLUTE_USER_HOME) return process.env.VOLUTE_USER_HOME;
36
- return resolve(homedir(), ".volute");
37
- }
38
- function voluteSystemDir() {
39
- return resolve(voluteHome(), "system");
40
- }
41
- function ensureSystemDir() {
42
- mkdirSync(voluteSystemDir(), { recursive: true });
43
- }
44
- function ensureVoluteHome() {
45
- const mindsBase = process.env.VOLUTE_MINDS_DIR ?? resolve(voluteHome(), "minds");
46
- mkdirSync(mindsBase, { recursive: true });
47
- ensureSystemDir();
48
- }
49
- function rowToEntry(row) {
50
- return {
51
- name: row.name,
52
- port: row.port,
53
- created: row.created_at,
54
- running: row.running === 1,
55
- stage: row.stage ?? (row.parent ? void 0 : "sprouted"),
56
- template: row.template ?? void 0,
57
- templateHash: row.template_hash ?? void 0,
58
- parent: row.parent ?? void 0,
59
- dir: row.dir ?? void 0,
60
- branch: row.branch ?? void 0,
61
- mindType: row.mind_type ?? "mind",
62
- createdBy: row.created_by ?? void 0
63
- };
64
- }
65
- async function readRegistry() {
66
- const db2 = await getDb();
67
- const rows = await db2.select().from(minds).where(and(isNull(minds.parent), inArray(minds.mind_type, ["mind", "spirit"])));
68
- return rows.map(rowToEntry);
69
- }
70
- async function readAllMinds() {
71
- const db2 = await getDb();
72
- const rows = await db2.select().from(minds);
73
- return rows.map(rowToEntry);
74
- }
75
- var MIND_NAME_RE = /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/;
76
- var MIND_NAME_MAX = 64;
77
- var RESERVED_NAMES = /* @__PURE__ */ new Set(["volute", "system"]);
78
- function validateMindName(name) {
79
- if (!name) return "Mind name is required";
80
- if (name.length > MIND_NAME_MAX) return `Mind name must be at most ${MIND_NAME_MAX} characters`;
81
- if (!MIND_NAME_RE.test(name)) {
82
- return "Mind name must start with alphanumeric and contain only alphanumeric, dots, dashes, or underscores";
83
- }
84
- if (RESERVED_NAMES.has(name.toLowerCase())) {
85
- return `"${name}" is a reserved name`;
86
- }
87
- return null;
88
- }
89
- async function addMind(name, port, stage, template, createdBy) {
90
- const err = validateMindName(name);
91
- if (err) throw new Error(err);
92
- const db2 = await getDb();
93
- await db2.insert(minds).values({
94
- name,
95
- port,
96
- stage: stage ?? null,
97
- template: template ?? null,
98
- created_by: createdBy ?? null
99
- }).onConflictDoUpdate({
100
- target: minds.name,
101
- set: {
102
- port,
103
- stage: stage ?? null,
104
- template: template ?? null,
105
- created_by: createdBy ?? null
106
- }
107
- });
108
- }
109
- async function addSpirit(name, port, template, dir) {
110
- const db2 = await getDb();
111
- await db2.insert(minds).values({
112
- name,
113
- port,
114
- template,
115
- dir,
116
- mind_type: "spirit",
117
- stage: "sprouted"
118
- }).onConflictDoUpdate({
119
- target: minds.name,
120
- set: { port, template, dir, mind_type: "spirit" }
121
- });
122
- }
123
- async function readSpirits() {
124
- const db2 = await getDb();
125
- const rows = await db2.select().from(minds).where(eq(minds.mind_type, "spirit"));
126
- return rows.map(rowToEntry);
127
- }
128
- async function addVariant(name, parent, port, dir, branch) {
129
- const err = validateMindName(name);
130
- if (err) throw new Error(err);
131
- const db2 = await getDb();
132
- await db2.insert(minds).values({ name, port, parent, dir, branch }).onConflictDoUpdate({
133
- target: minds.name,
134
- set: { port, parent, dir, branch }
135
- });
136
- }
137
- async function removeMind(name) {
138
- const db2 = await getDb();
139
- await db2.delete(minds).where(eq(minds.name, name));
140
- }
141
- async function setMindRunning(name, running) {
142
- const db2 = await getDb();
143
- await db2.update(minds).set({ running: running ? 1 : 0 }).where(eq(minds.name, name));
144
- }
145
- async function setMindStage(name, stage) {
146
- const db2 = await getDb();
147
- await db2.update(minds).set({ stage }).where(eq(minds.name, name));
148
- }
149
- async function setMindTemplateHash(name, hash) {
150
- const db2 = await getDb();
151
- await db2.update(minds).set({ template_hash: hash }).where(eq(minds.name, name));
152
- }
153
- async function setMindTemplate(name, template) {
154
- const db2 = await getDb();
155
- await db2.update(minds).set({ template }).where(eq(minds.name, name));
156
- }
157
- async function findMind(name) {
158
- const db2 = await getDb();
159
- const rows = await db2.select().from(minds).where(eq(minds.name, name));
160
- if (rows.length === 0) return void 0;
161
- return rowToEntry(rows[0]);
162
- }
163
- async function findVariants(parent) {
164
- const db2 = await getDb();
165
- const rows = await db2.select().from(minds).where(eq(minds.parent, parent));
166
- return rows.map(rowToEntry);
167
- }
168
- async function getBaseName(name) {
169
- const entry = await findMind(name);
170
- return entry?.parent ?? name;
171
- }
172
- function mindDir(name) {
173
- if (process.env.VOLUTE_MINDS_DIR) {
174
- return resolve(process.env.VOLUTE_MINDS_DIR, name);
175
- }
176
- return resolve(voluteHome(), "minds", name);
177
- }
178
- async function resolveMindDir(name) {
179
- const entry = await findMind(name);
180
- return entry?.dir ?? mindDir(name);
181
- }
182
- function stateDir(name) {
183
- return resolve(voluteSystemDir(), "state", name);
184
- }
185
- function mindTmpDir(dir) {
186
- return resolve(dir, ".mind", "tmp");
187
- }
188
- async function nextPort() {
189
- const db2 = await getDb();
190
- const rows = await db2.select({ port: minds.port }).from(minds);
191
- const usedPorts = new Set(rows.map((r) => r.port));
192
- const basePort = parseInt(process.env.VOLUTE_BASE_PORT || "4100", 10);
193
- let port = basePort;
194
- while (usedPorts.has(port)) port++;
195
- if (port > 65535) throw new Error("No available ports \u2014 all ports 4100-65535 are allocated");
196
- return port;
197
- }
198
- function daemonLoopback() {
199
- const host = process.env.VOLUTE_DAEMON_HOSTNAME || "127.0.0.1";
200
- if (host === "0.0.0.0") return "127.0.0.1";
201
- if (host === "::") return "[::1]";
202
- return host;
203
- }
204
-
205
- // packages/daemon/src/lib/db.ts
206
- var __dirname = dirname(fileURLToPath2(import.meta.url));
207
- var migrationsFolder = existsSync(resolve2(__dirname, "../drizzle")) ? resolve2(__dirname, "../drizzle") : existsSync(resolve2(__dirname, "../../drizzle")) ? resolve2(__dirname, "../../drizzle") : resolve2(__dirname, "../../../../drizzle");
208
- var db = null;
209
- var dbPromise = null;
210
- async function cleanupConversationColumns(db2) {
211
- const cols = await db2.all(sql.raw("PRAGMA table_info(conversations)"));
212
- const colNames = new Set(cols.map((c) => c.name));
213
- const toDrop = ["name", "title", "mind_name", "channel"].filter((c) => colNames.has(c));
214
- if (toDrop.length === 0) return;
215
- for (const col of toDrop) {
216
- await db2.run(sql.raw(`DROP INDEX IF EXISTS idx_conversations_${col}`));
217
- await db2.run(sql.raw(`ALTER TABLE conversations DROP COLUMN ${col}`));
218
- }
219
- }
220
- async function getDb() {
221
- if (db) return db;
222
- if (dbPromise) return dbPromise;
223
- dbPromise = (async () => {
224
- try {
225
- const dbPath = process.env.VOLUTE_DB_PATH || resolve2(voluteSystemDir(), "volute.db");
226
- const instance = drizzle({ connection: { url: `file:${dbPath}` }, schema: schema_exports });
227
- await instance.run(sql.raw("PRAGMA journal_mode=WAL"));
228
- await instance.run(sql.raw("PRAGMA busy_timeout=5000"));
229
- await instance.run(sql.raw("PRAGMA foreign_keys=ON"));
230
- await migrate(instance, { migrationsFolder });
231
- await cleanupConversationColumns(instance);
232
- try {
233
- chmodSync(dbPath, 384);
234
- } catch (err) {
235
- console.error(
236
- `[volute] WARNING: Failed to restrict database file permissions on ${dbPath}:`,
237
- err
238
- );
239
- }
240
- db = instance;
241
- return instance;
242
- } catch (err) {
243
- dbPromise = null;
244
- throw err;
245
- }
246
- })();
247
- return dbPromise;
248
- }
249
-
250
- export {
251
- getDb,
252
- SPIRIT_NAME,
253
- isSpiritName,
254
- voluteHome,
255
- voluteUserHome,
256
- voluteSystemDir,
257
- ensureSystemDir,
258
- ensureVoluteHome,
259
- readRegistry,
260
- readAllMinds,
261
- validateMindName,
262
- addMind,
263
- addSpirit,
264
- readSpirits,
265
- addVariant,
266
- removeMind,
267
- setMindRunning,
268
- setMindStage,
269
- setMindTemplateHash,
270
- setMindTemplate,
271
- findMind,
272
- findVariants,
273
- getBaseName,
274
- mindDir,
275
- resolveMindDir,
276
- stateDir,
277
- mindTmpDir,
278
- nextPort,
279
- daemonLoopback
280
- };
@@ -1,36 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- DeliveryManager,
4
- getDeliveryManager,
5
- initDeliveryManager,
6
- tryGetDeliveryManager
7
- } from "./chunk-VB2QXUJQ.js";
8
- import "./chunk-HNGFKPNS.js";
9
- import "./chunk-RRZ4RQQU.js";
10
- import "./chunk-USD45JKR.js";
11
- import "./chunk-MOERAQXH.js";
12
- import "./chunk-HUNDXZBZ.js";
13
- import "./chunk-ODDGGLM6.js";
14
- import "./chunk-HPGN6XRT.js";
15
- import "./chunk-VZRA5TYO.js";
16
- import "./chunk-IYCV34IU.js";
17
- import "./chunk-MTRMQFCQ.js";
18
- import "./chunk-WQ46E33M.js";
19
- import "./chunk-DW4TRDOZ.js";
20
- import "./chunk-WCFSBH33.js";
21
- import "./chunk-EIQDZC43.js";
22
- import "./chunk-DGGZVZTM.js";
23
- import "./chunk-IJPMIEVE.js";
24
- import "./chunk-YNBXEQAP.js";
25
- import "./chunk-5KXCM5AW.js";
26
- import "./chunk-LTLFOSA4.js";
27
- import "./chunk-T2TP6ZC6.js";
28
- import "./chunk-WW6C3PLV.js";
29
- import "./chunk-2MJ7EOMT.js";
30
- import "./chunk-K3NQKI34.js";
31
- export {
32
- DeliveryManager,
33
- getDeliveryManager,
34
- initDeliveryManager,
35
- tryGetDeliveryManager
36
- };
@@ -1,36 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- clearEchoTextCache,
4
- echoTextToChannel
5
- } from "./chunk-T4VS7UDW.js";
6
- import "./chunk-SZJCJVXV.js";
7
- import "./chunk-VB2QXUJQ.js";
8
- import "./chunk-HNGFKPNS.js";
9
- import "./chunk-RRZ4RQQU.js";
10
- import "./chunk-USD45JKR.js";
11
- import "./chunk-MOERAQXH.js";
12
- import "./chunk-HUNDXZBZ.js";
13
- import "./chunk-ODDGGLM6.js";
14
- import "./chunk-HPGN6XRT.js";
15
- import "./chunk-VZRA5TYO.js";
16
- import "./chunk-IYCV34IU.js";
17
- import "./chunk-MTRMQFCQ.js";
18
- import "./chunk-WQ46E33M.js";
19
- import "./chunk-DW4TRDOZ.js";
20
- import "./chunk-WCFSBH33.js";
21
- import "./chunk-EIQDZC43.js";
22
- import "./chunk-FJ2MZ5PH.js";
23
- import "./chunk-DGGZVZTM.js";
24
- import "./chunk-IJPMIEVE.js";
25
- import "./chunk-YNBXEQAP.js";
26
- import "./chunk-5KXCM5AW.js";
27
- import "./chunk-LTLFOSA4.js";
28
- import "./chunk-T2TP6ZC6.js";
29
- import "./chunk-LGNUFVMR.js";
30
- import "./chunk-WW6C3PLV.js";
31
- import "./chunk-2MJ7EOMT.js";
32
- import "./chunk-K3NQKI34.js";
33
- export {
34
- clearEchoTextCache,
35
- echoTextToChannel
36
- };
@@ -1,40 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- deliverBatch,
4
- deliverMessage,
5
- linkToolResultToTurn,
6
- recordInbound,
7
- recordOutbound,
8
- resolveSleepAction
9
- } from "./chunk-VB2QXUJQ.js";
10
- import "./chunk-HNGFKPNS.js";
11
- import "./chunk-RRZ4RQQU.js";
12
- import "./chunk-USD45JKR.js";
13
- import "./chunk-MOERAQXH.js";
14
- import "./chunk-HUNDXZBZ.js";
15
- import "./chunk-ODDGGLM6.js";
16
- import "./chunk-HPGN6XRT.js";
17
- import "./chunk-VZRA5TYO.js";
18
- import "./chunk-IYCV34IU.js";
19
- import "./chunk-MTRMQFCQ.js";
20
- import "./chunk-WQ46E33M.js";
21
- import "./chunk-DW4TRDOZ.js";
22
- import "./chunk-WCFSBH33.js";
23
- import "./chunk-EIQDZC43.js";
24
- import "./chunk-DGGZVZTM.js";
25
- import "./chunk-IJPMIEVE.js";
26
- import "./chunk-YNBXEQAP.js";
27
- import "./chunk-5KXCM5AW.js";
28
- import "./chunk-LTLFOSA4.js";
29
- import "./chunk-T2TP6ZC6.js";
30
- import "./chunk-WW6C3PLV.js";
31
- import "./chunk-2MJ7EOMT.js";
32
- import "./chunk-K3NQKI34.js";
33
- export {
34
- deliverBatch,
35
- deliverMessage,
36
- linkToolResultToTurn,
37
- recordInbound,
38
- recordOutbound,
39
- resolveSleepAction
40
- };
@@ -1,44 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- buildSeedOrientation,
4
- recordMissingCredentialsNotice,
5
- sleepMind,
6
- startMindFull,
7
- startSpiritFull,
8
- stopMindFull,
9
- stopSpiritFull,
10
- wakeMind
11
- } from "./chunk-VB2QXUJQ.js";
12
- import "./chunk-HNGFKPNS.js";
13
- import "./chunk-RRZ4RQQU.js";
14
- import "./chunk-USD45JKR.js";
15
- import "./chunk-MOERAQXH.js";
16
- import "./chunk-HUNDXZBZ.js";
17
- import "./chunk-ODDGGLM6.js";
18
- import "./chunk-HPGN6XRT.js";
19
- import "./chunk-VZRA5TYO.js";
20
- import "./chunk-IYCV34IU.js";
21
- import "./chunk-MTRMQFCQ.js";
22
- import "./chunk-WQ46E33M.js";
23
- import "./chunk-DW4TRDOZ.js";
24
- import "./chunk-WCFSBH33.js";
25
- import "./chunk-EIQDZC43.js";
26
- import "./chunk-DGGZVZTM.js";
27
- import "./chunk-IJPMIEVE.js";
28
- import "./chunk-YNBXEQAP.js";
29
- import "./chunk-5KXCM5AW.js";
30
- import "./chunk-LTLFOSA4.js";
31
- import "./chunk-T2TP6ZC6.js";
32
- import "./chunk-WW6C3PLV.js";
33
- import "./chunk-2MJ7EOMT.js";
34
- import "./chunk-K3NQKI34.js";
35
- export {
36
- buildSeedOrientation,
37
- recordMissingCredentialsNotice,
38
- sleepMind,
39
- startMindFull,
40
- startSpiritFull,
41
- stopMindFull,
42
- stopSpiritFull,
43
- wakeMind
44
- };
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- MIND_LEVEL_SESSION,
4
- clearDeliveredNotices,
5
- drainNotices,
6
- formatNotices,
7
- hasUndeliveredNotice,
8
- latestFailureNotice,
9
- latestNotice,
10
- recordNotice
11
- } from "./chunk-IYCV34IU.js";
12
- import "./chunk-T2TP6ZC6.js";
13
- import "./chunk-WW6C3PLV.js";
14
- import "./chunk-2MJ7EOMT.js";
15
- import "./chunk-K3NQKI34.js";
16
- export {
17
- MIND_LEVEL_SESSION,
18
- clearDeliveredNotices,
19
- drainNotices,
20
- formatNotices,
21
- hasUndeliveredNotice,
22
- latestFailureNotice,
23
- latestNotice,
24
- recordNotice
25
- };
@@ -1,34 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- Scheduler,
4
- getScheduler,
5
- initScheduler
6
- } from "./chunk-VB2QXUJQ.js";
7
- import "./chunk-HNGFKPNS.js";
8
- import "./chunk-RRZ4RQQU.js";
9
- import "./chunk-USD45JKR.js";
10
- import "./chunk-MOERAQXH.js";
11
- import "./chunk-HUNDXZBZ.js";
12
- import "./chunk-ODDGGLM6.js";
13
- import "./chunk-HPGN6XRT.js";
14
- import "./chunk-VZRA5TYO.js";
15
- import "./chunk-IYCV34IU.js";
16
- import "./chunk-MTRMQFCQ.js";
17
- import "./chunk-WQ46E33M.js";
18
- import "./chunk-DW4TRDOZ.js";
19
- import "./chunk-WCFSBH33.js";
20
- import "./chunk-EIQDZC43.js";
21
- import "./chunk-DGGZVZTM.js";
22
- import "./chunk-IJPMIEVE.js";
23
- import "./chunk-YNBXEQAP.js";
24
- import "./chunk-5KXCM5AW.js";
25
- import "./chunk-LTLFOSA4.js";
26
- import "./chunk-T2TP6ZC6.js";
27
- import "./chunk-WW6C3PLV.js";
28
- import "./chunk-2MJ7EOMT.js";
29
- import "./chunk-K3NQKI34.js";
30
- export {
31
- Scheduler,
32
- getScheduler,
33
- initScheduler
34
- };
@@ -1,38 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- SleepManager,
4
- getSleepManager,
5
- getSleepManagerIfReady,
6
- initSleepManager,
7
- matchesGlob
8
- } from "./chunk-VB2QXUJQ.js";
9
- import "./chunk-HNGFKPNS.js";
10
- import "./chunk-RRZ4RQQU.js";
11
- import "./chunk-USD45JKR.js";
12
- import "./chunk-MOERAQXH.js";
13
- import "./chunk-HUNDXZBZ.js";
14
- import "./chunk-ODDGGLM6.js";
15
- import "./chunk-HPGN6XRT.js";
16
- import "./chunk-VZRA5TYO.js";
17
- import "./chunk-IYCV34IU.js";
18
- import "./chunk-MTRMQFCQ.js";
19
- import "./chunk-WQ46E33M.js";
20
- import "./chunk-DW4TRDOZ.js";
21
- import "./chunk-WCFSBH33.js";
22
- import "./chunk-EIQDZC43.js";
23
- import "./chunk-DGGZVZTM.js";
24
- import "./chunk-IJPMIEVE.js";
25
- import "./chunk-YNBXEQAP.js";
26
- import "./chunk-5KXCM5AW.js";
27
- import "./chunk-LTLFOSA4.js";
28
- import "./chunk-T2TP6ZC6.js";
29
- import "./chunk-WW6C3PLV.js";
30
- import "./chunk-2MJ7EOMT.js";
31
- import "./chunk-K3NQKI34.js";
32
- export {
33
- SleepManager,
34
- getSleepManager,
35
- getSleepManagerIfReady,
36
- initSleepManager,
37
- matchesGlob
38
- };
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- ensureSpiritProject,
4
- firstWeekSchedules,
5
- getSpiritModel,
6
- spiritDir,
7
- syncSpiritTemplate
8
- } from "./chunk-HNGFKPNS.js";
9
- import "./chunk-RRZ4RQQU.js";
10
- import "./chunk-HUNDXZBZ.js";
11
- import "./chunk-WCFSBH33.js";
12
- import "./chunk-DGGZVZTM.js";
13
- import "./chunk-YNBXEQAP.js";
14
- import "./chunk-5KXCM5AW.js";
15
- import "./chunk-T2TP6ZC6.js";
16
- import "./chunk-WW6C3PLV.js";
17
- import "./chunk-2MJ7EOMT.js";
18
- import "./chunk-K3NQKI34.js";
19
- export {
20
- ensureSpiritProject,
21
- firstWeekSchedules,
22
- getSpiritModel,
23
- spiritDir,
24
- syncSpiritTemplate
25
- };
@@ -1,40 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- ensureSystemDM,
4
- generateSystemFallbackReply,
5
- resetSystemDMCache,
6
- sendSystemMessage,
7
- sendSystemMessageDirect,
8
- shouldGenerateSystemFallback
9
- } from "./chunk-VB2QXUJQ.js";
10
- import "./chunk-HNGFKPNS.js";
11
- import "./chunk-RRZ4RQQU.js";
12
- import "./chunk-USD45JKR.js";
13
- import "./chunk-MOERAQXH.js";
14
- import "./chunk-HUNDXZBZ.js";
15
- import "./chunk-ODDGGLM6.js";
16
- import "./chunk-HPGN6XRT.js";
17
- import "./chunk-VZRA5TYO.js";
18
- import "./chunk-IYCV34IU.js";
19
- import "./chunk-MTRMQFCQ.js";
20
- import "./chunk-WQ46E33M.js";
21
- import "./chunk-DW4TRDOZ.js";
22
- import "./chunk-WCFSBH33.js";
23
- import "./chunk-EIQDZC43.js";
24
- import "./chunk-DGGZVZTM.js";
25
- import "./chunk-IJPMIEVE.js";
26
- import "./chunk-YNBXEQAP.js";
27
- import "./chunk-5KXCM5AW.js";
28
- import "./chunk-LTLFOSA4.js";
29
- import "./chunk-T2TP6ZC6.js";
30
- import "./chunk-WW6C3PLV.js";
31
- import "./chunk-2MJ7EOMT.js";
32
- import "./chunk-K3NQKI34.js";
33
- export {
34
- ensureSystemDM,
35
- generateSystemFallbackReply,
36
- resetSystemDMCache,
37
- sendSystemMessage,
38
- sendSystemMessageDirect,
39
- shouldGenerateSystemFallback
40
- };