volute 0.32.0 → 0.34.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 (187) hide show
  1. package/README.md +16 -0
  2. package/dist/{accept-74M7I4RZ.js → accept-TW6V4WI4.js} +4 -4
  3. package/dist/{activity-events-HETAODOK.js → activity-events-BN7V6KCC.js} +4 -4
  4. package/dist/{ai-service-ZIPCV3MX.js → ai-service-PSILB5WD.js} +5 -5
  5. package/dist/{api-client-YPKOZP2O.js → api-client-XUXOB7LI.js} +1 -1
  6. package/dist/api.d.ts +1198 -957
  7. package/dist/{archive-INXYFVCW.js → archive-C2VEMQOR.js} +4 -4
  8. package/dist/{auth-6DMGES3I.js → auth-ZFZXJZDQ.js} +5 -5
  9. package/dist/{bridge-BVCBTGPF.js → bridge-O753D5F4.js} +4 -4
  10. package/dist/{chat-XT4OBJBU.js → chat-BHYX7DJ4.js} +9 -9
  11. package/dist/{chunk-M7UL5S3Q.js → chunk-2IOP6PHB.js} +1 -1
  12. package/dist/{chunk-JJ7W6WSB.js → chunk-47XDEWWV.js} +5 -5
  13. package/dist/{chunk-RSX4OPZY.js → chunk-47ZPNLF4.js} +7 -7
  14. package/dist/{chunk-RPZZSXV3.js → chunk-4JSR7YO7.js} +20 -1
  15. package/dist/chunk-6LXAAQ43.js +22 -0
  16. package/dist/{chunk-TSXLLQZW.js → chunk-6OWJXUAR.js} +10 -1
  17. package/dist/{chunk-I5KY25PQ.js → chunk-6WAWMWR5.js} +1 -1
  18. package/dist/{chunk-LSGWR54X.js → chunk-7F2SW2KD.js} +2 -2
  19. package/dist/chunk-7KJOFUNN.js +22 -0
  20. package/dist/{spirit-N4W4UQRH.js → chunk-B2BVAIZ4.js} +21 -12
  21. package/dist/{chunk-LGB6JBHI.js → chunk-BDK73LK6.js} +5 -55
  22. package/dist/{chunk-IYDIE3HG.js → chunk-BFWHBQK4.js} +1 -1
  23. package/dist/{chunk-TDRYEPH4.js → chunk-BM474GX6.js} +4 -4
  24. package/dist/{chunk-R7E6CRVQ.js → chunk-BTWAGDV5.js} +1 -1
  25. package/dist/{chunk-WKF5FEFK.js → chunk-CVL5IGIR.js} +629 -174
  26. package/dist/{chunk-S6NFERDC.js → chunk-E5C7OWZ2.js} +20 -22
  27. package/dist/chunk-FYCALD4Q.js +23 -0
  28. package/dist/{chunk-SKLSMHXO.js → chunk-IS7WJ56Q.js} +1 -1
  29. package/dist/{chunk-2NGTS5UU.js → chunk-M3K5AARV.js} +1 -1
  30. package/dist/{chunk-ALEF47VT.js → chunk-MLOQKQNB.js} +1 -1
  31. package/dist/{chunk-D5G5YOPL.js → chunk-N3DNFPVA.js} +41 -5
  32. package/dist/{chunk-LRCG2JLP.js → chunk-N7BLAHNE.js} +5 -1
  33. package/dist/chunk-OYAKCAVY.js +29 -0
  34. package/dist/{chunk-UKVWJRKN.js → chunk-PLDWHR4D.js} +1 -1
  35. package/dist/{chunk-QBQ424EM.js → chunk-TAHX36HZ.js} +545 -246
  36. package/dist/chunk-U5BTYSAL.js +59 -0
  37. package/dist/{chunk-SX5TKJBZ.js → chunk-V45JXOWY.js} +2 -2
  38. package/dist/{chunk-2FLJ63GU.js → chunk-V6ZCNULL.js} +2 -2
  39. package/dist/{chunk-QZANELPX.js → chunk-XWXBJQBE.js} +3 -2
  40. package/dist/cli.js +32 -24
  41. package/dist/{clock-2UOZ6JPU.js → clock-3X4DSC2N.js} +38 -23
  42. package/dist/{cloud-sync-JN3NWKEM.js → cloud-sync-TG3TIX5H.js} +21 -17
  43. package/dist/{config-H2H4UIF7.js → config-OROA5DUA.js} +4 -4
  44. package/dist/connectors/discord-bridge.js +1 -1
  45. package/dist/connectors/slack-bridge.js +1 -1
  46. package/dist/connectors/telegram-bridge.js +1 -1
  47. package/dist/{conversations-3O5O6AS3.js → conversations-HL2JP5GI.js} +5 -5
  48. package/dist/{create-RNLNCORE.js → create-3SEKKI6P.js} +5 -5
  49. package/dist/{create-WBBYI6V7.js → create-UOSOQ2HN.js} +4 -4
  50. package/dist/daemon-client-WOAQXXBM.js +12 -0
  51. package/dist/{daemon-restart-NGFHFAUF.js → daemon-restart-5ABHNXJZ.js} +9 -8
  52. package/dist/daemon.js +2730 -1520
  53. package/dist/{db-RA45JBFG.js → db-PLEDCBHZ.js} +1 -1
  54. package/dist/db-RYX3SS2W.js +9 -0
  55. package/dist/{delete-QTGWEDBI.js → delete-KYOVWR23.js} +3 -3
  56. package/dist/delivery-manager-2BR5NZKF.js +32 -0
  57. package/dist/{delivery-router-FL45JL7N.js → delivery-router-D5ELDMS2.js} +4 -4
  58. package/dist/down-QVFN4UPK.js +15 -0
  59. package/dist/{env-RLYQBOOP.js → env-R34DT7XL.js} +10 -6
  60. package/dist/exec-DVLXKRIO.js +17 -0
  61. package/dist/{export-SUYRLI5Q.js → export-6ZXAXATG.js} +6 -6
  62. package/dist/extension-PM42QCID.js +97 -0
  63. package/dist/extensions-BBGVL5JC.js +38 -0
  64. package/dist/{files-EAMPO2SJ.js → files-VQV2VZQO.js} +5 -5
  65. package/dist/{import-DDUFE7AY.js → import-MK2I2T6F.js} +5 -5
  66. package/dist/isolation-62MKDZN3.js +22 -0
  67. package/dist/{join-I5QEE3LG.js → join-DGYHTJUH.js} +3 -3
  68. package/dist/lib-DYEZMGW7.js +6588 -0
  69. package/dist/{list-DW2VRTOZ.js → list-C644WTHV.js} +16 -8
  70. package/dist/{login-7CHPW2PN.js → login-IIGEQPHL.js} +4 -4
  71. package/dist/{login-RIJF2F4G.js → login-KZQLMAWE.js} +4 -4
  72. package/dist/{logout-5MLHZALK.js → logout-AGTZVRGP.js} +4 -4
  73. package/dist/{logout-UZJRGY4Z.js → logout-KD6GXIJJ.js} +4 -4
  74. package/dist/message-delivery-V3R6NXJP.js +42 -0
  75. package/dist/{mind-2B6M7Y25.js → mind-BI4EPBVZ.js} +25 -19
  76. package/dist/{mind-activity-tracker-NZZT2NTT.js → mind-activity-tracker-2ACNHA7B.js} +5 -5
  77. package/dist/mind-history-WOYFLQAI.js +264 -0
  78. package/dist/{mind-list-WUPMQDYQ.js → mind-list-6VPM7GUQ.js} +4 -4
  79. package/dist/mind-manager-MWW3BTS4.js +32 -0
  80. package/dist/mind-profile-WPG42U5Y.js +47 -0
  81. package/dist/mind-service-VIKZJK2M.js +38 -0
  82. package/dist/{mind-sleep-B7BHJLH7.js → mind-sleep-XDISJY74.js} +4 -4
  83. package/dist/{mind-status-L3EFFRPR.js → mind-status-7FTZWPZF.js} +4 -4
  84. package/dist/{mind-wake-GY3RFX7Y.js → mind-wake-KIIKEI3A.js} +4 -4
  85. package/dist/{package-PK6JUFL3.js → package-V2WHWVG6.js} +9 -5
  86. package/dist/{read-5AMJRO3D.js → read-H5C26YO7.js} +18 -8
  87. package/dist/read-stdin-PIRM6A2Y.js +8 -0
  88. package/dist/{register-V2JZZKFK.js → register-J27WP33N.js} +4 -4
  89. package/dist/{registry-PJ4S5PHQ.js → registry-UYV5S6QT.js} +3 -3
  90. package/dist/{reject-33HEZMZ4.js → reject-OEANJYIA.js} +4 -4
  91. package/dist/{restart-3UCMRUVC.js → restart-V5EGYBJG.js} +4 -4
  92. package/dist/{sandbox-JANNTX6U.js → sandbox-SI5HMBP3.js} +5 -5
  93. package/dist/scheduler-AGG3L2FO.js +32 -0
  94. package/dist/{schema-PA3M5ZKH.js → schema-ETMABTW4.js} +4 -2
  95. package/dist/seed-WNGI6PNW.js +11 -0
  96. package/dist/seed-check-PXTH7YXS.js +32 -0
  97. package/dist/seed-cmd-VENFTGS3.js +36 -0
  98. package/dist/{seed-ALUQ55FF.js → seed-create-663ALOKH.js} +8 -8
  99. package/dist/{sprout-L2GFOVF7.js → seed-sprout-EH3AGKAI.js} +24 -11
  100. package/dist/{send-3MI36LEF.js → send-7FUUUZZH.js} +66 -51
  101. package/dist/{setup-SZIARWI6.js → setup-GGMKENLN.js} +6 -4
  102. package/dist/{setup-WENLVPVP.js → setup-Z3DEVWV7.js} +13 -11
  103. package/dist/{skill-TUVOTW4Z.js → skill-DKNYJS4P.js} +12 -8
  104. package/dist/skills/imagegen/SKILL.md +11 -7
  105. package/dist/skills/imagegen/scripts/imagegen.ts +146 -25
  106. package/dist/skills/orientation/SKILL.md +9 -2
  107. package/dist/skills/plan-coordinator/SKILL.md +60 -0
  108. package/dist/skills/seed-nurture/SKILL.md +42 -0
  109. package/dist/skills/volute-mind/SKILL.md +11 -221
  110. package/dist/skills/volute-mind/references/extensions.md +37 -0
  111. package/dist/skills/volute-mind/references/integrations.md +48 -0
  112. package/dist/skills/volute-mind/references/routing.md +86 -0
  113. package/dist/skills/volute-mind/references/sleep.md +33 -0
  114. package/dist/skills/volute-mind/references/variants.md +31 -0
  115. package/dist/{skills-XNZK6P4K.js → skills-Q6VZ2UGD.js} +11 -6
  116. package/dist/sleep-manager-BJK2ROPX.js +36 -0
  117. package/dist/spirit-4JP4TY4C.js +23 -0
  118. package/dist/{split-STOROBYJ.js → split-3YPMS2CL.js} +3 -3
  119. package/dist/sprout-E3HJIV2Z.js +11 -0
  120. package/dist/{start-K2NCUUCG.js → start-W3TPKX4D.js} +4 -4
  121. package/dist/{status-TCUMUO6M.js → status-4OVFXFEJ.js} +7 -6
  122. package/dist/{stop-H26JZDXF.js → stop-GTT6YWYO.js} +4 -4
  123. package/dist/system-channel-DXD2JBOU.js +36 -0
  124. package/dist/system-chat-TYLOL7SX.js +36 -0
  125. package/dist/{systems-DHBKVYEY.js → systems-AYLO727G.js} +7 -7
  126. package/dist/{tailscale-XHQBZROW.js → tailscale-ZEUK7GKZ.js} +3 -3
  127. package/dist/{template-hash-A6VVKOXJ.js → template-hash-EJRTKE36.js} +1 -1
  128. package/dist/up-PA7F2CXE.js +18 -0
  129. package/dist/{update-QVPRF6GR.js → update-HG4LCUSG.js} +7 -6
  130. package/dist/{update-check-ZD6OOIYQ.js → update-check-X3YG4WVP.js} +4 -4
  131. package/dist/{upgrade-O4Q7WJM3.js → upgrade-YGNIDICG.js} +3 -3
  132. package/dist/{variant-7TGZHOU3.js → variant-MZUMRTQO.js} +1 -1
  133. package/dist/{version-notify-TCKWBZZG.js → version-notify-YCH4UVQ2.js} +23 -20
  134. package/dist/volute-config-WBKYJGYQ.js +10 -0
  135. package/dist/web-assets/assets/index-DiiwC-CZ.css +1 -0
  136. package/dist/web-assets/assets/index-d6y5b9Ij.js +75 -0
  137. package/dist/web-assets/ext-theme.css +48 -9
  138. package/dist/web-assets/index.html +2 -2
  139. package/drizzle/0005_meta_summaries.sql +15 -0
  140. package/drizzle/meta/0005_snapshot.json +7 -0
  141. package/drizzle/meta/_journal.json +7 -0
  142. package/package.json +8 -4
  143. package/packages/extensions/plan/dist/ui/assets/index-CJj2gZnZ.css +1 -0
  144. package/packages/extensions/plan/dist/ui/assets/index-FMEJmvQz.js +61 -0
  145. package/packages/extensions/plan/dist/ui/index.html +14 -0
  146. package/packages/extensions/plan/skills/plan/SKILL.md +43 -0
  147. package/packages/extensions/plan/skills/plan/scripts/plan-hook.sh +37 -0
  148. package/templates/_base/home/VOLUTE.md +12 -19
  149. package/templates/_base/src/lib/context-breakdown.ts +450 -0
  150. package/templates/_base/src/lib/format-prefix.ts +17 -0
  151. package/templates/_base/src/lib/hook-loader.ts +8 -2
  152. package/templates/_base/src/lib/router.ts +75 -33
  153. package/templates/_base/src/lib/routing.ts +4 -1
  154. package/templates/_base/src/lib/startup.ts +16 -8
  155. package/templates/_base/src/lib/types.ts +2 -1
  156. package/templates/_base/src/lib/volute-server.ts +69 -8
  157. package/templates/claude/.init/CLAUDE.md +4 -10
  158. package/templates/claude/package.json.tmpl +1 -0
  159. package/templates/claude/src/agent.ts +100 -32
  160. package/templates/claude/src/lib/hooks/reply-instructions.ts +27 -7
  161. package/templates/claude/src/lib/stream-consumer.ts +40 -2
  162. package/templates/claude/src/server.ts +1 -0
  163. package/templates/codex/package.json.tmpl +1 -0
  164. package/templates/codex/src/agent.ts +81 -8
  165. package/templates/codex/src/server.ts +1 -4
  166. package/templates/pi/package.json.tmpl +1 -0
  167. package/templates/pi/src/agent.ts +115 -36
  168. package/templates/pi/src/lib/event-handler.ts +22 -7
  169. package/templates/pi/src/lib/reply-instructions-extension.ts +23 -4
  170. package/templates/pi/src/lib/subagents.ts +20 -17
  171. package/templates/pi/src/server.ts +2 -5
  172. package/dist/chunk-K3NQKI34.js +0 -10
  173. package/dist/daemon-client-6QXHZ7US.js +0 -12
  174. package/dist/db-F34YLV7D.js +0 -9
  175. package/dist/delivery-manager-SDVXFD4W.js +0 -28
  176. package/dist/down-TB3ESMNP.js +0 -14
  177. package/dist/extension-FQ5D3NCC.js +0 -174
  178. package/dist/extensions-GDYWQXC4.js +0 -29
  179. package/dist/history-FO5PHBQ5.js +0 -128
  180. package/dist/message-delivery-2FIM7QKO.js +0 -32
  181. package/dist/mind-manager-BNCMGYXW.js +0 -28
  182. package/dist/mind-service-AV273WT4.js +0 -34
  183. package/dist/sleep-manager-53DZOWW7.js +0 -32
  184. package/dist/system-chat-NPYFYZVI.js +0 -32
  185. package/dist/up-6I6BHRTO.js +0 -17
  186. package/dist/web-assets/assets/index-Bui7U9Uu.css +0 -1
  187. package/dist/web-assets/assets/index-e36DIo1b.js +0 -73
