volute 0.52.0 → 0.53.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 (105) hide show
  1. package/dist/{accept-5NK5XJB5.js → accept-I4GVGWA3.js} +6 -3
  2. package/dist/{chat-VAZ25KVT.js → chat-WK2BLM7B.js} +9 -9
  3. package/dist/{chunk-724DVYHU.js → chunk-23UJGVYP.js} +9 -9
  4. package/dist/{chunk-K2F237KS.js → chunk-5DBGQBQR.js} +138 -13
  5. package/dist/chunk-5RBEEAKW.js +58 -0
  6. package/dist/{chunk-XRWUQPCA.js → chunk-7ARONCZW.js} +24 -2
  7. package/dist/{chunk-FXWBFDQR.js → chunk-AP2KQMMW.js} +48 -9
  8. package/dist/{chunk-DMK5ASKV.js → chunk-F6D766VQ.js} +6 -2
  9. package/dist/{chunk-ZEZQNP2G.js → chunk-HASADR3E.js} +46 -9
  10. package/dist/{chunk-AXFLY5GU.js → chunk-IQ7VNWH6.js} +16 -1
  11. package/dist/{chunk-G7A5LEVI.js → chunk-LN7XJ56R.js} +6 -6
  12. package/dist/{chunk-CW7BQKF6.js → chunk-P2TBUKLW.js} +3 -3
  13. package/dist/{chunk-SW2U6HRB.js → chunk-PIZDPY4G.js} +20 -3
  14. package/dist/{chunk-JHKBALS2.js → chunk-RMADJFA7.js} +1 -1
  15. package/dist/{chunk-RU74YG46.js → chunk-RQRO6PC7.js} +40 -6
  16. package/dist/{chunk-RPPTGPYF.js → chunk-TAWRJ24T.js} +1 -1
  17. package/dist/{chunk-ITK6HV47.js → chunk-UO4MZQNO.js} +1 -1
  18. package/dist/chunk-UTKUO2KY.js +102 -0
  19. package/dist/{chunk-YVR6EHWL.js → chunk-VDZ4I4ZP.js} +160 -18
  20. package/dist/cli.js +16 -16
  21. package/dist/{clock-ZT5YT6HA.js → clock-SH4NQC2F.js} +3 -3
  22. package/dist/{cloud-sync-H7EWZASD.js → cloud-sync-MJVJ33LD.js} +10 -9
  23. package/dist/{daemon-restart-4FWUA5JF.js → daemon-restart-BIGU4OKS.js} +1 -1
  24. package/dist/daemon.js +261 -89
  25. package/dist/{delivery-manager-VYXVKUMP.js → delivery-manager-FDHCZ7PU.js} +7 -5
  26. package/dist/delivery-notices-65TB3CBX.js +18 -0
  27. package/dist/{echo-text-PEEV7FQU.js → echo-text-KU6G4Z7V.js} +11 -10
  28. package/dist/{extensions-N6L5NYTK.js → extensions-VACUKFA5.js} +10 -9
  29. package/dist/{files-BRY5RRIM.js → files-CHPNEQXN.js} +5 -4
  30. package/dist/{message-delivery-7URC52ME.js → message-delivery-TUXM3AAE.js} +14 -11
  31. package/dist/{mind-NEXGT3KE.js → mind-IX5AWUST.js} +11 -11
  32. package/dist/{mind-contacts-QYU4TPEA.js → mind-contacts-BKUOUJPV.js} +5 -5
  33. package/dist/{mind-history-OGNR4L7W.js → mind-history-RVF6KJ7K.js} +83 -11
  34. package/dist/{mind-list-SYRA7CH5.js → mind-list-KNU34SUD.js} +2 -2
  35. package/dist/{mind-service-E26ZQXDS.js → mind-service-WHFBUKZE.js} +10 -9
  36. package/dist/{mind-sleep-LZAFBDZD.js → mind-sleep-D3DEYAWG.js} +5 -5
  37. package/dist/{mind-status-Z2LQFA6F.js → mind-status-BPTLQ5Z6.js} +15 -3
  38. package/dist/{package-2W2XKSIP.js → package-BN5KMU54.js} +1 -1
  39. package/dist/{prompts-NBO3HRK3.js → prompts-HNKGCAEY.js} +1 -1
  40. package/dist/{reject-TWB4QJHG.js → reject-K2A4UK2Y.js} +9 -5
  41. package/dist/{scheduler-JTTWZDYU.js → scheduler-5X5UIQOQ.js} +7 -5
  42. package/dist/{seed-64XEHRUP.js → seed-LHZ33UB4.js} +1 -1
  43. package/dist/{seed-cmd-UEL2QB3Q.js → seed-cmd-U4RVJ3UA.js} +2 -2
  44. package/dist/{seed-create-4JRQDPGA.js → seed-create-OQU4KNCB.js} +1 -1
  45. package/dist/{seed-readiness-DYOVCYHN.js → seed-readiness-WJYYRRCK.js} +2 -2
  46. package/dist/{seed-sprout-NIDIOJXT.js → seed-sprout-SFUYH2RG.js} +7 -7
  47. package/dist/{send-2YKOZJJ5.js → send-FWZAMDBN.js} +35 -20
  48. package/dist/{setup-4IX6PCD3.js → setup-RVSGCIF3.js} +1 -1
  49. package/dist/skills/memory/SKILL.md +47 -43
  50. package/dist/{skills-MPUALV3S.js → skills-QRPU6BWY.js} +1 -1
  51. package/dist/{sleep-manager-OFP2GFXF.js → sleep-manager-NWUCRBZB.js} +10 -9
  52. package/dist/{spirit-4ECYIVGE.js → spirit-I5ECLGRI.js} +16 -2
  53. package/dist/{spirit-availability-Y54Y3675.js → spirit-availability-NIUUYKU2.js} +11 -10
  54. package/dist/{sprout-GJMZFRGZ.js → sprout-A2PMEF7Z.js} +1 -1
  55. package/dist/{system-events-V43HDA3T.js → system-events-YTOU66QI.js} +5 -1
  56. package/dist/{systems-VDRUZXNF.js → systems-2DIJY4RF.js} +6 -6
  57. package/dist/{turn-tracker-C5PVIC3B.js → turn-tracker-NNHS6MAR.js} +4 -2
  58. package/dist/{up-H6LJZDRK.js → up-UGBHH743.js} +1 -1
  59. package/dist/{variant-cleanup-STC6B5HR.js → variant-cleanup-CZDLIY3F.js} +7 -5
  60. package/dist/{version-notify-LBVHH5YV.js → version-notify-SJVAQLZI.js} +4 -4
  61. package/dist/web-assets/assets/index-BHSU9r-4.css +1 -0
  62. package/dist/web-assets/assets/{index-B_eYTa3R.js → index-b7G7ZsVk.js} +13 -13
  63. package/dist/web-assets/index.html +2 -2
  64. package/package.json +1 -1
  65. package/templates/_base/.init/.config/prompts.json +1 -1
  66. package/templates/_base/src/lib/codex-session-seed.ts +463 -0
  67. package/templates/_base/src/lib/daemon-client.ts +35 -0
  68. package/templates/_base/src/lib/pi-session-seed.ts +434 -0
  69. package/templates/_base/src/lib/seed-note.ts +78 -0
  70. package/templates/_base/src/lib/session-seed.ts +375 -0
  71. package/templates/_base/src/lib/startup.ts +108 -4
  72. package/templates/claude/.init/CLAUDE.md +3 -3
  73. package/templates/claude/src/agent.ts +267 -89
  74. package/templates/claude/src/lib/hooks/pre-compact.ts +30 -5
  75. package/templates/claude/src/lib/stream-consumer.ts +13 -0
  76. package/templates/claude/src/server.ts +2 -1
  77. package/templates/codex/.init/AGENTS.md +3 -3
  78. package/templates/codex/src/agent.ts +256 -39
  79. package/templates/codex/src/server.ts +2 -1
  80. package/templates/pi/.init/MINDS.md +3 -3
  81. package/templates/pi/src/agent.ts +269 -43
  82. package/templates/pi/src/lib/event-handler.ts +11 -0
  83. package/templates/pi/src/server.ts +3 -1
  84. package/dist/web-assets/assets/index-DhZrzddW.css +0 -1
  85. package/dist/{backup-YVGV2ZNM.js → backup-WWXVIMYQ.js} +5 -5
  86. package/dist/{bridge-YK7NTRU5.js → bridge-KU2IKSH3.js} +3 -3
  87. package/dist/{channels-FSAHOQWI.js → channels-LW5ZLMSQ.js} +3 -3
  88. package/dist/{chunk-VPOMJMV6.js → chunk-BDHKCLWK.js} +0 -0
  89. package/dist/{chunk-EEOMA4DX.js → chunk-HTB7KDRU.js} +3 -3
  90. package/dist/{create-M727VUDF.js → create-C3XZACTV.js} +3 -3
  91. package/dist/{env-IBW2QI6K.js → env-BJGM6FBA.js} +5 -5
  92. package/dist/{extension-MRYJWSMV.js → extension-B2W52WZY.js} +3 -3
  93. package/dist/{list-UQGIW7OF.js → list-R2GDWOEE.js} +3 -3
  94. package/dist/{login-RJJTCVR3.js → login-EZ4RRDQX.js} +3 -3
  95. package/dist/{login-SB5OENMV.js → login-JDOAK465.js} +4 -4
  96. package/dist/{logout-YFZAJRPY.js → logout-K6ZGAJY5.js} +3 -3
  97. package/dist/{logout-BYV433X6.js → logout-MWSIUOQU.js} +3 -3
  98. package/dist/{mind-wake-LDGPRA42.js → mind-wake-DCDFFQKX.js} +3 -3
  99. package/dist/{read-RJ5NAW5J.js → read-J5RM674N.js} +3 -3
  100. package/dist/{register-OX4HRSGC.js → register-53LBGSDC.js} +3 -3
  101. package/dist/{restart-AGEGNSYQ.js → restart-R2WFNF5K.js} +4 -4
  102. package/dist/{skill-B5OJEQUA.js → skill-DXLLSUHB.js} +5 -5
  103. package/dist/{start-MUMNFR52.js → start-XDOUAWN3.js} +4 -4
  104. package/dist/{status-MWLE3RVC.js → status-EYG4A3OK.js} +3 -3
  105. package/dist/{stop-EKERNYTX.js → stop-O62RTEMD.js} +4 -4
