volute 0.47.0 → 0.49.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 (177) hide show
  1. package/README.md +82 -331
  2. package/dist/{accept-YAFP5JFJ.js → accept-KYNC5X3U.js} +3 -3
  3. package/dist/{activity-events-MIOK3IOU.js → activity-events-GJJAI2WT.js} +4 -4
  4. package/dist/{ai-service-CVZEYKTK.js → ai-service-A7FS7EC3.js} +9 -5
  5. package/dist/{archive-6Z4GFQPH.js → archive-7E3YE6VF.js} +3 -3
  6. package/dist/{auth-A4VGHADI.js → auth-ABYLOEZ7.js} +5 -5
  7. package/dist/{avatar-image-7S3WA77A.js → avatar-image-6ATV2IOZ.js} +6 -5
  8. package/dist/{backup-IIAFOW2L.js → backup-XYAMT4CU.js} +15 -15
  9. package/dist/{bridge-TIZGSXOD.js → bridge-3FNSWLNQ.js} +3 -3
  10. package/dist/{channels-ITE4YC57.js → channels-SGQZHNQJ.js} +3 -3
  11. package/dist/{chat-AJLJCQ3M.js → chat-OGXAEXMV.js} +9 -9
  12. package/dist/{chunk-LTLFOSA4.js → chunk-3B427GUK.js} +3 -3
  13. package/dist/{chunk-RUFLGTOT.js → chunk-4B62E4CG.js} +2 -2
  14. package/dist/{chunk-ODDGGLM6.js → chunk-4DSGN4FL.js} +3 -3
  15. package/dist/{chunk-BGYHLR54.js → chunk-6HGEZJDH.js} +2 -2
  16. package/dist/{chunk-RBNMDAKB.js → chunk-BCG45AQB.js} +15 -1
  17. package/dist/{chunk-5IERLDUS.js → chunk-DAIIMBLB.js} +26 -6
  18. package/dist/{chunk-DGGZVZTM.js → chunk-DVN6DNMI.js} +1 -1
  19. package/dist/chunk-DW4TRDOZ.js +29 -0
  20. package/dist/chunk-EADX54RG.js +113 -0
  21. package/dist/{chunk-EIQDZC43.js → chunk-EFT2OALG.js} +6 -2
  22. package/dist/{chunk-XHN6XBWV.js → chunk-EG5LSKHU.js} +2 -2
  23. package/dist/{chunk-VMCZBXF2.js → chunk-FBBS4BVR.js} +10 -34
  24. package/dist/{chunk-IWJSNMSY.js → chunk-GWVFDUNB.js} +45 -14
  25. package/dist/{chunk-CBOIHNMR.js → chunk-HCYQRME2.js} +41 -5
  26. package/dist/{chunk-4I72V3E5.js → chunk-IH5TKXX6.js} +15 -15
  27. package/dist/{chunk-5NN2VHJV.js → chunk-JBIFXB6I.js} +4 -4
  28. package/dist/{chunk-JSVHH32K.js → chunk-JCBPU57A.js} +15 -13
  29. package/dist/{chunk-M3XDVS5Q.js → chunk-JCWB2ITW.js} +2 -2
  30. package/dist/{chunk-JCMGDCGX.js → chunk-JPGHSXSV.js} +20 -25
  31. package/dist/{chunk-K23P5Q5N.js → chunk-K3JOLGWF.js} +30 -8
  32. package/dist/{chunk-3YUBFTDN.js → chunk-KHCKZ36O.js} +1 -1
  33. package/dist/{chunk-7KRIHYLR.js → chunk-L27YYONJ.js} +2 -2
  34. package/dist/{chunk-SZJCJVXV.js → chunk-MG3Z34YE.js} +2 -2
  35. package/dist/{chunk-SKNXMUIU.js → chunk-NJHN6IRB.js} +26 -2
  36. package/dist/{chunk-2OIYNHWO.js → chunk-NOIAHMJB.js} +1 -1
  37. package/dist/{chunk-2MJ7EOMT.js → chunk-P4LHVRNE.js} +1 -0
  38. package/dist/{chunk-IYG4FBMP.js → chunk-PY24ZL62.js} +1 -1
  39. package/dist/{chunk-F55GRIEK.js → chunk-QQBOI3QA.js} +356 -296
  40. package/dist/{chunk-T2TP6ZC6.js → chunk-QUSMYGNQ.js} +6 -0
  41. package/dist/{chunk-KDLYIECM.js → chunk-R772ET2M.js} +18 -4
  42. package/dist/{chunk-WW6C3PLV.js → chunk-RSBL3FAD.js} +39 -6
  43. package/dist/{mind-list-KEGRGQEQ.js → chunk-SHKM5RGD.js} +19 -6
  44. package/dist/{chunk-YKA7DCVW.js → chunk-SX72DOO3.js} +1 -1
  45. package/dist/chunk-TXJL36ZQ.js +48 -0
  46. package/dist/{chunk-M6TTZRGH.js → chunk-VIUH5CHQ.js} +72 -24
  47. package/dist/{chunk-HPGN6XRT.js → chunk-VNRSXEBF.js} +4 -4
  48. package/dist/{chunk-PFZBNKUH.js → chunk-WCFSBH33.js} +0 -1
  49. package/dist/chunk-XTEKINWG.js +158 -0
  50. package/dist/{chunk-LWDTP6DH.js → chunk-YIJGKHIS.js} +32 -2
  51. package/dist/{chunk-MTRMQFCQ.js → chunk-ZX46PGCC.js} +2 -2
  52. package/dist/cli.js +34 -26
  53. package/dist/{clock-E6N5Y3YW.js → clock-6JZL2FS6.js} +3 -3
  54. package/dist/{cloud-sync-LQTVDTQ3.js → cloud-sync-VFDTNNCA.js} +22 -20
  55. package/dist/{config-TJLYUV3U.js → config-RPSLA2HX.js} +3 -3
  56. package/dist/{conversations-C7IKYSHD.js → conversations-TUM5PJJ4.js} +5 -5
  57. package/dist/{create-A7PDHIIL.js → create-VIQVP3QB.js} +3 -3
  58. package/dist/{create-PQQXKTJK.js → create-Z5FSDNVZ.js} +16 -5
  59. package/dist/{daemon-client-IYR4KCPU.js → daemon-client-ZFY5MOAL.js} +5 -3
  60. package/dist/{daemon-restart-5F3YTLZK.js → daemon-restart-54L4B6AQ.js} +7 -7
  61. package/dist/daemon.js +1105 -601
  62. package/dist/{db-FO6LXYCW.js → db-F6UMFRYD.js} +2 -2
  63. package/dist/{db-LZTLA7XC.js → db-IPXRJUI7.js} +1 -1
  64. package/dist/{delete-HPLC7ETU.js → delete-ESEP7NGQ.js} +1 -1
  65. package/dist/delivery-manager-RBXBPVWM.js +36 -0
  66. package/dist/{delivery-router-3QFG2ZEX.js → delivery-router-VUOL5YSA.js} +8 -6
  67. package/dist/{down-ZI4S6265.js → down-6X7KX7BZ.js} +5 -5
  68. package/dist/echo-text-B6NZ5FGE.js +36 -0
  69. package/dist/env-KUL4XKN2.js +18 -0
  70. package/dist/{env-HRL2PWAT.js → env-ZYMSCB7B.js} +6 -6
  71. package/dist/{exec-QIFYZG4C.js → exec-FBXA3CM4.js} +3 -3
  72. package/dist/{export-4GVGNW54.js → export-TNBPDH77.js} +4 -4
  73. package/dist/{extension-QBY4C44L.js → extension-J4ZQ2GHV.js} +3 -3
  74. package/dist/{extensions-PIMIQ7J3.js → extensions-AWNO3SZF.js} +22 -20
  75. package/dist/{files-FEFZKMNM.js → files-BVBRJJ2P.js} +6 -6
  76. package/dist/{import-7MO3YTRE.js → import-ZUNKMCKC.js} +9 -9
  77. package/dist/{isolation-MCT4ZYLT.js → isolation-OPCZQRTH.js} +3 -3
  78. package/dist/{join-ZJV7W6MO.js → join-34TR2GXQ.js} +1 -1
  79. package/dist/{list-LQO2DCIK.js → list-PMUXZNAM.js} +3 -3
  80. package/dist/{login-OF4WXDAN.js → login-KAKNFCW5.js} +14 -5
  81. package/dist/{login-6TLMI2TQ.js → login-LKNLCJPA.js} +3 -3
  82. package/dist/{logout-ERE2BGA3.js → logout-RLT62RQP.js} +5 -5
  83. package/dist/{logout-BK53HXNY.js → logout-YZRMZ3O2.js} +3 -3
  84. package/dist/message-delivery-ABPV76EA.js +42 -0
  85. package/dist/{mind-POOHFZHP.js → mind-IF6CGMFW.js} +23 -19
  86. package/dist/{mind-activity-tracker-YVZPC4A5.js → mind-activity-tracker-YMMERB6B.js} +5 -5
  87. package/dist/mind-contacts-BKUFPUCU.js +64 -0
  88. package/dist/{mind-history-47DN6ILW.js → mind-history-WI5OI3BW.js} +5 -5
  89. package/dist/mind-list-OTHV4ZO4.js +13 -0
  90. package/dist/{mind-profile-PEQYASQX.js → mind-profile-LUG353ZT.js} +1 -1
  91. package/dist/mind-service-42GDO4KH.js +44 -0
  92. package/dist/{mind-sleep-IN3WPA76.js → mind-sleep-VBV7YRSU.js} +5 -5
  93. package/dist/{mind-status-SMUWJKGV.js → mind-status-BJNPGXKC.js} +8 -3
  94. package/dist/{mind-wake-R54BPESY.js → mind-wake-LVTZ55EZ.js} +3 -3
  95. package/dist/notices-N6BCGHFV.js +25 -0
  96. package/dist/{package-WPEE2HVJ.js → package-PD67VPHB.js} +8 -5
  97. package/dist/prompts-MDHDLWEX.js +24 -0
  98. package/dist/{read-PWAJOQIQ.js → read-YSWUXYL7.js} +3 -3
  99. package/dist/{register-7SZJFHU6.js → register-TWQDKQRT.js} +3 -3
  100. package/dist/{registry-UMMDRPRM.js → registry-3ELJPUGJ.js} +6 -2
  101. package/dist/{reject-6VH7N2A4.js → reject-SXGCYN4A.js} +3 -3
  102. package/dist/{restart-H5WJDMA7.js → restart-5F5QDBOG.js} +5 -5
  103. package/dist/{sandbox-G4X4K3UN.js → sandbox-XPYA7UIF.js} +5 -5
  104. package/dist/scheduler-K7Y7Z7FQ.js +34 -0
  105. package/dist/{schema-VEVO7HG6.js → schema-6YONVTKZ.js} +1 -1
  106. package/dist/{seed-VANPU43L.js → seed-NQED7PSX.js} +1 -1
  107. package/dist/{seed-check-VLTVILOV.js → seed-check-TYD7RRZY.js} +1 -1
  108. package/dist/{seed-cmd-SYVDZKM4.js → seed-cmd-QF3F2G4S.js} +3 -3
  109. package/dist/{seed-create-3FGZPS6C.js → seed-create-XOO4N2OE.js} +6 -4
  110. package/dist/seed-readiness-3LRYASA4.js +18 -0
  111. package/dist/{seed-sprout-H7QLFPFM.js → seed-sprout-HSBBGSS2.js} +32 -33
  112. package/dist/{send-HYDFGC6G.js → send-IHRJYNXA.js} +8 -8
  113. package/dist/{service-SYJ5G6LP.js → service-YCOPCTSZ.js} +4 -4
  114. package/dist/{service-install-FQ43Z4DF.js → service-install-Y46OTF55.js} +5 -5
  115. package/dist/{setup-QJHGMGSN.js → setup-F4TE64YI.js} +7 -7
  116. package/dist/{setup-KFYVWTXG.js → setup-TCN7VH5U.js} +9 -3
  117. package/dist/{skill-GUKG2YVH.js → skill-4CYJLYVY.js} +6 -6
  118. package/dist/skills/dreaming/SKILL.md +5 -1
  119. package/dist/skills/dreaming/scripts/dream.ts +5 -1
  120. package/dist/skills/orientation/SKILL.md +8 -7
  121. package/dist/skills/tending/SKILL.md +51 -2
  122. package/dist/skills/volute-mind/SKILL.md +5 -3
  123. package/dist/skills/volute-mind/references/routing.md +6 -5
  124. package/dist/skills/volute-mind/references/variants.md +48 -14
  125. package/dist/{skills-L2CMTW7A.js → skills-NN5UZCUU.js} +8 -6
  126. package/dist/sleep-manager-DSPXFHGX.js +38 -0
  127. package/dist/spirit-SSJMYC6A.js +31 -0
  128. package/dist/{split-WBMZXBHF.js → split-JF2VWTXA.js} +5 -2
  129. package/dist/{sprout-LTL5P36T.js → sprout-AXA2SECQ.js} +1 -1
  130. package/dist/{src-OJHARHTF.js → src-ZN4LXMPI.js} +17 -8
  131. package/dist/{start-X46I3GXB.js → start-BTVMTP3K.js} +5 -5
  132. package/dist/{status-V4RJMHJ4.js → status-VJGXMQ4L.js} +10 -8
  133. package/dist/{stop-HJQV4YSM.js → stop-YORESK4U.js} +5 -5
  134. package/dist/system-chat-M2XOBKEM.js +40 -0
  135. package/dist/{systems-B5YJKMW4.js → systems-5MH2ELQE.js} +6 -6
  136. package/dist/{tailscale-MCLY5GYE.js → tailscale-AMMVKDXB.js} +3 -3
  137. package/dist/{template-staleness-EMQORSGG.js → template-staleness-HKGCTS3H.js} +4 -4
  138. package/dist/{turn-tracker-JZRZDFWV.js → turn-tracker-JQ2YUUY2.js} +7 -7
  139. package/dist/up-SDLTLPAO.js +20 -0
  140. package/dist/{update-ACV4SAY3.js → update-WEA4N2TR.js} +5 -5
  141. package/dist/{update-check-266R4ZSY.js → update-check-DZOTONII.js} +3 -3
  142. package/dist/{upgrade-NWAZ7MLD.js → upgrade-K5FIQPQD.js} +1 -1
  143. package/dist/variant-cleanup-P4MBNLJD.js +33 -0
  144. package/dist/{version-notify-XRGTEEDK.js → version-notify-WFA5XB5A.js} +27 -25
  145. package/dist/web-assets/assets/index-BostMFoR.css +1 -0
  146. package/dist/web-assets/assets/index-CKlqUkyG.js +92 -0
  147. package/dist/web-assets/index.html +2 -2
  148. package/drizzle/0013_variant_purpose.sql +3 -0
  149. package/drizzle/meta/_journal.json +7 -0
  150. package/package.json +8 -5
  151. package/packages/extensions/pages/dist/ui/assets/index-BuXnE-rb.css +1 -0
  152. package/packages/extensions/pages/dist/ui/assets/index-DtzftuPA.js +2 -0
  153. package/packages/extensions/pages/dist/ui/index.html +2 -2
  154. package/templates/_base/.init/.local/hooks/startup-context.ts +19 -2
  155. package/templates/_base/home/VOLUTE.md +13 -1
  156. package/templates/_base/src/lib/daemon-client.ts +27 -7
  157. package/templates/_base/src/lib/startup.ts +16 -1
  158. package/templates/claude/src/agent.ts +10 -3
  159. package/templates/claude/src/lib/hooks/identity-reload.ts +12 -3
  160. package/templates/claude/src/server.ts +4 -2
  161. package/templates/pi/src/agent.ts +7 -10
  162. package/templates/pi/src/lib/dispatch.ts +65 -0
  163. package/templates/pi/src/lib/event-handler.ts +47 -6
  164. package/dist/delivery-manager-TN5KK2AP.js +0 -34
  165. package/dist/echo-text-SEQCLGAT.js +0 -34
  166. package/dist/message-delivery-ZE3YGJDD.js +0 -38
  167. package/dist/mind-service-JFY7UG5E.js +0 -40
  168. package/dist/scheduler-HQSDYJFY.js +0 -32
  169. package/dist/sleep-manager-3NA7ZJP3.js +0 -36
  170. package/dist/spirit-WXN4IDBF.js +0 -23
  171. package/dist/system-chat-N2F7HVY3.js +0 -38
  172. package/dist/up-J2PBPOZL.js +0 -18
  173. package/dist/volute-config-A52FHWKM.js +0 -14
  174. package/dist/web-assets/assets/index-DtctoDXY.css +0 -1
  175. package/dist/web-assets/assets/index-Wpyb2CML.js +0 -86
  176. package/packages/extensions/pages/dist/ui/assets/index-BcY6lnq4.css +0 -1
  177. package/packages/extensions/pages/dist/ui/assets/index-CQjEQg1r.js +0 -2
