volute 0.39.0 → 0.40.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 (108) hide show
  1. package/dist/{activity-events-CR4RIHJT.js → activity-events-OJZ7G5CG.js} +3 -3
  2. package/dist/{ai-service-PL7GKFQC.js → ai-service-JMV4KZN4.js} +8 -4
  3. package/dist/{archive-UEWIFRAR.js → archive-BC2MTNPV.js} +3 -3
  4. package/dist/{auth-OJ2YW3NR.js → auth-2IMZ6N5G.js} +4 -4
  5. package/dist/{chat-RQ5NV5EA.js → chat-O5QCGCUG.js} +2 -2
  6. package/dist/{chunk-TCNCRDB5.js → chunk-2AQCEQYN.js} +1 -1
  7. package/dist/{chunk-OEXOFBW5.js → chunk-3XSFMN3H.js} +1 -1
  8. package/dist/{chunk-7OS7QFDF.js → chunk-43PVCF4V.js} +3 -3
  9. package/dist/{chunk-7GZB3ZJP.js → chunk-5VBXKFPO.js} +2 -2
  10. package/dist/{chunk-IA2SZSLB.js → chunk-76Q6YLJL.js} +1 -1
  11. package/dist/{chunk-QDWPM73D.js → chunk-B7YJUWMM.js} +3 -3
  12. package/dist/{chunk-TT4WT6Y7.js → chunk-DNQPHLGM.js} +1 -1
  13. package/dist/{chunk-6FSSMAXU.js → chunk-FBV22PFY.js} +1 -1
  14. package/dist/{chunk-RAVQXKAG.js → chunk-FRJ73IWR.js} +1 -1
  15. package/dist/{chunk-WUH54G5S.js → chunk-HAJHDGBV.js} +1 -1
  16. package/dist/{chunk-X7GM2OPM.js → chunk-HEZM5GCV.js} +2 -2
  17. package/dist/{chunk-4BO4I7UF.js → chunk-JSITYTIL.js} +6 -6
  18. package/dist/{chunk-CJ26DXZL.js → chunk-MHFAWJCC.js} +16 -0
  19. package/dist/{chunk-OS5MRIEP.js → chunk-PC55DGNX.js} +1 -1
  20. package/dist/{chunk-QDWP435B.js → chunk-PDSA3ILI.js} +1 -1
  21. package/dist/{chunk-B7MWXFAH.js → chunk-PGX52NFO.js} +15 -1
  22. package/dist/{chunk-7W3UWCQD.js → chunk-PHR4XQPL.js} +3 -3
  23. package/dist/{chunk-EVKGKQ2P.js → chunk-PIRL2HAO.js} +1 -7
  24. package/dist/{chunk-Y5UC6G3O.js → chunk-PZTVQL3J.js} +2 -2
  25. package/dist/{chunk-DZ4LYU6J.js → chunk-RMZSICLS.js} +1 -1
  26. package/dist/{chunk-XOSAY7PY.js → chunk-S4YO5OWV.js} +1 -1
  27. package/dist/{chunk-6V2U3GFQ.js → chunk-SGC6CDXB.js} +2 -2
  28. package/dist/{chunk-QJ4GU5XT.js → chunk-SOPMVTTW.js} +2 -2
  29. package/dist/{chunk-IBOU6Q3Y.js → chunk-T26YLQPU.js} +5 -5
  30. package/dist/{chunk-Y4W3OS7Q.js → chunk-WGRMLXTH.js} +8 -8
  31. package/dist/{chunk-CHCISTH7.js → chunk-XUJR6NZW.js} +508 -332
  32. package/dist/cli.js +15 -15
  33. package/dist/{cloud-sync-NQCWJLYI.js → cloud-sync-5JF2Z7VM.js} +16 -16
  34. package/dist/{conversations-EUXHBWJD.js → conversations-LUVHGQSS.js} +4 -4
  35. package/dist/{create-3QH7DVLC.js → create-TDQM3SHV.js} +1 -1
  36. package/dist/{daemon-restart-UEB3PLKB.js → daemon-restart-XHDJDOPQ.js} +8 -8
  37. package/dist/daemon.js +219 -116
  38. package/dist/{db-32YFKMFL.js → db-2GIS7HSG.js} +2 -2
  39. package/dist/delivery-manager-L5WFP2ND.js +30 -0
  40. package/dist/{delivery-router-EUW4RIWG.js → delivery-router-IU4OMVKZ.js} +3 -3
  41. package/dist/down-KIJVZ3OC.js +17 -0
  42. package/dist/echo-text-TJWCUBPB.js +31 -0
  43. package/dist/{exec-2MFHTGOS.js → exec-BGMU7VXR.js} +4 -4
  44. package/dist/{export-JDAK3THX.js → export-RKUWSQSG.js} +3 -3
  45. package/dist/{extensions-V7TXKAKM.js → extensions-VN5SEVRP.js} +16 -16
  46. package/dist/{files-K5XV23H6.js → files-J2CKZ6PK.js} +3 -3
  47. package/dist/{import-GZ5IYVV7.js → import-KVY6BYXG.js} +6 -6
  48. package/dist/{isolation-FPF4UTH2.js → isolation-MM7YHK6J.js} +3 -3
  49. package/dist/{login-BGF5JY3I.js → login-OHM32QVD.js} +2 -2
  50. package/dist/{logout-GQHI6KH6.js → logout-74WBDMOE.js} +2 -2
  51. package/dist/{message-delivery-X7MKA3TA.js → message-delivery-VBBAJX3J.js} +16 -16
  52. package/dist/{mind-QMJIWWWW.js → mind-PUPXDIYQ.js} +5 -5
  53. package/dist/{mind-activity-tracker-Z3KBQTVU.js → mind-activity-tracker-7GE24YZE.js} +4 -4
  54. package/dist/mind-manager-4Q6KGZHL.js +30 -0
  55. package/dist/mind-service-7OD4PRO5.js +36 -0
  56. package/dist/{package-IR4ZEQA2.js → package-6YPVWGD3.js} +1 -1
  57. package/dist/{registry-LWEOAO53.js → registry-L272BZJR.js} +2 -2
  58. package/dist/{sandbox-KUAVC37A.js → sandbox-BQAFYHLE.js} +4 -4
  59. package/dist/scheduler-7E22Q7IC.js +30 -0
  60. package/dist/{schema-K575EBPE.js → schema-HHYJDG7B.js} +3 -1
  61. package/dist/{seed-GPBERPXJ.js → seed-4V2O7FQE.js} +1 -1
  62. package/dist/{seed-cmd-PWF4FYFG.js → seed-cmd-JKDEW4MP.js} +2 -2
  63. package/dist/{seed-create-NTIICZVB.js → seed-create-EPAO3H5F.js} +3 -3
  64. package/dist/{seed-sprout-PRPFKGJF.js → seed-sprout-EONCL4DU.js} +8 -8
  65. package/dist/{send-IMHDYJHW.js → send-232RAHPX.js} +3 -3
  66. package/dist/{service-DWBRRFXS.js → service-AG5BKRUV.js} +5 -5
  67. package/dist/{service-install-KEBDNZVE.js → service-install-HVAEUBAH.js} +6 -6
  68. package/dist/{setup-IFYS3TLS.js → setup-IL7QJZN4.js} +3 -3
  69. package/dist/{setup-4CWQ53VV.js → setup-PSA7LJ5U.js} +8 -8
  70. package/dist/{skills-FJ5W73AV.js → skills-SLEY5X6W.js} +6 -6
  71. package/dist/sleep-manager-27S7MKJO.js +34 -0
  72. package/dist/{spirit-U6MDQLYT.js → spirit-7BUHSEO2.js} +8 -8
  73. package/dist/{sprout-ABX2G76C.js → sprout-JWQ57KF3.js} +1 -1
  74. package/dist/{status-C6BBWNU3.js → status-6GSOSYOD.js} +6 -6
  75. package/dist/system-chat-EIINIHFB.js +34 -0
  76. package/dist/{tailscale-2KKXDMNK.js → tailscale-6MHNLBAX.js} +2 -2
  77. package/dist/up-4XS3RCPP.js +19 -0
  78. package/dist/{update-V26PT4VN.js → update-BT2PY73H.js} +6 -6
  79. package/dist/{update-check-XRERV36Y.js → update-check-Y3HBEMF2.js} +3 -3
  80. package/dist/{version-notify-ZBMY2TEX.js → version-notify-NFQMI5IY.js} +17 -17
  81. package/dist/web-assets/assets/index-DqHSW9Fr.css +1 -0
  82. package/dist/web-assets/assets/index-Jluza4c-.js +73 -0
  83. package/dist/web-assets/index.html +2 -2
  84. package/drizzle/0009_mind_notices.sql +14 -0
  85. package/drizzle/meta/_journal.json +7 -0
  86. package/package.json +1 -1
  87. package/templates/_base/.init/.local/hooks/pre-prompt/notices.ts +46 -0
  88. package/templates/_base/src/lib/context-breakdown.ts +281 -126
  89. package/templates/_base/src/lib/daemon-client.ts +5 -2
  90. package/templates/_base/src/lib/transparency.ts +5 -3
  91. package/templates/_base/src/lib/volute-server.ts +23 -0
  92. package/templates/claude/src/agent.ts +54 -16
  93. package/templates/claude/src/server.ts +1 -0
  94. package/templates/codex/src/agent.ts +45 -12
  95. package/templates/codex/src/server.ts +1 -0
  96. package/templates/pi/src/agent.ts +72 -13
  97. package/templates/pi/src/server.ts +1 -0
  98. package/dist/delivery-manager-N34XKUGL.js +0 -30
  99. package/dist/down-TCEBGTMY.js +0 -17
  100. package/dist/echo-text-N3BC3WNX.js +0 -31
  101. package/dist/mind-manager-7GWTTKWD.js +0 -30
  102. package/dist/mind-service-MO2XJKJN.js +0 -36
  103. package/dist/scheduler-CGUPAEBA.js +0 -30
  104. package/dist/sleep-manager-6QRMUNHK.js +0 -34
  105. package/dist/system-chat-D343HYGR.js +0 -34
  106. package/dist/up-ZU6ILVMA.js +0 -19
  107. package/dist/web-assets/assets/index-B1zwqwt8.css +0 -1
  108. package/dist/web-assets/assets/index-D1guJF1i.js +0 -73