@@ -5,13 +5,14 @@ import {
5
5
  getDeliveryManager,
6
6
  initDeliveryManager,
7
7
  tryGetDeliveryManager
8
- } from "./chunk-RU74YG46.js";
9
- import "./chunk-724DVYHU.js";
8
+ } from "./chunk-RQRO6PC7.js";
9
+ import "./chunk-23UJGVYP.js";
10
10
  import "./chunk-UDZLPR34.js";
11
- import "./chunk-YVR6EHWL.js";
12
- import "./chunk-AXFLY5GU.js";
11
+ import "./chunk-VDZ4I4ZP.js";
12
+ import "./chunk-7LT3YZUR.js";
13
+ import "./chunk-IQ7VNWH6.js";
13
14
  import "./chunk-LNNI3MS4.js";
14
- import "./chunk-FXWBFDQR.js";
15
+ import "./chunk-AP2KQMMW.js";
15
16
  import "./chunk-5Y54AE3L.js";
16
17
  import "./chunk-TPX6E6PL.js";
17
18
  import "./chunk-UFTDRTCP.js";
@@ -23,6 +24,7 @@ import "./chunk-M77B73VV.js";
23
24
  import "./chunk-GLM7TVWP.js";
24
25
  import "./chunk-EGV6R6UF.js";