@@ -4,11 +4,11 @@ import {
4
4
  markIdle,
5
5
  onMindEvent,
6
6
  stopAll
7
- } from "./chunk-MTRMQFCQ.js";
8
- import "./chunk-LTLFOSA4.js";
9
- import "./chunk-T2TP6ZC6.js";
10
- import "./chunk-WW6C3PLV.js";
11
- import "./chunk-2MJ7EOMT.js";
7
+ } from "./chunk-ZX46PGCC.js";
8
+ import "./chunk-3B427GUK.js";
9
+ import "./chunk-QUSMYGNQ.js";
10
+ import "./chunk-RSBL3FAD.js";
11
+ import "./chunk-P4LHVRNE.js";
12
12
  import "./chunk-K3NQKI34.js";
13
13
  export {
14
14
  getActiveMinds,
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ relativeAge
4
+ } from "./chunk-SHKM5RGD.js";
5
+ import {
6
+ resolveMindName
7
+ } from "./chunk-BTY4WNFE.js";
8
+ import {
9
+ daemonFetch
10
+ } from "./chunk-BCG45AQB.js";
11
+ import {
12
+ getClient,
13
+ urlOf
14
+ } from "./chunk-LOPXTW6H.js";
15
+ import {
16
+ command
17
+ } from "./chunk-TXSA4Q3V.js";
18
+ import "./chunk-O7IGP7ZW.js";
19
+ import "./chunk-K3NQKI34.js";
20
+
21
+ // packages/cli/src/commands/mind-contacts.ts
22
+ var cmd = command({
23
+ name: "volute mind contacts",
24
+ description: "Who a mind has recently been in contact with (freshness-independent)",
25
+ flags: {
26
+ mind: { type: "string", description: "Mind name" },
27
+ hours: { type: "string", description: "Lookback window in hours (default 48)" }
28
+ },
29
+ examples: ["volute mind contacts --mind atlas", "volute mind contacts atlas --hours 24"],
30
+ run: async ({ flags }) => {
31
+ const name = resolveMindName(flags);
32
+ const client = getClient();
33
+ const url = client.api.minds[":name"].history.contacts.$url({ param: { name } });
34
+ if (flags.hours) url.searchParams.set("hours", flags.hours);
35
+ const res = await daemonFetch(urlOf(url));
36
+ if (!res.ok) {
37
+ let errorMsg = `Failed to get contacts: ${res.status}`;
38
+ try {
39
+ const data = await res.json();
40
+ if (data.error) errorMsg = data.error;
41
+ } catch {
42
+ }
43
+ console.error(errorMsg);
44
+ process.exit(1);
45
+ }
46
+ const { hours, contacts } = await res.json();
47
+ if (contacts.length === 0) {
48
+ console.log(`No contacts for ${name} in the last ${hours}h.`);
49
+ return;
50
+ }
51
+ console.log(`Recent contacts for ${name} (last ${hours}h):`);
52
+ for (const row of contacts) {
53
+ const channel = row.channel ?? "(unknown)";
54
+ const ago = relativeAge(row.last_at);
55
+ const last = ago ? `${ago} ago` : row.last_at;
56
+ const who = row.last_sender ? `, with ${row.last_sender}` : "";
57
+ console.log(` ${channel} \u2014 last ${last}, ${row.message_count} msg${who}`);
58
+ }
59
+ }
60
+ });
61
+ var run = cmd.execute;
62
+ export {
63
+ run
64
+ };
@@ -6,17 +6,17 @@ import {
6
6
  import {
7
7
  resolveMindName
8
8
  } from "./chunk-BTY4WNFE.js";
9
- import {
10
- command
11
- } from "./chunk-TXSA4Q3V.js";
12
- import "./chunk-O7IGP7ZW.js";
13
9
  import {
14
10
  daemonFetch
15
- } from "./chunk-RBNMDAKB.js";
11
+ } from "./chunk-BCG45AQB.js";
16
12
  import {
17
13
  getClient,
18
14
  urlOf
19
15
  } from "./chunk-LOPXTW6H.js";
