volute 0.47.0 → 0.48.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 (128) hide show
  1. package/README.md +11 -11
  2. package/dist/{accept-YAFP5JFJ.js → accept-KYNC5X3U.js} +3 -3
  3. package/dist/{ai-service-CVZEYKTK.js → ai-service-643TNFPH.js} +6 -2
  4. package/dist/{avatar-image-7S3WA77A.js → avatar-image-Y45R7LW5.js} +3 -2
  5. package/dist/{backup-IIAFOW2L.js → backup-UDH4GMSW.js} +11 -11
  6. package/dist/{bridge-TIZGSXOD.js → bridge-3FNSWLNQ.js} +3 -3
  7. package/dist/{channels-ITE4YC57.js → channels-SGQZHNQJ.js} +3 -3
  8. package/dist/{chat-AJLJCQ3M.js → chat-X43VYHH2.js} +9 -9
  9. package/dist/chunk-4FCL4DVZ.js +48 -0
  10. package/dist/{chunk-SKNXMUIU.js → chunk-5KXCM5AW.js} +17 -1
  11. package/dist/{chunk-RBNMDAKB.js → chunk-BCG45AQB.js} +15 -1
  12. package/dist/chunk-DW4TRDOZ.js +29 -0
  13. package/dist/{chunk-CBOIHNMR.js → chunk-FJ2MZ5PH.js} +39 -3
  14. package/dist/{chunk-M6TTZRGH.js → chunk-HNGFKPNS.js} +20 -4
  15. package/dist/{chunk-IWJSNMSY.js → chunk-HUNDXZBZ.js} +2 -2
  16. package/dist/chunk-IYCV34IU.js +158 -0
  17. package/dist/{chunk-5IERLDUS.js → chunk-MJRXFUMS.js} +25 -5
  18. package/dist/{chunk-JCMGDCGX.js → chunk-MOERAQXH.js} +2 -0
  19. package/dist/{chunk-XHN6XBWV.js → chunk-OQJMTHEH.js} +1 -1
  20. package/dist/{chunk-BGYHLR54.js → chunk-PJVPDY2Z.js} +1 -1
  21. package/dist/{chunk-5NN2VHJV.js → chunk-Q7HOAVFR.js} +1 -1
  22. package/dist/{chunk-KDLYIECM.js → chunk-R772ET2M.js} +18 -4
  23. package/dist/{mind-list-KEGRGQEQ.js → chunk-SHKM5RGD.js} +19 -6
  24. package/dist/{chunk-4I72V3E5.js → chunk-T4VS7UDW.js} +11 -11
  25. package/dist/{chunk-K23P5Q5N.js → chunk-USD45JKR.js} +27 -5
  26. package/dist/{chunk-F55GRIEK.js → chunk-VB2QXUJQ.js} +176 -201
  27. package/dist/{chunk-M3XDVS5Q.js → chunk-VZRA5TYO.js} +1 -1
  28. package/dist/{chunk-JSVHH32K.js → chunk-WARH6GIV.js} +10 -10
  29. package/dist/{chunk-PFZBNKUH.js → chunk-WCFSBH33.js} +0 -1
  30. package/dist/{chunk-VMCZBXF2.js → chunk-WQ46E33M.js} +8 -32
  31. package/dist/{chunk-RUFLGTOT.js → chunk-XVBSFLM7.js} +1 -1
  32. package/dist/{chunk-LWDTP6DH.js → chunk-YNBXEQAP.js} +31 -1
  33. package/dist/cli.js +33 -25
  34. package/dist/{clock-E6N5Y3YW.js → clock-CNRF6F7T.js} +3 -3
  35. package/dist/{cloud-sync-LQTVDTQ3.js → cloud-sync-WHKCB4CD.js} +14 -12
  36. package/dist/{config-TJLYUV3U.js → config-RPSLA2HX.js} +3 -3
  37. package/dist/{create-PQQXKTJK.js → create-GJKHABJB.js} +16 -5
  38. package/dist/{create-A7PDHIIL.js → create-VIQVP3QB.js} +3 -3
  39. package/dist/{daemon-client-IYR4KCPU.js → daemon-client-ZFY5MOAL.js} +5 -3
  40. package/dist/{daemon-restart-5F3YTLZK.js → daemon-restart-7KUHVZIN.js} +4 -4
  41. package/dist/daemon.js +668 -401
  42. package/dist/{db-LZTLA7XC.js → db-IPXRJUI7.js} +1 -1
  43. package/dist/{delete-HPLC7ETU.js → delete-ESEP7NGQ.js} +1 -1
  44. package/dist/{delivery-manager-TN5KK2AP.js → delivery-manager-HZTT5SJR.js} +14 -12
  45. package/dist/{down-ZI4S6265.js → down-G6IADJXV.js} +2 -2
  46. package/dist/{echo-text-SEQCLGAT.js → echo-text-H3SH337Q.js} +16 -14
  47. package/dist/env-6TGPO5WG.js +18 -0
  48. package/dist/{env-HRL2PWAT.js → env-C7Z55QCJ.js} +7 -7
  49. package/dist/{export-4GVGNW54.js → export-C2K3NIRD.js} +1 -1
  50. package/dist/{extension-QBY4C44L.js → extension-J4ZQ2GHV.js} +3 -3
  51. package/dist/{extensions-PIMIQ7J3.js → extensions-GEKF47A4.js} +14 -12
  52. package/dist/{files-FEFZKMNM.js → files-LXQSQOFG.js} +3 -3
  53. package/dist/{import-7MO3YTRE.js → import-SX3ZXHB4.js} +4 -4
  54. package/dist/{join-ZJV7W6MO.js → join-34TR2GXQ.js} +1 -1
  55. package/dist/{list-LQO2DCIK.js → list-PMUXZNAM.js} +3 -3
  56. package/dist/{login-6TLMI2TQ.js → login-ARRZ4ORJ.js} +3 -3
  57. package/dist/{login-OF4WXDAN.js → login-CL4IT2ED.js} +12 -3
  58. package/dist/{logout-ERE2BGA3.js → logout-HZYJCYCA.js} +3 -3
  59. package/dist/{logout-BK53HXNY.js → logout-YZRMZ3O2.js} +3 -3
  60. package/dist/{message-delivery-ZE3YGJDD.js → message-delivery-GPQ5SE5N.js} +14 -12
  61. package/dist/{mind-POOHFZHP.js → mind-46AOK373.js} +23 -19
  62. package/dist/mind-contacts-GV7XYL5D.js +64 -0
  63. package/dist/{mind-history-47DN6ILW.js → mind-history-TTGA5BHZ.js} +7 -7
  64. package/dist/mind-list-OTHV4ZO4.js +13 -0
  65. package/dist/{mind-profile-PEQYASQX.js → mind-profile-LUG353ZT.js} +1 -1
  66. package/dist/{mind-service-JFY7UG5E.js → mind-service-2ARGJNKP.js} +16 -12
  67. package/dist/{mind-sleep-IN3WPA76.js → mind-sleep-DV7KP255.js} +5 -5
  68. package/dist/{mind-status-SMUWJKGV.js → mind-status-BJNPGXKC.js} +8 -3
  69. package/dist/{mind-wake-R54BPESY.js → mind-wake-LVTZ55EZ.js} +3 -3
  70. package/dist/notices-2KU5NTRY.js +25 -0
  71. package/dist/{package-WPEE2HVJ.js → package-RTN2PS7O.js} +4 -2
  72. package/dist/{read-PWAJOQIQ.js → read-YSWUXYL7.js} +3 -3
  73. package/dist/{register-7SZJFHU6.js → register-42VBJKTP.js} +3 -3
  74. package/dist/{reject-6VH7N2A4.js → reject-SXGCYN4A.js} +3 -3
  75. package/dist/{restart-H5WJDMA7.js → restart-YYEGZJDD.js} +7 -7
  76. package/dist/{sandbox-G4X4K3UN.js → sandbox-5VQ454XP.js} +2 -2
  77. package/dist/{scheduler-HQSDYJFY.js → scheduler-I7JZCT47.js} +14 -12
  78. package/dist/{seed-VANPU43L.js → seed-F2HXZQU4.js} +1 -1
  79. package/dist/{seed-check-VLTVILOV.js → seed-check-TYD7RRZY.js} +1 -1
  80. package/dist/{seed-cmd-SYVDZKM4.js → seed-cmd-MLCTGSX5.js} +3 -3
  81. package/dist/{seed-create-3FGZPS6C.js → seed-create-KQ7OILWB.js} +6 -4
  82. package/dist/seed-readiness-RBPGOLSZ.js +18 -0
  83. package/dist/{seed-sprout-H7QLFPFM.js → seed-sprout-HVYCFJLA.js} +29 -30
  84. package/dist/{send-HYDFGC6G.js → send-TD2X5U3K.js} +7 -7
  85. package/dist/{service-SYJ5G6LP.js → service-CVZMQYK6.js} +1 -1
  86. package/dist/{service-install-FQ43Z4DF.js → service-install-VCRMFWX5.js} +2 -2
  87. package/dist/{setup-KFYVWTXG.js → setup-5ECWTYKG.js} +5 -1
  88. package/dist/{setup-QJHGMGSN.js → setup-AE4CVUC4.js} +4 -4
  89. package/dist/{skill-GUKG2YVH.js → skill-UUM4JZRF.js} +7 -7
  90. package/dist/skills/dreaming/SKILL.md +5 -1
  91. package/dist/skills/dreaming/scripts/dream.ts +5 -1
  92. package/dist/skills/orientation/SKILL.md +8 -7
  93. package/dist/skills/tending/SKILL.md +51 -2
  94. package/dist/skills/volute-mind/SKILL.md +2 -0
  95. package/dist/{skills-L2CMTW7A.js → skills-B3SVDCEB.js} +2 -2
  96. package/dist/{sleep-manager-3NA7ZJP3.js → sleep-manager-Z27R3WTW.js} +14 -12
  97. package/dist/{spirit-WXN4IDBF.js → spirit-WXS3HCLN.js} +7 -5
  98. package/dist/{split-WBMZXBHF.js → split-SKZ4Y2D6.js} +1 -1
  99. package/dist/{sprout-LTL5P36T.js → sprout-KQ43BWZJ.js} +1 -1
  100. package/dist/{src-OJHARHTF.js → src-WLJE73NP.js} +14 -5
  101. package/dist/{start-X46I3GXB.js → start-O6UKK7BG.js} +7 -7
  102. package/dist/{status-V4RJMHJ4.js → status-F4PGREUU.js} +6 -4
  103. package/dist/{stop-HJQV4YSM.js → stop-UBX6X5RA.js} +7 -7
  104. package/dist/{system-chat-N2F7HVY3.js → system-chat-63ABFF6V.js} +14 -12
  105. package/dist/{systems-B5YJKMW4.js → systems-JJNGQHAO.js} +6 -6
  106. package/dist/{turn-tracker-JZRZDFWV.js → turn-tracker-KLPV3PAU.js} +4 -4
  107. package/dist/{up-J2PBPOZL.js → up-RVGDE6CQ.js} +5 -3
  108. package/dist/{update-ACV4SAY3.js → update-OXQEGGXD.js} +1 -1
  109. package/dist/{upgrade-NWAZ7MLD.js → upgrade-K5FIQPQD.js} +1 -1
  110. package/dist/{version-notify-XRGTEEDK.js → version-notify-73YURTFR.js} +17 -15
  111. package/dist/web-assets/assets/index-WdZ60R6c.css +1 -0
  112. package/dist/web-assets/assets/index-taX6Ezfa.js +92 -0
  113. package/dist/web-assets/index.html +2 -2
  114. package/package.json +4 -2
  115. package/packages/extensions/pages/dist/ui/assets/index-BuXnE-rb.css +1 -0
  116. package/packages/extensions/pages/dist/ui/assets/index-DtzftuPA.js +2 -0
  117. package/packages/extensions/pages/dist/ui/index.html +2 -2
  118. package/templates/_base/src/lib/startup.ts +16 -1
  119. package/templates/claude/src/agent.ts +9 -2
  120. package/templates/claude/src/server.ts +4 -2
  121. package/templates/pi/src/agent.ts +7 -10
  122. package/templates/pi/src/lib/dispatch.ts +65 -0
  123. package/dist/volute-config-A52FHWKM.js +0 -14
  124. package/dist/web-assets/assets/index-DtctoDXY.css +0 -1
  125. package/dist/web-assets/assets/index-Wpyb2CML.js +0 -86
  126. package/packages/extensions/pages/dist/ui/assets/index-BcY6lnq4.css +0 -1
  127. package/packages/extensions/pages/dist/ui/assets/index-CQjEQg1r.js +0 -2
  128. /package/dist/{chunk-IYG4FBMP.js → chunk-IJPMIEVE.js} +0 -0