25
26
  import "./chunk-QUSMYGNQ.js";
27
+ import "./chunk-LGNUFVMR.js";
26
28
  import "./chunk-H6X6CKDN.js";
27
29
  import "./chunk-2RNMBXD2.js";
28
30
  import "./chunk-K3NQKI34.js";
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ COALESCE_WINDOW_MINUTES,
4
+ recordDeliveryFailure,
5
+ recordSenderDeliveryFailure
6
+ } from "./chunk-UTKUO2KY.js";
7
+ import "./chunk-IQ7VNWH6.js";
8
+ import "./chunk-LNNI3MS4.js";
9
+ import "./chunk-AP2KQMMW.js";
10
+ import "./chunk-QUSMYGNQ.js";
11
+ import "./chunk-H6X6CKDN.js";
12
+ import "./chunk-2RNMBXD2.js";
13
+ import "./chunk-K3NQKI34.js";
14
+ export {
15
+ COALESCE_WINDOW_MINUTES,
16
+ recordDeliveryFailure,
17
+ recordSenderDeliveryFailure
18
+ };
@@ -2,21 +2,22 @@
2
2
  import {
3
3
  clearEchoTextCache,
4
4
  echoTextToChannel
5
- } from "./chunk-XRWUQPCA.js";
5
+ } from "./chunk-7ARONCZW.js";
6
6
  import "./chunk-L7BKTZ5U.js";
7
- import "./chunk-ZEZQNP2G.js";
8
- import "./chunk-K2F237KS.js";
7
+ import "./chunk-HASADR3E.js";
8
+ import "./chunk-5DBGQBQR.js";
9
9
  import "./chunk-X67BDDZR.js";
10
- import "./chunk-SW2U6HRB.js";
11
- import "./chunk-RU74YG46.js";
12
- import "./chunk-724DVYHU.js";
10
+ import "./chunk-PIZDPY4G.js";
11
+ import "./chunk-UTKUO2KY.js";
12
+ import "./chunk-RQRO6PC7.js";
13
+ import "./chunk-23UJGVYP.js";
13
14
  import "./chunk-UDZLPR34.js";
14
- import "./chunk-YVR6EHWL.js";
15
- import "./chunk-RPPTGPYF.js";
15
+ import "./chunk-VDZ4I4ZP.js";
16
+ import "./chunk-TAWRJ24T.js";
16
17
  import "./chunk-7LT3YZUR.js";
17
- import "./chunk-AXFLY5GU.js";
18
+ import "./chunk-IQ7VNWH6.js";
18
19
  import "./chunk-LNNI3MS4.js";
19
- import "./chunk-FXWBFDQR.js";
20
+ import "./chunk-AP2KQMMW.js";
20
21
  import "./chunk-5Y54AE3L.js";
21
22
  import "./chunk-TPX6E6PL.js";
22
23
  import "./chunk-UFTDRTCP.js";
@@ -14,19 +14,19 @@ import {
14
14
  parseCommandArgs,
15
15
  setExtensionEnabled,
16
16
  uninstallNpmExtension
17
- } from "./chunk-ZEZQNP2G.js";
18
- import "./chunk-K2F237KS.js";
17
+ } from "./chunk-HASADR3E.js";
18
+ import "./chunk-5DBGQBQR.js";
19
19
  import "./chunk-X67BDDZR.js";
20
- import "./chunk-SW2U6HRB.js";
21
- import "./chunk-RU74YG46.js";
22
- import "./chunk-724DVYHU.js";
20
+ import "./chunk-PIZDPY4G.js";
21
+ import "./chunk-RQRO6PC7.js";
22
+ import "./chunk-23UJGVYP.js";
23
23
  import "./chunk-UDZLPR34.js";
24
- import "./chunk-YVR6EHWL.js";
25
- import "./chunk-RPPTGPYF.js";
24
+ import "./chunk-VDZ4I4ZP.js";
25
+ import "./chunk-TAWRJ24T.js";
26
26
  import "./chunk-7LT3YZUR.js";