@@ -5,10 +5,10 @@ import {
5
5
  extractArchive,
6
6
  isHomeOnlyArchive,
7
7
  readManifest
8
- } from "./chunk-I5KY25PQ.js";
9
- import "./chunk-LRCG2JLP.js";
10
- import "./chunk-RPZZSXV3.js";
11
- import "./chunk-K3NQKI34.js";
8
+ } from "./chunk-6WAWMWR5.js";
9
+ import "./chunk-N7BLAHNE.js";
10
+ import "./chunk-4JSR7YO7.js";
11
+ import "./chunk-7KJOFUNN.js";
12
12
  export {
13
13
  addHistoryToArchive,
14
14
  createExportArchive,
@@ -17,12 +17,12 @@ import {
17
17
  syncMindProfile,
18
18
  updateUserProfile,
19
19
  verifyUser
20
- } from "./chunk-TDRYEPH4.js";
21
- import "./chunk-QZANELPX.js";
20
+ } from "./chunk-BM474GX6.js";
21
+ import "./chunk-XWXBJQBE.js";
22
22
  import "./chunk-YUIHSKR6.js";
23
- import "./chunk-LRCG2JLP.js";
24
- import "./chunk-RPZZSXV3.js";
25
- import "./chunk-K3NQKI34.js";
23
+ import "./chunk-N7BLAHNE.js";
24
+ import "./chunk-4JSR7YO7.js";
25
+ import "./chunk-7KJOFUNN.js";
26
26
  export {
27
27
  approveUser,
28
28
  changePassword,
@@ -4,10 +4,10 @@ import {
4
4
  } from "./chunk-D424ZQGI.js";
5
5
  import {
6
6
  daemonFetch
7
- } from "./chunk-UKVWJRKN.js";
8
- import "./chunk-LRCG2JLP.js";
9
- import "./chunk-RPZZSXV3.js";
10
- import "./chunk-K3NQKI34.js";
7
+ } from "./chunk-PLDWHR4D.js";
8
+ import "./chunk-N7BLAHNE.js";
9
+ import "./chunk-4JSR7YO7.js";
10
+ import "./chunk-7KJOFUNN.js";
11
11
 