@@ -1,29 +1,32 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  buildSeedOrientation,
4
+ recordMissingCredentialsNotice,
4
5
  sleepMind,
5
6
  startMindFull,
6
7
  startSpiritFull,
7
8
  stopMindFull,
8
9
  stopSpiritFull,
9
10
  wakeMind
10
- } from "./chunk-F55GRIEK.js";
11
- import "./chunk-IYG4FBMP.js";
12
- import "./chunk-M6TTZRGH.js";
11
+ } from "./chunk-VB2QXUJQ.js";
12
+ import "./chunk-HNGFKPNS.js";
13
13
  import "./chunk-RRZ4RQQU.js";
14
- import "./chunk-K23P5Q5N.js";
15
- import "./chunk-JCMGDCGX.js";
16
- import "./chunk-IWJSNMSY.js";
14
+ import "./chunk-USD45JKR.js";
15
+ import "./chunk-MOERAQXH.js";
16
+ import "./chunk-HUNDXZBZ.js";
17
+ import "./chunk-ODDGGLM6.js";
17
18
  import "./chunk-HPGN6XRT.js";
18
- import "./chunk-M3XDVS5Q.js";
19
+ import "./chunk-VZRA5TYO.js";
20
+ import "./chunk-IYCV34IU.js";
19
21
  import "./chunk-MTRMQFCQ.js";