27
- import "./chunk-AXFLY5GU.js";
27
+ import "./chunk-IQ7VNWH6.js";
28
28
  import "./chunk-LNNI3MS4.js";
29
- import "./chunk-FXWBFDQR.js";
29
+ import "./chunk-AP2KQMMW.js";
30
30
  import "./chunk-5Y54AE3L.js";
31
31
  import "./chunk-TPX6E6PL.js";
32
32
  import "./chunk-UFTDRTCP.js";
@@ -38,6 +38,7 @@ import "./chunk-M77B73VV.js";
38
38
  import "./chunk-GLM7TVWP.js";
39
39
  import "./chunk-EGV6R6UF.js";
40
40
  import "./chunk-QUSMYGNQ.js";
41
+ import "./chunk-LGNUFVMR.js";
41
42
  import "./chunk-H6X6CKDN.js";
42
43
  import "./chunk-2RNMBXD2.js";
43
44
  import "./chunk-K3NQKI34.js";
@@ -2,17 +2,18 @@
2
2
  import {
3
3
  resolveMindName
4
4
  } from "./chunk-BTY4WNFE.js";
5
- import {
6
- daemonFetch
7
- } from "./chunk-M74I3HHF.js";
8
5
  import {
9
6
  command
10
7
  } from "./chunk-TXSA4Q3V.js";
11
8
  import "./chunk-O7IGP7ZW.js";
9
+ import {
10
+ daemonFetch
11
+ } from "./chunk-M74I3HHF.js";
12
12
  import "./chunk-FNJCBRD3.js";
13
13
  import {
14
14
  formatFileSize
15
- } from "./chunk-DMK5ASKV.js";
15
+ } from "./chunk-F6D766VQ.js";
16
+ import "./chunk-QUSMYGNQ.js";
16
17
  import "./chunk-H6X6CKDN.js";
17
18
  import "./chunk-2RNMBXD2.js";
18
19
  import "./chunk-K3NQKI34.js";
@@ -5,20 +5,21 @@ import {
5
5
  linkToolResultToTurn,
6
6
  recordInbound,
7
7
  recordOutbound,
8
- resolveSleepAction
9
- } from "./chunk-ZEZQNP2G.js";
10
- import "./chunk-K2F237KS.js";
8
+ resolveSleepAction,
9
+ willGateMessage
10
+ } from "./chunk-HASADR3E.js";
11
+ import "./chunk-5DBGQBQR.js";
11
12
  import "./chunk-X67BDDZR.js";
12
- import "./chunk-SW2U6HRB.js";
13
- import "./chunk-RU74YG46.js";
14
- import "./chunk-724DVYHU.js";
13
+ import "./chunk-PIZDPY4G.js";
14
+ import "./chunk-RQRO6PC7.js";
15
+ import "./chunk-23UJGVYP.js";
15
16
  import "./chunk-UDZLPR34.js";
16
- import "./chunk-YVR6EHWL.js";
17
- import "./chunk-RPPTGPYF.js";
17
+ import "./chunk-VDZ4I4ZP.js";
18
+ import "./chunk-TAWRJ24T.js";
18
19
  import "./chunk-7LT3YZUR.js";
19
- import "./chunk-AXFLY5GU.js";
20
+ import "./chunk-IQ7VNWH6.js";
20
21
  import "./chunk-LNNI3MS4.js";
21
- import "./chunk-FXWBFDQR.js";
22
+ import "./chunk-AP2KQMMW.js";
22
23
  import "./chunk-5Y54AE3L.js";
23
24
  import "./chunk-TPX6E6PL.js";
24
25
  import "./chunk-UFTDRTCP.js";
@@ -30,6 +31,7 @@ import "./chunk-M77B73VV.js";
30
31
  import "./chunk-GLM7TVWP.js";
31
32
  import "./chunk-EGV6R6UF.js";
32
33
  import "./chunk-QUSMYGNQ.js";
34
+ import "./chunk-LGNUFVMR.js";
33
35
  import "./chunk-H6X6CKDN.js";
34
36
  import "./chunk-2RNMBXD2.js";
35
37
  import "./chunk-K3NQKI34.js";
@@ -39,5 +41,6 @@ export {
39
41
  linkToolResultToTurn,
40
42
  recordInbound,
41
43
  recordOutbound,
42
- resolveSleepAction
44
+ resolveSleepAction,
45
+ willGateMessage
43
46
  };