12
12
  // src/commands/chat/bridge.ts
13
13
  async function run(args) {
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import "./chunk-K3NQKI34.js";
2
+ import "./chunk-7KJOFUNN.js";
3
3
 
4
4
  // src/commands/chat.ts
5
5
  async function run(args) {
@@ -7,28 +7,28 @@ async function run(args) {
7
7
  const subArgs = args.slice(1);
8
8
  switch (subcommand) {
9
9
  case "send":
10
- await import("./send-3MI36LEF.js").then((m) => m.run(subArgs));
10
+ await import("./send-7FUUUZZH.js").then((m) => m.run(subArgs));
11
11
  break;
12
12
  case "list":
13
- await import("./list-DW2VRTOZ.js").then((m) => m.run(subArgs));
13
+ await import("./list-C644WTHV.js").then((m) => m.run(subArgs));
14
14
  break;
15
15
  case "read":
16
- await import("./read-5AMJRO3D.js").then((m) => m.run(subArgs));
16
+ await import("./read-H5C26YO7.js").then((m) => m.run(subArgs));
17
17
  break;
18
18
  case "create":
19
- await import("./create-RNLNCORE.js").then((m) => m.run(subArgs));
19
+ await import("./create-3SEKKI6P.js").then((m) => m.run(subArgs));
20
20
  break;
21
21
  case "bridge":
22
- await import("./bridge-BVCBTGPF.js").then((m) => m.run(subArgs));
22
+ await import("./bridge-O753D5F4.js").then((m) => m.run(subArgs));
23
23
  break;
24
24
  case "files":
25
- await import("./files-EAMPO2SJ.js").then((m) => m.run(subArgs));
25
+ await import("./files-VQV2VZQO.js").then((m) => m.run(subArgs));
26
26
  break;
27
27
  case "accept":
28
- await import("./accept-74M7I4RZ.js").then((m) => m.run(subArgs));
28
+ await import("./accept-TW6V4WI4.js").then((m) => m.run(subArgs));
29
29
  break;
30
30
  case "reject":
31
- await import("./reject-33HEZMZ4.js").then((m) => m.run(subArgs));
31
+ await import("./reject-OEANJYIA.js").then((m) => m.run(subArgs));
32
32
  break;
33
33
  case "--help":
34
34
  case "-h":
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  voluteSystemDir
4
- } from "./chunk-LRCG2JLP.js";
4
+ } from "./chunk-N7BLAHNE.js";
5
5
 
6
6
  // src/lib/update-check.ts
7
7
  import { existsSync, readFileSync, writeFileSync } from "fs";
@@ -4,17 +4,17 @@ import {
4
4
  modeLabel,
5
5
  pollHealth,
6
6
  startService
7
- } from "./chunk-LSGWR54X.js";
8
- import {
9
- readGlobalConfig
10
- } from "./chunk-TSXLLQZW.js";
7
+ } from "./chunk-7F2SW2KD.js";
11
8
  import {
12
9
  parseArgs
13
10
  } from "./chunk-D424ZQGI.js";
11
+ import {
12
+ readGlobalConfig
13
+ } from "./chunk-6OWJXUAR.js";
14
14
  import {
15
15
  voluteHome,
16
16
  voluteSystemDir
17
- } from "./chunk-LRCG2JLP.js";
17
+ } from "./chunk-N7BLAHNE.js";
18
18
 