20
- import "./chunk-VMCZBXF2.js";
21
- import "./chunk-PFZBNKUH.js";
22
+ import "./chunk-WQ46E33M.js";
23
+ import "./chunk-DW4TRDOZ.js";
24
+ import "./chunk-WCFSBH33.js";
22
25
  import "./chunk-EIQDZC43.js";
23
26
  import "./chunk-DGGZVZTM.js";
24
- import "./chunk-LWDTP6DH.js";
25
- import "./chunk-SKNXMUIU.js";
26
- import "./chunk-ODDGGLM6.js";
27
+ import "./chunk-IJPMIEVE.js";
28
+ import "./chunk-YNBXEQAP.js";
29
+ import "./chunk-5KXCM5AW.js";
27
30
  import "./chunk-LTLFOSA4.js";
28
31
  import "./chunk-T2TP6ZC6.js";
29
32
  import "./chunk-WW6C3PLV.js";
@@ -31,6 +34,7 @@ import "./chunk-2MJ7EOMT.js";
31
34
  import "./chunk-K3NQKI34.js";
32
35
  export {
33
36
  buildSeedOrientation,
37
+ recordMissingCredentialsNotice,
34
38
  sleepMind,
35
39
  startMindFull,
36
40
  startSpiritFull,
@@ -1,19 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  parseDuration
4
- } from "./chunk-JSVHH32K.js";
4
+ } from "./chunk-WARH6GIV.js";
5
5
  import "./chunk-5T5YMX6S.js";