@@ -8,8 +8,8 @@
8
8
  <link rel="preconnect" href="https://fonts.googleapis.com" />
9
9
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
10
10
  <link href="https://fonts.googleapis.com/css2?family=Averia+Serif+Libre:wght@300;400;700&family=Fira+Code:wght@300;400;500;600&family=Averia+Sans+Libre:ital,wght@0,300;0,400;0,500;0,600;1,400&display=swap" rel="stylesheet" />
11
- <script type="module" crossorigin src="/assets/index-D1guJF1i.js"></script>
12
- <link rel="stylesheet" crossorigin href="/assets/index-B1zwqwt8.css">
11
+ <script type="module" crossorigin src="/assets/index-Jluza4c-.js"></script>
12
+ <link rel="stylesheet" crossorigin href="/assets/index-DqHSW9Fr.css">
13
13
  </head>
14
14
  <body>
15
15
  <div id="root"></div>
@@ -0,0 +1,14 @@
1
+ -- Failure notices delivered to minds on their next successful turn
2
+
3
+ CREATE TABLE IF NOT EXISTS `mind_notices` (
4
+ `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
5
+ `mind` text NOT NULL,
6
+ `session` text NOT NULL,
7
+ `kind` text NOT NULL,
8
+ `reason` text NOT NULL,
9
+ `detail` text NOT NULL,
10
+ `raw` text,
11
+ `created_at` text NOT NULL DEFAULT (datetime('now'))
12
+ );
13
+ --> statement-breakpoint
14
+ CREATE INDEX IF NOT EXISTS `idx_mind_notices_mind_session` ON `mind_notices` (`mind`, `session`);
@@ -64,6 +64,13 @@
64
64
  "when": 1775300000000,
65
65
  "tag": "0008_performance_indexes",
66
66
  "breakpoints": true
67
+ },
68
+ {
69
+ "idx": 9,
70
+ "version": "6",
71
+ "when": 1775400000000,
72
+ "tag": "0009_mind_notices",
73
+ "breakpoints": true
67
74
  }
68
75
  ]
69
76
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "volute",
3
- "version": "0.39.0",
3
+ "version": "0.40.0",
4
4
  "description": "CLI for creating and managing self-modifying AI minds powered by the Claude Agent SDK",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -0,0 +1,46 @@
1
+ // Failure notices — surfaces failures (auth, rate-limit, overloaded, network, crash,
2
+ // budget) that happened in this session while you couldn't respond, on your next turn.
3
+ // The daemon records them; this hook whispers them in. Customize or remove as you like.
4
+
5
+ const input = await new Promise<string>((resolve) => {
6
+ let data = "";
7
+ process.stdin.on("data", (chunk) => {
8
+ data += chunk;
9
+ });
10
+ process.stdin.on("end", () => resolve(data));
11
+ });
12
+
13
+ const { VOLUTE_DAEMON_PORT, VOLUTE_DAEMON_TOKEN, VOLUTE_MIND } = process.env;
14
+ if (!VOLUTE_DAEMON_PORT || !VOLUTE_DAEMON_TOKEN || !VOLUTE_MIND) {
15
+ console.log("{}");
16
+ process.exit(0);
17
+ }
18
+
19
+ let session = "";
20
+ try {
21
+ session = JSON.parse(input).session ?? "";
22
+ } catch {}
23
+
24
+ if (!session) {
25
+ console.log("{}");
26
+ process.exit(0);
27
+ }
28
+
29
+ try {
30
+ const res = await fetch(
31
+ `http://127.0.0.1:${VOLUTE_DAEMON_PORT}/api/minds/${VOLUTE_MIND}/history/notices?session=${encodeURIComponent(session)}`,
32
+ { headers: { Authorization: `Bearer ${VOLUTE_DAEMON_TOKEN}` } },
33
+ );
34
+ if (!res.ok) {
35
+ console.log("{}");
36
+ process.exit(0);
37
+ }
38
+ const { context } = (await res.json()) as { context: string | null };
39
+ if (context) {
40
+ console.log(JSON.stringify({ additionalContext: context }));
41
+ } else {
42
+ console.log("{}");
43
+ }
44
+ } catch {
45
+ console.log("{}");
46
+ }