19
19
  // src/commands/up.ts
20
20
  import { spawn } from "child_process";
@@ -3,7 +3,7 @@ import {
3
3
  readEnv,
4
4
  sharedEnvPath,
5
5
  writeEnv
6
- } from "./chunk-2NGTS5UU.js";
6
+ } from "./chunk-M3K5AARV.js";
7
7
  import {
8
8
  logger_default
9
9
  } from "./chunk-YUIHSKR6.js";
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-D424ZQGI.js";
13
13
  import {
14
14
  voluteSystemDir
15
- } from "./chunk-LRCG2JLP.js";
15
+ } from "./chunk-N7BLAHNE.js";
16
16
 
17
17
  // src/commands/import.ts
18
18
  import {
@@ -112,8 +112,8 @@ async function run(args) {
112
112
  return;
113
113
  }
114
114
  const wsDir = resolveWorkspace(inputPath);
115
- const { daemonFetch } = await import("./daemon-client-6QXHZ7US.js");
116
- const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
115
+ const { daemonFetch } = await import("./daemon-client-WOAQXXBM.js");
116
+ const { getClient, urlOf } = await import("./api-client-XUXOB7LI.js");
117
117
  const client = getClient();
118
118
  const res = await daemonFetch(urlOf(client.api.minds.import.$url()), {
119
119
  method: "POST",
@@ -152,7 +152,7 @@ async function importArchive(archivePath, nameOverride) {
152
152
  console.error(`File not found: ${archivePath}`);
153
153
  process.exit(1);
154
154
  }
155
- const { extractArchive } = await import("./archive-INXYFVCW.js");
155
+ const { extractArchive } = await import("./archive-C2VEMQOR.js");
156
156
  const tempDir = resolve2(tmpdir(), `volute-import-${Date.now()}`);
157
157
  mkdirSync(tempDir, { recursive: true });
158
158
  let extracted;
@@ -164,8 +164,8 @@ async function importArchive(archivePath, nameOverride) {
164
164
  process.exit(1);
165
165
  }
166
166
  try {
167
- const { daemonFetch } = await import("./daemon-client-6QXHZ7US.js");
168
- const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
167
+ const { daemonFetch } = await import("./daemon-client-WOAQXXBM.js");
168
+ const { getClient, urlOf } = await import("./api-client-XUXOB7LI.js");
169
169
  const client = getClient();
170
170
  const res = await daemonFetch(urlOf(client.api.minds.import.$url()), {
171
171
  method: "POST",
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  __export
4
- } from "./chunk-K3NQKI34.js";
4
+ } from "./chunk-7KJOFUNN.js";
5
5
 
6
6
  // src/lib/schema.ts
7
7
  var schema_exports = {};
@@ -16,6 +16,7 @@ __export(schema_exports, {
16
16
  minds: () => minds,
17
17
  sessions: () => sessions,
18
18
  sharedSkills: () => sharedSkills,
19
+ summaries: () => summaries,
19
20
  systemPrompts: () => systemPrompts,
20
21
  turns: () => turns,
21
22
  users: () => users
@@ -83,6 +84,7 @@ var turns = sqliteTable(
83
84
  session: text("session"),
84
85
  trigger_event_id: integer("trigger_event_id"),
85
86
  summary_event_id: integer("summary_event_id"),
87
+ summary_id: integer("summary_id"),
86
88
  status: text("status").notNull().default("active"),
87
89
  created_at: text("created_at").notNull().default(sql`(datetime('now'))`)
88
90
  },
@@ -180,6 +182,22 @@ var activity = sqliteTable(
180
182
  index("idx_activity_turn_id").on(table.turn_id)
181
183
  ]
182
184
  );
185
+ var summaries = sqliteTable(
186
+ "summaries",
187
+ {
188
+ id: integer("id").primaryKey({ autoIncrement: true }),
189
+ mind: text("mind").notNull(),
190
+ period: text("period").notNull(),
191
+ period_key: text("period_key").notNull(),
192
+ content: text("content").notNull(),
193
+ metadata: text("metadata"),
194
+ created_at: text("created_at").notNull().default(sql`(datetime('now'))`)
195
+ },
196
+ (table) => [
197
+ uniqueIndex("idx_summaries_unique").on(table.mind, table.period, table.period_key),
198
+ index("idx_summaries_mind_period").on(table.mind, table.period)
199
+ ]
200
+ );
183
201
  var conversationReads = sqliteTable(
184
202
  "conversation_reads",
185
203
  {
@@ -221,6 +239,7 @@ export {
221
239
  sharedSkills,
222
240
  deliveryQueue,
223
241
  activity,
242
+ summaries,
224
243
  conversationReads,
225
244
  messages,
226
245
  schema_exports
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/lib/read-stdin.ts
4
+ import { isatty } from "tty";
5
+ async function readStdin() {
6
+ if (isatty(0)) return void 0;
7
+ const chunks = [];
8
+ try {
9
+ for await (const chunk of process.stdin) {
10
+ chunks.push(chunk);
11
+ }
12
+ } catch (err) {
13
+ console.error(`Failed to read from stdin: ${err instanceof Error ? err.message : String(err)}`);
14
+ process.exit(1);
15
+ }
16
+ const text = Buffer.concat(chunks).toString().replace(/\r?\n$/, "");
17
+ return text || void 0;
18
+ }
19
+
20
+ export {
21
+ readStdin
22
+ };
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  voluteSystemDir
4
- } from "./chunk-LRCG2JLP.js";
4
+ } from "./chunk-N7BLAHNE.js";
5
5
 
6
6
  // src/lib/setup.ts
7
7
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
@@ -29,6 +29,14 @@ function isSetupComplete() {
29
29
  const config = readGlobalConfig();
30
30
  return config.setupCompleted === true;
31
31
  }
32
+ function isImagegenEnabled() {
33
+ const config = readGlobalConfig();
34
+ const ig = config.imagegen;
35
+ if (!ig) return false;
36
+ if (ig.enabled === true) return true;
37
+ if (ig.providers && Object.keys(ig.providers).length > 0) return true;
38
+ return false;
39
+ }
32
40
  function migrateSetupCompleted() {
33
41
  const config = readGlobalConfig();
34
42
  if (config.setup != null && config.setupCompleted == null) {
@@ -42,5 +50,6 @@ export {
42
50
  readGlobalConfig,
43
51
  writeGlobalConfig,
44
52
  isSetupComplete,
53
+ isImagegenEnabled,
45
54
  migrateSetupCompleted
46
55
  };
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  mindDir,
4
4
  stateDir
5
- } from "./chunk-LRCG2JLP.js";
5
+ } from "./chunk-N7BLAHNE.js";
6
6
 
7
7
  // src/lib/archive.ts
8
8
  import { execFileSync } from "child_process";
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  exec,
4
4
  execInherit
5
- } from "./chunk-LGB6JBHI.js";
5
+ } from "./chunk-U5BTYSAL.js";
6
6
  import {
7
7
  voluteSystemDir
8
- } from "./chunk-LRCG2JLP.js";
8
+ } from "./chunk-N7BLAHNE.js";
9
9
 
10
10
  // src/lib/service-mode.ts
11
11
  import { execFileSync } from "child_process";
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env node
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
5
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
6
+ }) : x)(function(x) {
7
+ if (typeof require !== "undefined") return require.apply(this, arguments);
8
+ throw Error('Dynamic require of "' + x + '" is not supported');
9
+ });
10
+ var __commonJS = (cb, mod) => function __require2() {
11
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
12
+ };
13
+ var __export = (target, all) => {
14
+ for (var name in all)
15
+ __defProp(target, name, { get: all[name], enumerable: true });
16
+ };
17
+
18
+ export {
19
+ __require,
20
+ __commonJS,
21
+ __export
22
+ };
@@ -8,28 +8,26 @@ import {
8
8
  import {
9
9
  getSharedSkill,
10
10
  installSkill
11
- } from "./chunk-D5G5YOPL.js";
11
+ } from "./chunk-N3DNFPVA.js";
12
12
  import {
13
13
  qualifyModelId,
14
14
  resolveTemplate
15
- } from "./chunk-IYDIE3HG.js";
15
+ } from "./chunk-BFWHBQK4.js";
16
16
  import {
17
17
  logger_default
18
18
  } from "./chunk-YUIHSKR6.js";