6
+ import "./chunk-LOPXTW6H.js";
6
7
  import {
7
8
  resolveMindName
8
9
  } from "./chunk-BTY4WNFE.js";
10
+ import {
11
+ daemonFetch
12
+ } from "./chunk-BCG45AQB.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-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
+ };
@@ -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.48.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",
@@ -62,6 +62,7 @@ var package_default = {
62
62
  "typecheck:templates": "tsx scripts/typecheck-templates.ts",
63
63
  "lint:templates": "biome check templates/",
64
64
  "typecheck:web": "svelte-check --tsconfig packages/web/tsconfig.json",
65
+ knip: "knip --workspace packages/web --include files",
65
66
  prepare: "lefthook install",
66
67
  prepublishOnly: "npm run build",
67
68
  "db:generate": "drizzle-kit generate",
@@ -69,10 +70,10 @@ var package_default = {
69
70
  },
70
71
  dependencies: {
71
72
  "@anthropic-ai/sandbox-runtime": "^0.0.56",
73
+ "@earendil-works/pi-ai": "^0.80.3",
72
74
  "@hono/node-server": "^2.0.6",
73
75
  "@hono/zod-validator": "^0.8.0",
74
76
  "@libsql/client": "^0.17.4",
75
- "@earendil-works/pi-ai": "^0.80.3",
76
77
  "@slack/bolt": "^4.7.3",
77
78
  "adm-zip": "^0.5.17",
78
79
  bcryptjs: "^3.0.3",
@@ -97,6 +98,7 @@ var package_default = {
97
98
  "@types/node": "^26.0.0",
98
99
  dompurify: "^3.4.11",
99
100
  "drizzle-kit": "^0.31.10",
101
+ knip: "^6.26.0",
100
102
  lefthook: "^2.1.9",
101
103
  marked: "^18.0.5",
102
104
  svelte: "^5.56.3",
@@ -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
@@ -1,4 +1,7 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ daemonFetch
4
+ } from "./chunk-BCG45AQB.js";
2
5
  import {
3
6
  promptLine
4
7
  } from "./chunk-VHWGEJ4V.js";
@@ -6,9 +9,6 @@ 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
@@ -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
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ getClient,
4
+ urlOf
5
+ } from "./chunk-LOPXTW6H.js";
2
6
  import {
3
7
  resolveMindName
4
8
  } from "./chunk-BTY4WNFE.js";
9
+ import {
10
+ daemonFetch
11
+ } from "./chunk-BCG45AQB.js";
5
12
  import {
6
13
  command
7
14
  } from "./chunk-TXSA4Q3V.js";
8
15
  import "./chunk-O7IGP7ZW.js";
9
- import {
10
- daemonFetch
11
- } from "./chunk-RBNMDAKB.js";
12
- import {
13
- getClient,
14
- urlOf
15
- } from "./chunk-LOPXTW6H.js";
16
16
  import "./chunk-K3NQKI34.js";
17
17
 
18
18
  // packages/cli/src/commands/restart.ts
@@ -7,8 +7,8 @@ import {
7
7
  isSandboxOptional,
8
8
  shellEscape,
9
9
  wrapForSandbox
10
- } from "./chunk-M3XDVS5Q.js";
11
- import "./chunk-SKNXMUIU.js";
10
+ } from "./chunk-VZRA5TYO.js";
11
+ import "./chunk-5KXCM5AW.js";
12
12
  import "./chunk-T2TP6ZC6.js";