16
+ import {
17
+ command
18
+ } from "./chunk-TXSA4Q3V.js";
19
+ import "./chunk-O7IGP7ZW.js";
20
20
  import "./chunk-K3NQKI34.js";
21
21
 
22
22
  // packages/cli/src/commands/mind-history.ts
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ relativeAge,
4
+ run
5
+ } from "./chunk-SHKM5RGD.js";
6
+ import "./chunk-BCG45AQB.js";
7
+ import "./chunk-TXSA4Q3V.js";
8
+ import "./chunk-O7IGP7ZW.js";
9
+ import "./chunk-K3NQKI34.js";
10
+ export {
11
+ relativeAge,
12
+ run
13
+ };
@@ -29,7 +29,7 @@ var cmd = command({
29
29
  );
30
30
  process.exit(1);
31
31
  }
32
- const { daemonFetch } = await import("./daemon-client-IYR4KCPU.js");
32
+ const { daemonFetch } = await import("./daemon-client-ZFY5MOAL.js");
33
33
  const body = {};
34
34
  if (displayName) body.displayName = displayName;
35
35
  if (description) body.description = description;
@@ -0,0 +1,44 @@
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-QQBOI3QA.js";
12
+ import "./chunk-VIUH5CHQ.js";
13
+ import "./chunk-RRZ4RQQU.js";
14
+ import "./chunk-EFT2OALG.js";
15
+ import "./chunk-K3JOLGWF.js";
16
+ import "./chunk-GWVFDUNB.js";
17
+ import "./chunk-4DSGN4FL.js";
18
+ import "./chunk-VNRSXEBF.js";
19
+ import "./chunk-JPGHSXSV.js";
20
+ import "./chunk-JCWB2ITW.js";
21
+ import "./chunk-XTEKINWG.js";
22
+ import "./chunk-ZX46PGCC.js";
23
+ import "./chunk-FBBS4BVR.js";
24
+ import "./chunk-DW4TRDOZ.js";
25
+ import "./chunk-WCFSBH33.js";
26
+ import "./chunk-DVN6DNMI.js";
27
+ import "./chunk-PY24ZL62.js";
28
+ import "./chunk-YIJGKHIS.js";
29
+ import "./chunk-NJHN6IRB.js";
30
+ import "./chunk-3B427GUK.js";
31
+ import "./chunk-QUSMYGNQ.js";
32
+ import "./chunk-RSBL3FAD.js";
33
+ import "./chunk-P4LHVRNE.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,19 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  parseDuration
4
- } from "./chunk-JSVHH32K.js";
4
+ } from "./chunk-JCBPU57A.js";
5
5
  import "./chunk-5T5YMX6S.js";