19
19
  import {
20
20
  exec
21
- } from "./chunk-LGB6JBHI.js";
21
+ } from "./chunk-U5BTYSAL.js";
22
22
  import {
23
23
  readGlobalConfig
24
- } from "./chunk-TSXLLQZW.js";
24
+ } from "./chunk-6OWJXUAR.js";
25
25
  import {
26
26
  addSpirit,
27
27
  findMind,
28
28
  nextPort,
29
29
  voluteSystemDir
30
- } from "./chunk-LRCG2JLP.js";
31
- import "./chunk-RPZZSXV3.js";
32
- import "./chunk-K3NQKI34.js";
30
+ } from "./chunk-N7BLAHNE.js";
33
31
 
34
32
  // src/lib/spirit.ts
35
33
  import { cpSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "fs";
@@ -81,7 +79,13 @@ async function ensureSpiritProject() {
81
79
  } catch (err) {
82
80
  slog.warn("git init failed for spirit \u2014 not critical", logger_default.errorData(err));
83
81
  }
84
- const spiritSkills = ["volute-admin", "orientation", "memory"];
82
+ const spiritSkills = [
83
+ "volute-admin",
84
+ "orientation",
85
+ "memory",
86
+ "seed-nurture",
87
+ "plan-coordinator"
88
+ ];
85
89
  for (const skillId of spiritSkills) {
86
90
  try {
87
91
  const shared = await getSharedSkill(skillId);
@@ -92,6 +96,10 @@ async function ensureSpiritProject() {
92
96
  slog.warn(`failed to install skill ${skillId} for spirit`, logger_default.errorData(err));
93
97
  }
94
98
  }
99
+ const { createMindUser, chownMindDir, ensureVoluteGroup } = await import("./isolation-62MKDZN3.js");
100
+ ensureVoluteGroup();
101
+ createMindUser("volute", resolve(dir, "home"));
102
+ chownMindDir(dir, "volute");
95
103
  const port = await nextPort();
96
104
  await addSpirit("volute", port, template, dir);
97
105
  slog.info("spirit project created");
@@ -122,8 +130,8 @@ async function syncSpiritTemplate() {
122
130
  cpSync(newPkg, resolve(dir, "package.json"));
123
131
  await exec("npm", ["install", "--ignore-scripts"], { cwd: dir });
124
132
  }
125
- const db = await (await import("./db-F34YLV7D.js")).getDb();
126
- const { minds } = await import("./schema-PA3M5ZKH.js");
133
+ const db = await (await import("./db-RYX3SS2W.js")).getDb();
134
+ const { minds } = await import("./schema-ETMABTW4.js");
127
135
  const { eq } = await import("drizzle-orm");
128
136
  await db.update(minds).set({ template: expectedTemplate }).where(eq(minds.name, "volute"));
129
137
  }
@@ -209,9 +217,10 @@ When helping humans create minds:
209
217
  - You maintain separate context per conversation
210
218
  `;
211
219
  }
220
+
212
221
  export {
213
- ensureSpiritProject,
214
- getSpiritModel,
215
222
  spiritDir,
223
+ getSpiritModel,
224
+ ensureSpiritProject,
216
225
  syncSpiritTemplate
217
226
  };
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  getBaseName,
4
4
  validateMindName
5
- } from "./chunk-LRCG2JLP.js";
5
+ } from "./chunk-N7BLAHNE.js";
6
6
 
7
7
  // src/lib/isolation.ts
8
8
  import { execFileSync } from "child_process";
@@ -11,7 +11,9 @@ function isIsolationEnabled() {
11
11
  }
12
12
  function mindUserName(mindName) {
13
13
  const err = validateMindName(mindName);
14
- if (err) throw new Error(`Invalid mind name for isolation: ${err}`);
14
+ if (err && mindName !== "volute") {
15
+ throw new Error(`Invalid mind name for isolation: ${err}`);
16
+ }
15
17
  const prefix = process.env.VOLUTE_USER_PREFIX ?? "mind-";
16
18
  return `${prefix}${mindName}`;
17
19
  }
@@ -166,54 +168,6 @@ function chownMindDir(dir, name) {
166
168
  }
167
169
  }
168
170
 
169
- // src/lib/exec.ts
170
- import { execFile as execFileCb, execFileSync as execFileSync2, spawn } from "child_process";
171
- async function exec(cmd, args, options) {
172
- const [wrappedCmd, wrappedArgs] = options?.mindName ? await wrapForIsolation(cmd, args, options.mindName) : [cmd, args];
173
- return new Promise((resolve, reject) => {
174
- execFileCb(
175
- wrappedCmd,
176
- wrappedArgs,
177
- { cwd: options?.cwd, env: options?.env },
178
- (err, stdout, stderr) => {
179
- if (err) {
180
- err.stderr = stderr;
181
- err.stdout = stdout;
182
- reject(err);
183
- } else {
184
- resolve(stdout);
185
- }
186
- }
187
- );
188
- });
189
- }
190
- function gitExec(args, options) {
191
- const fullArgs = process.env.VOLUTE_ISOLATION === "user" ? ["-c", "safe.directory=*", ...args] : args;
192
- return exec("git", fullArgs, options);
193
- }
194
- function resolveVoluteBin() {
195
- try {
196
- return execFileSync2("which", ["volute"], { encoding: "utf-8" }).trim();
197
- } catch {
198
- throw new Error("Could not find volute binary on PATH");
199
- }
200
- }
201
- async function execInherit(cmd, args, options) {
202
- const [wrappedCmd, wrappedArgs] = options?.mindName ? await wrapForIsolation(cmd, args, options.mindName) : [cmd, args];
203
- return new Promise((resolve, reject) => {
204
- const child = spawn(wrappedCmd, wrappedArgs, {
205
- cwd: options?.cwd,
206
- env: options?.env,
207
- stdio: "inherit"
208
- });
209
- child.on("error", reject);
210
- child.on("close", (code) => {
211
- if (code === 0) resolve();
212
- else reject(new Error(`${cmd} ${args.join(" ")} exited with code ${code}`));
213
- });
214
- });
215
- }
216
-
217
171
  export {
218
172
  isIsolationEnabled,
219
173
  mindUserName,
@@ -221,9 +175,5 @@ export {
221
175
  createMindUser,
222
176
  deleteMindUser,
223
177
  wrapForIsolation,
224
- chownMindDir,
225
- exec,
226
- gitExec,
227
- resolveVoluteBin,
228
- execInherit
178
+ chownMindDir
229
179
  };
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  readGlobalConfig,
7
7
  writeGlobalConfig
8
- } from "./chunk-TSXLLQZW.js";
8
+ } from "./chunk-6OWJXUAR.js";
9
9
 
10
10
  // src/lib/ai-service.ts
11
11
  import { complete, getEnvApiKey, getModel, getModels, getProviders } from "@mariozechner/pi-ai";
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  broadcast
4
- } from "./chunk-QZANELPX.js";
4
+ } from "./chunk-XWXBJQBE.js";
5
5
  import {
6
6
  getDb
7
- } from "./chunk-LRCG2JLP.js";
7
+ } from "./chunk-N7BLAHNE.js";
8
8
  import {
9
9
  users
10
- } from "./chunk-RPZZSXV3.js";
10
+ } from "./chunk-4JSR7YO7.js";
11
11
 
12
12
  // src/lib/auth.ts
13
13
  import { compareSync, hashSync } from "bcryptjs";
@@ -99,7 +99,7 @@ async function getOrCreateSystemUser() {
99
99
  password_hash: "!system",
100
100
  role: "system",
101
101
  user_type: "system",
102
- display_name: "Volute"
102
+ display_name: "volute"
103
103
  }).returning(userSelectFields);
104
104
  return result;
105
105
  } catch (err) {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  publish
4
- } from "./chunk-QZANELPX.js";
4
+ } from "./chunk-XWXBJQBE.js";
5
5
  import {
6
6
  logger_default
7
7
  } from "./chunk-YUIHSKR6.js";