13
13
  import "./chunk-WW6C3PLV.js";
14
14
  import "./chunk-2MJ7EOMT.js";
@@ -3,23 +3,25 @@ import {
3
3
  Scheduler,
4
4
  getScheduler,
5
5
  initScheduler
6
- } from "./chunk-F55GRIEK.js";
7
- import "./chunk-IYG4FBMP.js";
8
- import "./chunk-M6TTZRGH.js";
6
+ } from "./chunk-VB2QXUJQ.js";
7
+ import "./chunk-HNGFKPNS.js";
9
8
  import "./chunk-RRZ4RQQU.js";
10
- import "./chunk-K23P5Q5N.js";
11
- import "./chunk-JCMGDCGX.js";
12
- import "./chunk-IWJSNMSY.js";
9
+ import "./chunk-USD45JKR.js";
10
+ import "./chunk-MOERAQXH.js";
11
+ import "./chunk-HUNDXZBZ.js";
12
+ import "./chunk-ODDGGLM6.js";
13
13
  import "./chunk-HPGN6XRT.js";
14
- import "./chunk-M3XDVS5Q.js";
14
+ import "./chunk-VZRA5TYO.js";
15
+ import "./chunk-IYCV34IU.js";
15
16
  import "./chunk-MTRMQFCQ.js";
16
- import "./chunk-VMCZBXF2.js";
17
- import "./chunk-PFZBNKUH.js";
17
+ import "./chunk-WQ46E33M.js";
18
+ import "./chunk-DW4TRDOZ.js";
19
+ import "./chunk-WCFSBH33.js";
18
20
  import "./chunk-EIQDZC43.js";