6
6
  import {
7
7
  resolveMindName
8
8
  } from "./chunk-BTY4WNFE.js";
9
+ import {
10
+ daemonFetch
11
+ } from "./chunk-BCG45AQB.js";
12
+ import "./chunk-LOPXTW6H.js";
9
13
  import {
10
14
  command
11
15
  } from "./chunk-TXSA4Q3V.js";
12
16
  import "./chunk-O7IGP7ZW.js";
13
- import {
14
- daemonFetch
15
- } from "./chunk-RBNMDAKB.js";
16
- import "./chunk-LOPXTW6H.js";
17
17
  import "./chunk-K3NQKI34.js";
18
18
 
19
19
  // packages/cli/src/commands/mind-sleep.ts
@@ -2,13 +2,13 @@
2
2
  import {
3
3
  resolveMindName
4
4
  } from "./chunk-BTY4WNFE.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-BCG45AQB.js";
5
8
  import {
6
9
  command
7
10
  } from "./chunk-TXSA4Q3V.js";
8
11
  import "./chunk-O7IGP7ZW.js";
9
- import {
10
- daemonFetch
11
- } from "./chunk-RBNMDAKB.js";
12
12
  import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // packages/cli/src/commands/mind-status.ts
@@ -44,6 +44,11 @@ var cmd = command({
44
44
  if (mind.templateStale) {
45
45
  console.log(`Template: outdated \u2014 run 'volute mind upgrade ${mind.name}'`);
46
46
  }
47
+ if (mind.lastNotice) {
48
+ const label = mind.lastNotice.kind === "turn_error" ? "Last turn failed" : "Last issue";
49
+ console.log(`
50
+ ${label}: ${mind.lastNotice.detail}`);
51
+ }
47
52
  if (mind.channels && mind.channels.length > 0) {
48
53
  console.log(`
49
54
  Channels:`);
@@ -2,13 +2,13 @@
2
2
  import {
3
3
  resolveMindName
4
4
  } from "./chunk-BTY4WNFE.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-BCG45AQB.js";
5
8
  import {
6
9
  command
7
10
  } from "./chunk-TXSA4Q3V.js";
8
11
  import "./chunk-O7IGP7ZW.js";
9
- import {
10
- daemonFetch
11
- } from "./chunk-RBNMDAKB.js";
12
12
  import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // packages/cli/src/commands/mind-wake.ts
@@ -0,0 +1,25 @@
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-XTEKINWG.js";
12
+ import "./chunk-QUSMYGNQ.js";
13
+ import "./chunk-RSBL3FAD.js";
14
+ import "./chunk-P4LHVRNE.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
+ };
@@ -4,7 +4,7 @@ import "./chunk-K3NQKI34.js";
4
4
  // package.json
5
5
  var package_default = {
6
6
  name: "volute",
7
- version: "0.47.0",
7
+ version: "0.49.0",
8
8
  description: "CLI for creating and managing self-modifying AI minds powered by the Claude Agent SDK",
9
9
  type: "module",
10
10
  license: "MIT",
@@ -49,9 +49,10 @@ var package_default = {
49
49
  scripts: {
50
50
  dev: "tsx src/cli.ts",
51
51
  build: "npm run build:ext && tsup && cp -r skills dist/skills && npm run build:web",
52
- "build:ext": "npm run build:ext-theme --workspace=packages/ui && cp packages/ui/dist/ext-theme.css packages/web/public/ext-theme.css && npm run build:ui --workspace=packages/extensions/notes && npm run build:ui --workspace=packages/extensions/pages && npm run build:ui --workspace=packages/extensions/plan",
53
- "build:web": "npm run build:ui --workspace=packages/web",
54
- "dev:web": "npm run dev --workspace=packages/web",
52
+ "ext-theme": "npm run build:ext-theme --workspace=packages/ui && cp packages/ui/dist/ext-theme.css packages/web/public/ext-theme.css",
53
+ "build:ext": "npm run ext-theme && npm run build:ui --workspace=packages/extensions/notes && npm run build:ui --workspace=packages/extensions/pages && npm run build:ui --workspace=packages/extensions/plan",
54
+ "build:web": "npm run ext-theme && npm run build:ui --workspace=packages/web",
55
+ "dev:web": "npm run ext-theme && npm run dev --workspace=packages/web",
55
56
  test: "node --import tsx --import ./test/setup.ts --test --test-force-exit --test-concurrency=4 $(find test -name '*.test.ts' ! -name 'daemon-e2e.test.ts' | sort)",
56
57
  "test:e2e": "node --import tsx --import ./test/setup.ts --test --test-force-exit --test-concurrency=1 test/daemon-e2e.test.ts",
57
58
  "test:all": "npm test && npm run test:e2e",
@@ -62,6 +63,7 @@ var package_default = {
62
63
  "typecheck:templates": "tsx scripts/typecheck-templates.ts",
63
64
  "lint:templates": "biome check templates/",
64
65
  "typecheck:web": "svelte-check --tsconfig packages/web/tsconfig.json",
66
+ knip: "knip --workspace packages/web --include files",
65
67
  prepare: "lefthook install",
66
68
  prepublishOnly: "npm run build",
67
69
  "db:generate": "drizzle-kit generate",
@@ -69,10 +71,10 @@ var package_default = {
69
71
  },
70
72
  dependencies: {
71
73
  "@anthropic-ai/sandbox-runtime": "^0.0.56",
74
+ "@earendil-works/pi-ai": "^0.80.3",
72
75
  "@hono/node-server": "^2.0.6",
73
76
  "@hono/zod-validator": "^0.8.0",
74
77
  "@libsql/client": "^0.17.4",
75
- "@earendil-works/pi-ai": "^0.80.3",
76
78
  "@slack/bolt": "^4.7.3",
77
79
  "adm-zip": "^0.5.17",
78
80
  bcryptjs: "^3.0.3",
@@ -97,6 +99,7 @@ var package_default = {
97
99
  "@types/node": "^26.0.0",
98
100
  dompurify: "^3.4.11",
99
101
  "drizzle-kit": "^0.31.10",
102
+ knip: "^6.26.0",
100
103
  lefthook: "^2.1.9",
101
104
  marked: "^18.0.5",
102
105
  svelte: "^5.56.3",
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ MEMORY_PLACEHOLDER_MARKER,
4
+ ORIENTATION_MARKER,
5
+ PROMPT_DEFAULTS,
6
+ PROMPT_KEYS,
7
+ getMindPromptDefaults,
8
+ getPrompt,
9
+ getPromptIfCustom,
10
+ substitute
11
+ } from "./chunk-JPGHSXSV.js";
12
+ import "./chunk-RSBL3FAD.js";
13
+ import "./chunk-P4LHVRNE.js";
14
+ import "./chunk-K3NQKI34.js";
15
+ export {
16
+ MEMORY_PLACEHOLDER_MARKER,
17
+ ORIENTATION_MARKER,
18
+ PROMPT_DEFAULTS,
19
+ PROMPT_KEYS,
20
+ getMindPromptDefaults,
21
+ getPrompt,
22
+ getPromptIfCustom,
23
+ substitute
24
+ };
@@ -6,13 +6,13 @@ import {
6
6
  import {
7
7
  resolveMindName
8
8
  } from "./chunk-BTY4WNFE.js";
9
+ import {
10
+ daemonFetch
11
+ } from "./chunk-BCG45AQB.js";
9
12
  import {
10
13
  command
11
14
  } from "./chunk-TXSA4Q3V.js";
12
15
  import "./chunk-O7IGP7ZW.js";
13
- import {
14
- daemonFetch
15
- } from "./chunk-RBNMDAKB.js";
16
16
  import "./chunk-K3NQKI34.js";
17
17
 
18
18
  // packages/cli/src/commands/chat/read.ts
@@ -2,13 +2,13 @@
2
2
  import {
3
3
  promptLine
4
4
  } from "./chunk-VHWGEJ4V.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-BCG45AQB.js";
5
8
  import {
6
9
  command
7
10
  } from "./chunk-TXSA4Q3V.js";
8
11
  import "./chunk-O7IGP7ZW.js";
9
- import {
10
- daemonFetch
11
- } from "./chunk-RBNMDAKB.js";
12
12
  import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // packages/cli/src/commands/systems/register.ts
@@ -4,7 +4,9 @@ import {
4
4
  addMind,
5
5
  addSpirit,
6
6
  addVariant,
7
+ countCappedMinds,
7
8
  daemonLoopback,
9
+ deleteMindDbFootprint,
8
10
  ensureSystemDir,
9
11
  ensureVoluteHome,
10
12
  findMind,
@@ -28,15 +30,17 @@ import {
28
30
  voluteHome,
29
31
  voluteSystemDir,
30
32
  voluteUserHome
31
- } from "./chunk-WW6C3PLV.js";
32
- import "./chunk-2MJ7EOMT.js";
33
+ } from "./chunk-RSBL3FAD.js";
34
+ import "./chunk-P4LHVRNE.js";
33
35
  import "./chunk-K3NQKI34.js";
34
36
  export {
35
37
  SPIRIT_NAME,
36
38
  addMind,
37
39
  addSpirit,
38
40
  addVariant,
41
+ countCappedMinds,
39
42
  daemonLoopback,
43
+ deleteMindDbFootprint,
40
44
  ensureSystemDir,
41
45
  ensureVoluteHome,
42
46
  findMind,
@@ -2,13 +2,13 @@
2
2
  import {
3
3
  resolveMindName
4
4
  } from "./chunk-BTY4WNFE.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-BCG45AQB.js";
5
8
  import {
6
9
  command
7
10
  } from "./chunk-TXSA4Q3V.js";
8
11
  import "./chunk-O7IGP7ZW.js";
9
- import {
10
- daemonFetch
11
- } from "./chunk-RBNMDAKB.js";
12
12
  import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // packages/cli/src/commands/chat/reject.ts
@@ -2,17 +2,17 @@
2
2
  import {
3
3
  resolveMindName
4
4
  } from "./chunk-BTY4WNFE.js";
5
- import {
6
- command
7
- } from "./chunk-TXSA4Q3V.js";
8
- import "./chunk-O7IGP7ZW.js";
9
5
  import {
10
6
  daemonFetch
11
- } from "./chunk-RBNMDAKB.js";
7
+ } from "./chunk-BCG45AQB.js";
12
8
  import {
13
9
  getClient,
14
10
  urlOf
15
11
  } from "./chunk-LOPXTW6H.js";
12
+ import {
13
+ command
14
+ } from "./chunk-TXSA4Q3V.js";
15
+ import "./chunk-O7IGP7ZW.js";
16
16
  import "./chunk-K3NQKI34.js";
17
17
 
18
18
  // packages/cli/src/commands/restart.ts
@@ -7,11 +7,11 @@ import {
7
7
  isSandboxOptional,
8
8
  shellEscape,
9
9
  wrapForSandbox
10
- } from "./chunk-M3XDVS5Q.js";
11
- import "./chunk-SKNXMUIU.js";
12
- import "./chunk-T2TP6ZC6.js";
13
- import "./chunk-WW6C3PLV.js";
14
- import "./chunk-2MJ7EOMT.js";
10
+ } from "./chunk-JCWB2ITW.js";
11
+ import "./chunk-NJHN6IRB.js";
12
+ import "./chunk-QUSMYGNQ.js";
13
+ import "./chunk-RSBL3FAD.js";
14
+ import "./chunk-P4LHVRNE.js";
15
15
  import "./chunk-K3NQKI34.js";
16
16
  export {
17
17
  SandboxUnavailableError,
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ Scheduler,
4
+ getScheduler,
5
+ initScheduler
6
+ } from "./chunk-QQBOI3QA.js";
7
+ import "./chunk-VIUH5CHQ.js";
8
+ import "./chunk-RRZ4RQQU.js";
9
+ import "./chunk-EFT2OALG.js";
10
+ import "./chunk-K3JOLGWF.js";
11
+ import "./chunk-GWVFDUNB.js";
12
+ import "./chunk-4DSGN4FL.js";
13
+ import "./chunk-VNRSXEBF.js";
14
+ import "./chunk-JPGHSXSV.js";
15
+ import "./chunk-JCWB2ITW.js";
16
+ import "./chunk-XTEKINWG.js";
17
+ import "./chunk-ZX46PGCC.js";
18
+ import "./chunk-FBBS4BVR.js";
19
+ import "./chunk-DW4TRDOZ.js";
20
+ import "./chunk-WCFSBH33.js";
21
+ import "./chunk-DVN6DNMI.js";
22
+ import "./chunk-PY24ZL62.js";
23
+ import "./chunk-YIJGKHIS.js";
24
+ import "./chunk-NJHN6IRB.js";
25
+ import "./chunk-3B427GUK.js";
26
+ import "./chunk-QUSMYGNQ.js";
27
+ import "./chunk-RSBL3FAD.js";
28
+ import "./chunk-P4LHVRNE.js";
29
+ import "./chunk-K3NQKI34.js";
30
+ export {
31
+ Scheduler,
32
+ getScheduler,
33
+ initScheduler
34
+ };
@@ -17,7 +17,7 @@ import {
17
17
  systemPrompts,
18
18
  turns,
19
19
  users
20
- } from "./chunk-2MJ7EOMT.js";
20
+ } from "./chunk-P4LHVRNE.js";
21
21
  import "./chunk-K3NQKI34.js";
22
22
  export {
23
23
  activity,
@@ -4,7 +4,7 @@ import "./chunk-K3NQKI34.js";
4
4
  // packages/cli/src/commands/seed.ts
5
5
  async function run(args) {
6
6
  console.error("Note: `volute mind seed` is now `volute seed create`");
7
- await import("./seed-create-3FGZPS6C.js").then((m) => m.run(args));
7
+ await import("./seed-create-XOO4N2OE.js").then((m) => m.run(args));
8
8
  }
9
9
  export {
10
10
  run
@@ -13,7 +13,7 @@ var cmd = command({
13
13
  flags: {},
14
14
  run: async ({ args }) => {
15
15
  const name = args.name;
16
- const { daemonFetch } = await import("./daemon-client-IYR4KCPU.js");
16
+ const { daemonFetch } = await import("./daemon-client-ZFY5MOAL.js");
17
17
  const res = await daemonFetch(`/api/minds/${encodeURIComponent(name)}/seed-check`);
18
18
  if (!res.ok) {
19
19
  if (res.status === 404) {
@@ -12,15 +12,15 @@ var cmd = subcommands({
12
12
  commands: {
13
13
  create: {
14
14
  description: "Plant a new seed",
15
- run: (args) => import("./seed-create-3FGZPS6C.js").then((m) => m.run(args))
15
+ run: (args) => import("./seed-create-XOO4N2OE.js").then((m) => m.run(args))
16
16
  },
17
17
  sprout: {
18
18
  description: "Complete orientation and become a full mind",
19
- run: (args) => import("./seed-sprout-H7QLFPFM.js").then((m) => m.run(args))
19
+ run: (args) => import("./seed-sprout-HSBBGSS2.js").then((m) => m.run(args))
20
20
  },
21
21
  check: {
22
22
  description: "Check seed readiness",
23
- run: (args) => import("./seed-check-VLTVILOV.js").then((m) => m.run(args))
23
+ run: (args) => import("./seed-check-TYD7RRZY.js").then((m) => m.run(args))
24
24
  }
25
25
  }
26
26
  });
@@ -47,19 +47,19 @@ var cmd = command({
47
47
  const name = args.name;
48
48
  const skills = flags.skills === "none" ? [] : flags.skills ? flags.skills.split(",") : void 0;
49
49
  const createdBy = flags["created-by"];
50
- const { daemonFetch } = await import("./daemon-client-IYR4KCPU.js");
50
+ const { daemonFetch } = await import("./daemon-client-ZFY5MOAL.js");
51
51
  const { getClient, urlOf } = await import("./api-client-LC5YRA32.js");
52
52
  const client = getClient();
53
53
  let model = flags.model;
54
54
  let template = flags.template;
55
55
  if (!template) {
56
- const { resolveTemplate } = await import("./ai-service-CVZEYKTK.js");
56
+ const { resolveTemplate } = await import("./ai-service-A7FS7EC3.js");
57
57
  template = await resolveTemplate(model);
58
58
  }
59
59
  if (template !== "claude" && !model) {
60
60
  if (process.env.VOLUTE_MIND || !process.stdin.isTTY) {
61
- const { getSpiritModel } = await import("./spirit-WXN4IDBF.js");
62
- const { qualifyModelId } = await import("./ai-service-CVZEYKTK.js");
61
+ const { getSpiritModel } = await import("./spirit-SSJMYC6A.js");
62
+ const { qualifyModelId } = await import("./ai-service-A7FS7EC3.js");
63
63
  const spiritModel = getSpiritModel();
64
64
  if (spiritModel) {
65
65
  model = template === "pi" ? qualifyModelId(spiritModel) : spiritModel;
@@ -91,6 +91,8 @@ var cmd = command({
91
91
  console.error(createData.error ?? "Failed to create mind");
92
92
  process.exit(1);
93
93
  }
94
+ if (createData.credentialWarning) console.warn(`
95
+ \u26A0 ${createData.credentialWarning}`);
94
96
  const startRes = await daemonFetch(
95
97
  urlOf(client.api.minds[":name"].start.$url({ param: { name } })),
96
98
  { method: "POST" }
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ evaluateSeedChecklist,
4
+ isMemoryWritten,
5
+ isSoulWritten
6
+ } from "./chunk-TXJL36ZQ.js";
7
+ import "./chunk-JPGHSXSV.js";
8
+ import "./chunk-DW4TRDOZ.js";
9
+ import "./chunk-WCFSBH33.js";
10
+ import "./chunk-NJHN6IRB.js";
11
+ import "./chunk-RSBL3FAD.js";
12
+ import "./chunk-P4LHVRNE.js";
13
+ import "./chunk-K3NQKI34.js";
14
+ export {
15
+ evaluateSeedChecklist,
16
+ isMemoryWritten,
17
+ isSoulWritten
18
+ };