@@ -22,15 +22,15 @@ var cmd = subcommands({
22
22
  },
23
23
  start: {
24
24
  description: "Start a mind",
25
- run: (args) => import("./start-MUMNFR52.js").then((m) => m.run(args))
25
+ run: (args) => import("./start-XDOUAWN3.js").then((m) => m.run(args))
26
26
  },
27
27
  stop: {
28
28
  description: "Stop a mind",
29
- run: (args) => import("./stop-EKERNYTX.js").then((m) => m.run(args))
29
+ run: (args) => import("./stop-O62RTEMD.js").then((m) => m.run(args))
30
30
  },
31
31
  restart: {
32
32
  description: "Restart a mind",
33
- run: (args) => import("./restart-AGEGNSYQ.js").then((m) => m.run(args))
33
+ run: (args) => import("./restart-R2WFNF5K.js").then((m) => m.run(args))
34
34
  },
35
35
  delete: {
36
36
  description: "Delete a mind",
@@ -38,19 +38,19 @@ var cmd = subcommands({
38
38
  },
39
39
  list: {
40
40
  description: "List all minds",
41
- run: (args) => import("./mind-list-SYRA7CH5.js").then((m) => m.run(args))
41
+ run: (args) => import("./mind-list-KNU34SUD.js").then((m) => m.run(args))
42
42
  },
43
43
  status: {
44
44
  description: "Check mind status",
45
- run: (args) => import("./mind-status-Z2LQFA6F.js").then((m) => m.run(args))
45
+ run: (args) => import("./mind-status-BPTLQ5Z6.js").then((m) => m.run(args))
46
46
  },
47
47
  history: {
48
48
  description: "View mind activity history",
49
- run: (args) => import("./mind-history-OGNR4L7W.js").then((m) => m.run(transformMindFlag(args)))
49
+ run: (args) => import("./mind-history-RVF6KJ7K.js").then((m) => m.run(transformMindFlag(args)))
50
50
  },
51
51
  contacts: {
52
52
  description: "Who a mind has recently been in contact with",
53
- run: (args) => import("./mind-contacts-QYU4TPEA.js").then((m) => m.run(transformMindFlag(args)))
53
+ run: (args) => import("./mind-contacts-BKUOUJPV.js").then((m) => m.run(transformMindFlag(args)))
54
54
  },
55
55
  profile: {
56
56
  description: "Update mind profile",
@@ -78,19 +78,19 @@ var cmd = subcommands({
78
78
  },
79
79
  sleep: {
80
80
  description: "(legacy) Use 'volute clock sleep' instead",
81
- run: (args) => import("./mind-sleep-LZAFBDZD.js").then((m) => m.run(args))
81
+ run: (args) => import("./mind-sleep-D3DEYAWG.js").then((m) => m.run(args))
82
82
  },
83
83
  wake: {
84
84
  description: "(legacy) Use 'volute clock wake' instead",
85
- run: (args) => import("./mind-wake-LDGPRA42.js").then((m) => m.run(args))
85
+ run: (args) => import("./mind-wake-DCDFFQKX.js").then((m) => m.run(args))
86
86
  },
87
87
  seed: {
88
88
  description: "(legacy) Use 'volute seed create' instead",
89
- run: (args) => import("./seed-64XEHRUP.js").then((m) => m.run(args))
89
+ run: (args) => import("./seed-LHZ33UB4.js").then((m) => m.run(args))
90
90
  },
91
91
  sprout: {
92
92
  description: "(legacy) Use 'volute seed sprout' instead",
93
- run: (args) => import("./sprout-GJMZFRGZ.js").then((m) => m.run(args))
93
+ run: (args) => import("./sprout-A2PMEF7Z.js").then((m) => m.run(args))
94
94
  }
95
95
  },
96
96
  footer: "Mind name can be omitted (where applicable) if VOLUTE_MIND is set."
@@ -1,10 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  relativeAge
4
- } from "./chunk-EEOMA4DX.js";
4
+ } from "./chunk-HTB7KDRU.js";
5
5
  import {
6
6
  resolveMindName
7
7
  } from "./chunk-BTY4WNFE.js";
8
+ import {
9
+ command
10
+ } from "./chunk-TXSA4Q3V.js";
11
+ import "./chunk-O7IGP7ZW.js";
8
12
  import {
9
13
  daemonFetch
10
14
  } from "./chunk-M74I3HHF.js";
@@ -12,10 +16,6 @@ import {
12
16
  getClient,
13
17
  urlOf
14
18
  } from "./chunk-LOPXTW6H.js";
15
- import {
16
- command
17
- } from "./chunk-TXSA4Q3V.js";
18
- import "./chunk-O7IGP7ZW.js";
19
19
  import "./chunk-FNJCBRD3.js";
20
20
  import "./chunk-K3NQKI34.js";
21
21
 
@@ -7,6 +7,13 @@ import {
7
7
  import {
8
8
  resolveMindName
9
9
  } from "./chunk-BTY4WNFE.js";
10
+ import {
11
+ readStdin
12
+ } from "./chunk-33ODGMFZ.js";
13
+ import {
14
+ command
15
+ } from "./chunk-TXSA4Q3V.js";
16
+ import "./chunk-O7IGP7ZW.js";
10
17
  import {
11
18
  daemonFetch
12
19
  } from "./chunk-M74I3HHF.js";
@@ -14,10 +21,6 @@ import {
14
21
  getClient,
15
22
  urlOf
16
23
  } from "./chunk-LOPXTW6H.js";
17
- import {
18
- command
19
- } from "./chunk-TXSA4Q3V.js";
20
- import "./chunk-O7IGP7ZW.js";
21
24
  import "./chunk-FNJCBRD3.js";
22
25
  import "./chunk-K3NQKI34.js";
23
26
 
@@ -35,7 +38,7 @@ function eventLabel(row) {
35
38
  }
36
39
  return row.channel?.split(":")[1] || "event";
37
40
  }
38
- function formatRow(row) {
41
+ function formatRow(row, showTurn = false) {
39
42
  const time = new Date(normalizeTimestamp(row.created_at)).toLocaleString();
40
43
  const channel = row.channel ?? "";
41
44
  switch (row.type) {
@@ -104,7 +107,8 @@ function formatRow(row) {
104
107
  } catch {
105
108
  }
106
109
  }
107
- return `[${time}] [summary${range}] ${row.content ?? ""}`;
110
+ const turn = showTurn && row.turn_id ? ` (turn ${row.turn_id})` : "";
111
+ return `[${time}] [summary${range}]${turn} ${row.content ?? ""}`;
108
112
  }
109
113
  case "session_start":
110
114
  return `[${time}] [session_start] ${row.thread ?? ""}`;
@@ -112,7 +116,7 @@ function formatRow(row) {
112
116
  return `[${time}] [${row.type}] ${row.content ?? ""}`;
113
117
  }
114
118
  }
115
- function formatRowCompact(row) {
119
+ function formatRowCompact(row, showTurn = false) {
116
120
  const time = compactTime(row.created_at);
117
121
  const channel = row.channel ?? "";
118
122
  switch (row.type) {
@@ -164,7 +168,8 @@ function formatRowCompact(row) {
164
168
  } catch {
165
169
  }
166
170
  }
167
- return `[${time}] [summary${range}] ${row.content ?? ""}`;
171
+ const turn = showTurn && row.turn_id ? ` (turn ${row.turn_id})` : "";
172
+ return `[${time}] [summary${range}]${turn} ${row.content ?? ""}`;
168
173
  }
169
174
  case "session_start":
170
175
  return `[${time}] [session_start] ${row.thread ?? ""}`;
@@ -251,16 +256,81 @@ var cmd = command({
251
256
  preset: { type: "string", description: "Use a preset view" },
252
257
  limit: { type: "string", description: "Number of entries to show" },
253
258
  full: { type: "boolean", description: "Show full details" },
259
+ provisional: {
260
+ type: "boolean",
261
+ description: "Only turn summaries you haven't rewritten yet (shows turn ids)"
262
+ },
254
263
  period: { type: "string", description: "Time period (hour, day, week, month)" },
255
264
  from: { type: "string", description: "Start date" },
256
- to: { type: "string", description: "End date" }
265
+ to: { type: "string", description: "End date" },
266
+ write: {
267
+ type: "boolean",
268
+ description: "Replace a turn's provisional summary with your own account (needs --turn)"
269
+ },
270
+ turn: { type: "string", description: "Turn id to write a summary for (with --write)" },
271
+ text: { type: "string", description: "Summary text for --write (or pipe it via stdin)" }
257
272
  },
258
273
  examples: [
259
274
  "volute mind history --mind myname",
260
275
  "volute mind history --mind myname --full",
261
- "volute mind history --mind myname --period day"
276
+ "volute mind history --mind myname --period day",
277
+ "volute mind history --mind myname --provisional",
278
+ 'volute mind history --mind myname --write --turn <id> --text "I traced the bug and fixed it."'
262
279
  ],
263
280
  run: async ({ flags }) => {
281
+ if (flags.write) {
282
+ const readFlags = [
283
+ ["--channel", flags.channel],
284
+ ["--thread", flags.thread],
285
+ ["--preset", flags.preset],
286
+ ["--limit", flags.limit],
287
+ ["--from", flags.from],
288
+ ["--to", flags.to],
289
+ ["--period", flags.period],
290
+ ["--full", flags.full],
291
+ ["--provisional", flags.provisional]
292
+ ].filter(([, v]) => v);
293
+ if (readFlags.length > 0) {
294
+ console.error(
295
+ `--write can't be combined with read flags (${readFlags.map(([n]) => n).join(", ")}); it takes only --turn and --text.`
296
+ );
297
+ process.exit(1);
298
+ }
299
+ const name2 = resolveMindName(flags);
300
+ const turnId = flags.turn;
301
+ if (!turnId) {
302
+ console.error("--write requires --turn <id> (see 'volute mind history --provisional')");
303
+ process.exit(1);
304
+ }
305
+ const text = flags.text ?? await readStdin();
306
+ if (!text) {
307
+ console.error("Provide --text or pipe the summary via stdin");
308
+ process.exit(1);
309
+ }
310
+ const client2 = getClient();
311
+ const url2 = client2.api.minds[":name"]["turn-summaries"].$url({ param: { name: name2 } });
312
+ const res2 = await daemonFetch(urlOf(url2), {
313
+ method: "PUT",
314
+ headers: { "Content-Type": "application/json" },
315
+ body: JSON.stringify({ summaries: [{ turnId, content: text }] })
316
+ });
317
+ if (!res2.ok) {
318
+ let msg = `Failed to save summary: ${res2.status}`;
319
+ try {
320
+ const data = await res2.json();
321
+ if (data.error) msg = data.error;
322
+ } catch {
323
+ }
324
+ console.error(msg);
325
+ process.exit(1);
326
+ }
327
+ console.log(`Saved your summary for turn ${turnId.slice(0, 8)}.`);
328
+ return;
329
+ }
330
+ if (flags.turn || flags.text) {
331
+ console.error("--turn and --text only apply with --write");
332
+ process.exit(1);
333
+ }
264
334
  if (flags.period) {
265
335
  const validPeriods = ["hour", "day", "week", "month"];
266
336
  if (!validPeriods.includes(flags.period)) {
@@ -340,6 +410,7 @@ var cmd = command({
340
410
  if (flags.preset) url.searchParams.set("preset", flags.preset);
341
411
  if (flags.limit) url.searchParams.set("limit", flags.limit);
342
412
  if (flags.full) url.searchParams.set("full", "true");
413
+ if (flags.provisional) url.searchParams.set("provisional", "true");
343
414
  const res = await daemonFetch(urlOf(url));
344
415
  if (!res.ok) {
345
416
  let errorMsg = `Failed to get history: ${res.status}`;
@@ -353,9 +424,10 @@ var cmd = command({
353
424
  }
354
425
  const rows = await res.json();
355
426
  const compact = isCompact();
427
+ const showTurn = !!flags.provisional;
356
428
  for (const row of rows.reverse()) {
357
429
  if (compact && (row.type === "done" || row.type === "usage")) continue;
358
- console.log(compact ? formatRowCompact(row) : formatRow(row));
430
+ console.log(compact ? formatRowCompact(row, showTurn) : formatRow(row, showTurn));
359
431
  }
360
432
  }
361
433
  });
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  relativeAge,
4
4
  run
5
- } from "./chunk-EEOMA4DX.js";
6
- import "./chunk-M74I3HHF.js";
5
+ } from "./chunk-HTB7KDRU.js";
7
6
  import "./chunk-TXSA4Q3V.js";
8
7
  import "./chunk-O7IGP7ZW.js";
8
+ import "./chunk-M74I3HHF.js";
9
9
  import "./chunk-FNJCBRD3.js";
10
10
  import "./chunk-K3NQKI34.js";
11
11
  export {
@@ -8,19 +8,19 @@ import {
8
8
  stopMindFull,
9
9
  stopSpiritFull,
10
10
  wakeMind
11
- } from "./chunk-ZEZQNP2G.js";
12
- import "./chunk-K2F237KS.js";
11
+ } from "./chunk-HASADR3E.js";
12
+ import "./chunk-5DBGQBQR.js";
13
13
  import "./chunk-X67BDDZR.js";
14
- import "./chunk-SW2U6HRB.js";
15
- import "./chunk-RU74YG46.js";
16
- import "./chunk-724DVYHU.js";
14
+ import "./chunk-PIZDPY4G.js";
15
+ import "./chunk-RQRO6PC7.js";
16
+ import "./chunk-23UJGVYP.js";
17
17
  import "./chunk-UDZLPR34.js";
18
- import "./chunk-YVR6EHWL.js";
19
- import "./chunk-RPPTGPYF.js";
18
+ import "./chunk-VDZ4I4ZP.js";
19
+ import "./chunk-TAWRJ24T.js";
20
20
  import "./chunk-7LT3YZUR.js";
21
- import "./chunk-AXFLY5GU.js";
21
+ import "./chunk-IQ7VNWH6.js";
22
22
  import "./chunk-LNNI3MS4.js";
23
- import "./chunk-FXWBFDQR.js";
23
+ import "./chunk-AP2KQMMW.js";
24
24
  import "./chunk-5Y54AE3L.js";
25
25
  import "./chunk-TPX6E6PL.js";
26
26
  import "./chunk-UFTDRTCP.js";
@@ -32,6 +32,7 @@ import "./chunk-M77B73VV.js";
32
32
  import "./chunk-GLM7TVWP.js";
33
33
  import "./chunk-EGV6R6UF.js";
34
34
  import "./chunk-QUSMYGNQ.js";
35
+ import "./chunk-LGNUFVMR.js";
35
36
  import "./chunk-H6X6CKDN.js";
36
37
  import "./chunk-2RNMBXD2.js";
37
38
  import "./chunk-K3NQKI34.js";
@@ -1,19 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  parseDuration
4
- } from "./chunk-G7A5LEVI.js";
4
+ } from "./chunk-LN7XJ56R.js";
5
5
  import "./chunk-7YJY3F2R.js";
6
6
  import {
7
7
  resolveMindName
8
8
  } from "./chunk-BTY4WNFE.js";
9
- import {
10
- daemonFetch
11
- } from "./chunk-M74I3HHF.js";
12
- import "./chunk-LOPXTW6H.js";
13
9
  import {
14
10
  command
15
11
  } from "./chunk-TXSA4Q3V.js";
16
12
  import "./chunk-O7IGP7ZW.js";
13
+ import {
14
+ daemonFetch
15
+ } from "./chunk-M74I3HHF.js";
16
+ import "./chunk-LOPXTW6H.js";
17
17
  import "./chunk-FNJCBRD3.js";
18
18
  import "./chunk-K3NQKI34.js";
19
19
 
@@ -2,14 +2,17 @@
2
2
  import {
3
3
  resolveMindName
4
4
  } from "./chunk-BTY4WNFE.js";
5
- import {
6
- daemonFetch
7
- } from "./chunk-M74I3HHF.js";
8
5
  import {
9
6
  command
10
7
  } from "./chunk-TXSA4Q3V.js";
11
8
  import "./chunk-O7IGP7ZW.js";
9
+ import {
10
+ daemonFetch
11
+ } from "./chunk-M74I3HHF.js";
12
12
  import "./chunk-FNJCBRD3.js";
13
+ import {
14
+ formatTokens
15
+ } from "./chunk-5RBEEAKW.js";
13
16
  import "./chunk-K3NQKI34.js";
14
17
 
15
18
  // packages/cli/src/commands/mind-status.ts
@@ -42,6 +45,15 @@ var cmd = command({
42
45
  if (mind.stage) console.log(`Stage: ${mind.stage}`);
43
46
  if (mind.parent) console.log(`Parent: ${mind.parent}`);
44
47
  if (mind.model) console.log(`Model: ${mind.model}`);
48
+ if (mind.memory) {
49
+ let line = `Memory: ${formatTokens(mind.memory.estTokens)} (${Math.round(mind.memory.bytes / 1024)}KB), always loaded`;
50
+ if (mind.memory.overHardCap) {
51
+ line += ` \u2014 exceeds the load cap (${formatTokens(mind.memory.hardCapTokens)}); only the head is loaded`;
52
+ } else if (mind.memory.overBudget) {
53
+ line += ` \u2014 over the recommended budget (${formatTokens(mind.memory.softBudgetTokens)}); consider consolidating`;
54
+ }
55
+ console.log(line);
56
+ }
45
57
  if (mind.templateStale) {
46
58
  console.log(`Template: outdated \u2014 run 'volute mind upgrade ${mind.name}'`);
47
59
  }
@@ -4,7 +4,7 @@ import "./chunk-K3NQKI34.js";
4
4
  // package.json
5
5
  var package_default = {
6
6
  name: "volute",
7
- version: "0.52.0",
7
+ version: "0.53.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",
@@ -8,7 +8,7 @@ import {
8
8
  getPrompt,
9
9
  getPromptIfCustom,
10
10
  substitute
11
- } from "./chunk-FXWBFDQR.js";
11
+ } from "./chunk-AP2KQMMW.js";
12
12
  import "./chunk-H6X6CKDN.js";
13
13
  import "./chunk-2RNMBXD2.js";
14
14
  import "./chunk-K3NQKI34.js";
@@ -2,13 +2,13 @@
2
2
  import {
3
3
  resolveMindName
4
4
  } from "./chunk-BTY4WNFE.js";
5
- import {
6
- daemonFetch
7
- } from "./chunk-M74I3HHF.js";
8
5
  import {
9
6
  command
10
7
  } from "./chunk-TXSA4Q3V.js";
11
8
  import "./chunk-O7IGP7ZW.js";
9
+ import {
10
+ daemonFetch
11
+ } from "./chunk-M74I3HHF.js";
12
12
  import "./chunk-FNJCBRD3.js";
13
13
  import "./chunk-K3NQKI34.js";
14
14
 
@@ -28,11 +28,15 @@ var cmd = command({
28
28
  body: JSON.stringify({ id: args.id })
29
29
  });
30
30
  if (!res.ok) {
31
- const data = await res.json();
32
- console.error(data.error ?? `Failed to reject file: ${res.status}`);
31
+ const data2 = await res.json();
32
+ console.error(data2.error ?? `Failed to reject file: ${res.status}`);
33
33
  process.exit(1);
34
34
  }
35
+ const data = await res.json().catch(() => ({}));
35
36
  console.log(`File rejected: ${args.id}`);
37
+ if (data.notified === false) {
38
+ console.log("Note: the sender could not be notified \u2014 mention it to them directly.");
39
+ }
36
40
  }
37
41
  });
38
42
  var run = cmd.execute;
@@ -3,13 +3,15 @@ import {
3
3
  Scheduler,
4
4
  getScheduler,
5
5
  initScheduler
6
- } from "./chunk-SW2U6HRB.js";
7
- import "./chunk-724DVYHU.js";
8
- import "./chunk-YVR6EHWL.js";
9
- import "./chunk-AXFLY5GU.js";
6
+ } from "./chunk-PIZDPY4G.js";
7
+ import "./chunk-23UJGVYP.js";
8
+ import "./chunk-VDZ4I4ZP.js";
9
+ import "./chunk-7LT3YZUR.js";
10
+ import "./chunk-IQ7VNWH6.js";
10
11
  import "./chunk-LNNI3MS4.js";
11
- import "./chunk-FXWBFDQR.js";
12
+ import "./chunk-AP2KQMMW.js";
12
13
  import "./chunk-5Y54AE3L.js";
14
+ import "./chunk-U54PJPTB.js";
13
15
  import "./chunk-WCFSBH33.js";
14
16
  import "./chunk-M77B73VV.js";
15
17
  import "./chunk-GLM7TVWP.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-4JRQDPGA.js").then((m) => m.run(args));
7
+ await import("./seed-create-OQU4KNCB.js").then((m) => m.run(args));
8
8
  }
9
9
  export {
10
10
  run
@@ -12,11 +12,11 @@ var cmd = subcommands({
12
12
  commands: {
13
13
  create: {
14
14
  description: "Plant a new seed",
15
- run: (args) => import("./seed-create-4JRQDPGA.js").then((m) => m.run(args))
15
+ run: (args) => import("./seed-create-OQU4KNCB.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-NIDIOJXT.js").then((m) => m.run(args))
19
+ run: (args) => import("./seed-sprout-SFUYH2RG.js").then((m) => m.run(args))
20
20
  },
21
21
  check: {
22
22
  description: "Check seed readiness",