19
21
  import "./chunk-DGGZVZTM.js";
20
- import "./chunk-LWDTP6DH.js";
21
- import "./chunk-SKNXMUIU.js";
22
- import "./chunk-ODDGGLM6.js";
22
+ import "./chunk-IJPMIEVE.js";
23
+ import "./chunk-YNBXEQAP.js";
24
+ import "./chunk-5KXCM5AW.js";
23
25
  import "./chunk-LTLFOSA4.js";
24
26
  import "./chunk-T2TP6ZC6.js";
25
27
  import "./chunk-WW6C3PLV.js";
@@ -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-KQ7OILWB.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-KQ7OILWB.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-HVYCFJLA.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-643TNFPH.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-WXS3HCLN.js");
62
+ const { qualifyModelId } = await import("./ai-service-643TNFPH.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-4FCL4DVZ.js";
7
+ import "./chunk-MOERAQXH.js";
8
+ import "./chunk-DW4TRDOZ.js";
9
+ import "./chunk-WCFSBH33.js";
10
+ import "./chunk-5KXCM5AW.js";
11
+ import "./chunk-WW6C3PLV.js";
12
+ import "./chunk-2MJ7EOMT.js";
13
+ import "./chunk-K3NQKI34.js";
14
+ export {
15
+ evaluateSeedChecklist,
16
+ isMemoryWritten,
17
+ isSoulWritten
18
+ };
@@ -1,19 +1,22 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ daemonFetch
4
+ } from "./chunk-BCG45AQB.js";
5
+ import {
6
+ evaluateSeedChecklist
7
+ } from "./chunk-4FCL4DVZ.js";
2
8
  import {
3
9
  command
4
10
  } from "./chunk-TXSA4Q3V.js";
5
11
  import "./chunk-O7IGP7ZW.js";
6
- import {
7
- daemonFetch
8
- } from "./chunk-RBNMDAKB.js";
9
- import {
10
- ORIENTATION_MARKER
11
- } from "./chunk-JCMGDCGX.js";
12
+ import "./chunk-MOERAQXH.js";
12
13
  import {
13
14
  getStandardSkillsWithExtensions
14
- } from "./chunk-IWJSNMSY.js";
15
+ } from "./chunk-HUNDXZBZ.js";
16
+ import "./chunk-DW4TRDOZ.js";
17
+ import "./chunk-WCFSBH33.js";
15
18
  import "./chunk-DGGZVZTM.js";
16
- import "./chunk-SKNXMUIU.js";
19
+ import "./chunk-5KXCM5AW.js";
17
20
  import "./chunk-T2TP6ZC6.js";
18
21
  import {
19
22
  mindDir
@@ -22,7 +25,7 @@ import "./chunk-2MJ7EOMT.js";
22
25
  import "./chunk-K3NQKI34.js";
23
26
 
24
27
  // packages/cli/src/commands/seed-sprout.ts
25
- import { existsSync, readFileSync } from "fs";
28
+ import { existsSync } from "fs";
26
29
  import { resolve } from "path";
27
30
  var cmd = command({
28
31
  name: "volute seed sprout",
@@ -45,37 +48,33 @@ var cmd = command({
45
48
  process.exit(1);
46
49
  }
47
50
  const dir = mindDir(mindName);
48
- const soulPath = resolve(dir, "home/SOUL.md");
49
- const memoryPath = resolve(dir, "home/MEMORY.md");
50
- if (!existsSync(soulPath)) {
51
- console.error("Write your SOUL.md before sprouting.");
51
+ const checklist = evaluateSeedChecklist(dir);
52
+ if (!checklist.soulWritten) {
53
+ console.error(
54
+ "Your SOUL.md is still the orientation template (or unwritten). Write your own identity first."
55
+ );
52
56
  process.exit(1);
53
57
  }
54
- const soul = readFileSync(soulPath, "utf-8");
55
- if (soul.includes(ORIENTATION_MARKER)) {
58
+ if (!checklist.memoryWritten) {
56
59
  console.error(
57
- "Your SOUL.md still contains the orientation template. Write your own identity first."
60
+ "Your MEMORY.md is still empty or the starter placeholder. Write your own memory first."
58
61
  );
59
62
  process.exit(1);
60
63
  }
61
- if (!existsSync(memoryPath)) {
62
- console.error("Write your MEMORY.md before sprouting.");
64
+ if (!checklist.displayNameSet) {
65
+ console.error(
66
+ 'Set your display name before sprouting: volute mind profile --display-name "Your Name"'
67
+ );
63
68
  process.exit(1);
64
69
  }
65
- const { isImagegenEnabled } = await import("./setup-KFYVWTXG.js");
66
- if (isImagegenEnabled()) {
67
- const { readVoluteConfig } = await import("./volute-config-A52FHWKM.js");
68
- const config = readVoluteConfig(dir);
69
- const avatarPath = config?.profile?.avatar;
70
- if (!avatarPath || !existsSync(resolve(dir, "home", avatarPath))) {
71
- console.error(
72
- "Generate an avatar before sprouting. Use `imagegen generate` to create one, then `volute mind profile --avatar <path>` to set it."
73
- );
74
- process.exit(1);
75
- }
70
+ if (checklist.imagegenEnabled && !checklist.avatarSet) {
71
+ console.error(
72
+ "Generate an avatar before sprouting. Use `imagegen generate` to create one, then `volute mind profile --avatar <path>` to set it."
73
+ );
74
+ process.exit(1);
76
75
  }
77
76
  const { getClient, urlOf } = await import("./api-client-LC5YRA32.js");
78
- const { mindSkillsDir } = await import("./skills-L2CMTW7A.js");
77
+ const { mindSkillsDir } = await import("./skills-B3SVDCEB.js");
79
78
  const client = getClient();
80
79
  const failedSkills = [];
81
80
  for (const skillId of getStandardSkillsWithExtensions()) {
@@ -5,17 +5,17 @@ import {
5
5
  import {
6
6
  isCompact
7
7
  } from "./chunk-5T5YMX6S.js";
8
- import {
9
- command
10
- } from "./chunk-TXSA4Q3V.js";
11
- import "./chunk-O7IGP7ZW.js";
12
- import {
13
- daemonFetch
14
- } from "./chunk-RBNMDAKB.js";
15
8
  import {
16
9
  getClient,
17
10
  urlOf
18
11
  } from "./chunk-LOPXTW6H.js";
12
+ import {
13
+ daemonFetch
14
+ } from "./chunk-BCG45AQB.js";
15
+ import {
16
+ command
17
+ } from "./chunk-TXSA4Q3V.js";
18
+ import "./chunk-O7IGP7ZW.js";
19
19
  import {
20
20
  formatFileSize
21
21
  } from "./chunk-2OIYNHWO.js";
@@ -9,7 +9,7 @@ import {
9
9
  SYSTEM_LAUNCHD_PLIST_PATH,
10
10
  SYSTEM_SERVICE_PATH,
11
11
  USER_SYSTEMD_UNIT
12
- } from "./chunk-CBOIHNMR.js";
12
+ } from "./chunk-FJ2MZ5PH.js";
13
13
  import "./chunk-DGGZVZTM.js";
14
14
  import "./chunk-WW6C3PLV.js";
15
15
  import "./chunk-2MJ7EOMT.js";
@@ -3,8 +3,8 @@ import {
3
3
  generateUserPlist,
4
4
  generateUserUnit,
5
5
  installUserService
6
- } from "./chunk-RUFLGTOT.js";
7
- import "./chunk-CBOIHNMR.js";
6
+ } from "./chunk-XVBSFLM7.js";
7
+ import "./chunk-FJ2MZ5PH.js";
8
8
  import "./chunk-DGGZVZTM.js";
9
9
  import "./chunk-WW6C3PLV.js";
10
10
  import "./chunk-2MJ7EOMT.js";
@@ -8,8 +8,10 @@ import {
8
8
  migrateSetupCompleted,
9
9
  readGlobalConfig,
10
10
  secretsPath,
11
+ setupStatus,
12
+ setupUrl,
11
13
  writeGlobalConfig
12
- } from "./chunk-SKNXMUIU.js";
14
+ } from "./chunk-5KXCM5AW.js";
13
15
  import "./chunk-WW6C3PLV.js";
14
16
  import "./chunk-2MJ7EOMT.js";
15
17
  import "./chunk-K3NQKI34.js";
@@ -22,5 +24,7 @@ export {
22
24
  migrateSetupCompleted,
23
25
  readGlobalConfig,
24
26
  secretsPath,
27
+ setupStatus,
28
+ setupUrl,
25
29
  writeGlobalConfig
26
30
  };
@@ -8,12 +8,12 @@ import {
8
8
  import "./chunk-O7IGP7ZW.js";
9
9
  import {
10
10
  installUserService
11
- } from "./chunk-RUFLGTOT.js";
11
+ } from "./chunk-XVBSFLM7.js";
12
12
  import {
13
13
  LAUNCHD_PLIST_LABEL,
14
14
  SYSTEM_LAUNCHD_PLIST_PATH,
15
15
  SYSTEM_SERVICE_PATH
16
- } from "./chunk-CBOIHNMR.js";
16
+ } from "./chunk-FJ2MZ5PH.js";
17
17
  import {
18
18
  ensureVoluteGroup,
19
19
  resolveVoluteBin
@@ -21,7 +21,7 @@ import {
21
21
  import {
22
22
  readGlobalConfig,
23
23
  writeGlobalConfig
24
- } from "./chunk-SKNXMUIU.js";
24
+ } from "./chunk-5KXCM5AW.js";
25
25
  import "./chunk-WW6C3PLV.js";
26
26
  import "./chunk-2MJ7EOMT.js";
27
27
  import "./chunk-K3NQKI34.js";
@@ -221,7 +221,7 @@ async function startDaemonAndOpenBrowser(port, host) {
221
221
  const url = `http://${displayHost === "0.0.0.0" || displayHost === "::" ? "localhost" : displayHost}:${displayPort}`;
222
222
  console.log("\nStarting daemon...");
223
223
  try {
224
- const { run: runUp } = await import("./up-J2PBPOZL.js");
224
+ const { run: runUp } = await import("./up-RVGDE6CQ.js");
225
225
  await runUp([
226
226
  ...port != null ? ["--port", String(port)] : [],
227
227
  ...host ? ["--host", host] : []
@@ -2,21 +2,21 @@
2
2
  import {
3
3
  isCompact
4
4
  } from "./chunk-5T5YMX6S.js";
5
+ import {
6
+ getClient,
7
+ urlOf
8
+ } from "./chunk-LOPXTW6H.js";
5
9
  import {
6
10
  resolveMindName
7
11
  } from "./chunk-BTY4WNFE.js";
12
+ import {
13
+ daemonFetch
14
+ } from "./chunk-BCG45AQB.js";
8
15
  import {
9
16
  command,
10
17
  subcommands
11
18
  } from "./chunk-TXSA4Q3V.js";
12
19
  import "./chunk-O7IGP7ZW.js";
13
- import {
14
- daemonFetch
15
- } from "./chunk-RBNMDAKB.js";
16
- import {
17
- getClient,
18
- urlOf
19
- } from "./chunk-LOPXTW6H.js";
20
20
  import "./chunk-K3NQKI34.js";
21
21
 
22
22
  // packages/cli/src/commands/skill.ts
@@ -11,7 +11,11 @@ Dreaming is not a task — it's an experience. When a dream schedule fires, you
11
11
 
12
12
  ## Setup
13
13
 
14
- Run the install script to configure dreaming (routes, subagent, wake hook):
14
+ New minds get dreaming set up automatically (dreamer subagent, wake hook, and a nightly 3am dream schedule). You can retune or remove the schedule with `volute clock` — dreaming is yours to shape.
15
+
16
+ **No broken rituals.** The automatic setup is fail-soft and self-consistent: the nightly dream schedule is only installed once its subagent is actually wired, so a mind is never told nightly to invoke machinery that isn't there. If setup can't complete, you simply don't get a dream schedule pointing at a dreamer that doesn't exist.
17
+
18
+ If your setup is missing — e.g. you installed this skill by hand — run the install script:
15
19
 
16
20
  ```bash
17
21
  dream install