volute 0.18.0 → 0.19.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 (104) hide show
  1. package/README.md +1 -1
  2. package/dist/archive-ZCFOSTKB.js +15 -0
  3. package/dist/{channel-SLURLIRV.js → channel-PUQKGSQM.js} +60 -7
  4. package/dist/{chunk-AYB7XAWO.js → chunk-2TJGRJ4O.js} +114 -279
  5. package/dist/{chunk-6BDNWYKG.js → chunk-32VR2EOH.js} +2 -2
  6. package/dist/chunk-4KPUF5JD.js +214 -0
  7. package/dist/{chunk-QJIIHU32.js → chunk-7NO7EV5Z.js} +2 -2
  8. package/dist/chunk-AW7P4EVV.js +159 -0
  9. package/dist/{chunk-2Y77MCFG.js → chunk-DYZGP3EW.js} +2 -2
  10. package/dist/{chunk-M77QBTEH.js → chunk-EBGCNDMM.js} +24 -14
  11. package/dist/{chunk-GSPWIM5E.js → chunk-EMQSAY3B.js} +77 -6
  12. package/dist/{chunk-37X7ECMF.js → chunk-FCDU5BFX.js} +1 -1
  13. package/dist/chunk-FGV2H4TX.js +803 -0
  14. package/dist/{chunk-ZCEYUUID.js → chunk-OGXOMR65.js} +2 -1
  15. package/dist/chunk-OTWLI7F4.js +375 -0
  16. package/dist/{chunk-GK4E7LM7.js → chunk-RHEGSQFJ.js} +1 -1
  17. package/dist/{chunk-MVSXRMJJ.js → chunk-SCUDS4US.js} +1 -1
  18. package/dist/{chunk-FW5API7X.js → chunk-UJ6GHNR7.js} +2 -2
  19. package/dist/{chunk-OYSZNX5I.js → chunk-VDWCHYTS.js} +1 -1
  20. package/dist/{chunk-6DVBMLVN.js → chunk-VE4D3GOP.js} +2 -2
  21. package/dist/chunk-VQWDC6UK.js +142 -0
  22. package/dist/{chunk-OJQ47SCA.js → chunk-WC6ZHVRL.js} +1 -1
  23. package/dist/chunk-YUIHSKR6.js +72 -0
  24. package/dist/chunk-Z524RFCJ.js +36 -0
  25. package/dist/cli.js +33 -25
  26. package/dist/{connector-3ELFMI2R.js → connector-JBVNZ7VK.js} +6 -6
  27. package/dist/connectors/discord.js +2 -2
  28. package/dist/connectors/slack.js +2 -2
  29. package/dist/connectors/telegram.js +2 -2
  30. package/dist/{create-ZWHCRT5F.js → create-HP4OVVHF.js} +6 -4
  31. package/dist/{daemon-client-ODKDUYDE.js → daemon-client-ITWUCNFO.js} +2 -2
  32. package/dist/{daemon-restart-2HVTHZAT.js → daemon-restart-JMZM3QY4.js} +8 -8
  33. package/dist/daemon.js +1144 -1108
  34. package/dist/db-5ZVC6MQF.js +10 -0
  35. package/dist/{delete-6G6WEX4F.js → delete-BSU7K3RY.js} +1 -1
  36. package/dist/delivery-manager-ISTJMZDW.js +16 -0
  37. package/dist/down-ZY35KMHR.js +14 -0
  38. package/dist/{env-6IDWGBUH.js → env-A3LMO777.js} +6 -6
  39. package/dist/export-GCDNQCF3.js +100 -0
  40. package/dist/{history-YUEKTJ2N.js → history-WNK3DFUM.js} +6 -6
  41. package/dist/{import-EDGRLIGO.js → import-M63VIUJ5.js} +3 -3
  42. package/dist/log-PPPZDVEF.js +39 -0
  43. package/dist/{login-ORQDXLBM.js → login-HNH3EUQV.js} +2 -2
  44. package/dist/{logout-XC5AUO5I.js → logout-I5CB5UZS.js} +2 -2
  45. package/dist/{logs-GYOR3L2L.js → logs-SF2IMJN4.js} +6 -6
  46. package/dist/merge-33C237A4.js +46 -0
  47. package/dist/{mind-OJN6RBZW.js → mind-PQ5NCPSU.js} +14 -10
  48. package/dist/mind-manager-RVCFROAY.js +18 -0
  49. package/dist/{package-OKLFO7UY.js → package-MYE2ZJLV.js} +5 -3
  50. package/dist/{pages-6IV4VQTU.js → pages-AXCOSY3P.js} +2 -2
  51. package/dist/{publish-Q4RPSJLL.js → publish-YB377JB7.js} +18 -4
  52. package/dist/pull-XAEWQJ47.js +39 -0
  53. package/dist/{register-LDE6LRXY.js → register-VSPCMHKX.js} +2 -2
  54. package/dist/{restart-YFAWFS5T.js → restart-IQKMCK5M.js} +6 -6
  55. package/dist/{schedule-AGYLDMNS.js → schedule-LMX7GAQZ.js} +6 -6
  56. package/dist/schema-5BW7DFZI.js +24 -0
  57. package/dist/{seed-AP4Q7RZ7.js → seed-J43YDKXG.js} +7 -4
  58. package/dist/{send-BNDTLUPM.js → send-KVIZIGCE.js} +8 -8
  59. package/dist/{service-U7MZ2H7F.js → service-LUR7WDO7.js} +6 -6
  60. package/dist/{setup-DJKIZKGW.js → setup-OH3PJUJO.js} +7 -7
  61. package/dist/shared-KO35ZM44.js +39 -0
  62. package/dist/{skill-2Y42P4JY.js → skill-BCVNI6TV.js} +6 -6
  63. package/{templates/_base/_skills → dist/skills}/orientation/SKILL.md +1 -1
  64. package/{templates/_base/_skills → dist/skills}/sessions/SKILL.md +2 -2
  65. package/{templates/_base/_skills → dist/skills}/volute-mind/SKILL.md +19 -1
  66. package/dist/{sprout-TJ3BHVOG.js → sprout-VBEX63LX.js} +38 -20
  67. package/dist/{start-3YYRXBKP.js → start-I5JYB65M.js} +6 -6
  68. package/dist/{status-VSFZYX7S.js → status-4ESFLGH4.js} +5 -5
  69. package/dist/status-D7E5HHBV.js +35 -0
  70. package/dist/{status-OKNA6AR3.js → status-JCJAOXTW.js} +2 -2
  71. package/dist/{stop-AA5K5LYG.js → stop-NBVKEFQQ.js} +6 -6
  72. package/dist/{up-7B3BWF2U.js → up-WG65SWJU.js} +5 -5
  73. package/dist/{update-YAGN5ODG.js → update-FJIHDJKM.js} +5 -5
  74. package/dist/{update-check-APLTH4IN.js → update-check-MWE5AH4U.js} +2 -2
  75. package/dist/{upgrade-KXZCQSZN.js → upgrade-AIT24B5I.js} +1 -1
  76. package/dist/{variant-X5QFG6KK.js → variant-63ZWO2W7.js} +4 -4
  77. package/dist/variants-JAGWGBXG.js +26 -0
  78. package/dist/web-assets/assets/index-BAbuRsVF.css +1 -0
  79. package/dist/web-assets/assets/index-CiQhSKi_.js +63 -0
  80. package/dist/web-assets/index.html +2 -2
  81. package/drizzle/0010_delivery_queue.sql +12 -0
  82. package/drizzle/0011_rename_human_to_brain.sql +1 -0
  83. package/drizzle/meta/0010_snapshot.json +7 -0
  84. package/drizzle/meta/0011_snapshot.json +7 -0
  85. package/drizzle/meta/_journal.json +14 -0
  86. package/package.json +5 -3
  87. package/templates/_base/.init/.config/hooks/startup-context.sh +1 -1
  88. package/templates/_base/.init/.config/scripts/session-reader.ts +3 -3
  89. package/templates/_base/home/VOLUTE.md +16 -1
  90. package/templates/_base/src/lib/auto-commit.ts +51 -14
  91. package/templates/_base/src/lib/router.ts +123 -1
  92. package/templates/_base/src/lib/types.ts +4 -0
  93. package/templates/_base/src/lib/volute-server.ts +91 -2
  94. package/templates/claude/src/server.ts +2 -2
  95. package/templates/claude/volute-template.json +1 -2
  96. package/templates/pi/src/agent.ts +1 -1
  97. package/templates/pi/src/lib/session-context-extension.ts +2 -2
  98. package/templates/pi/volute-template.json +1 -2
  99. package/dist/chunk-PO5Q2AYN.js +0 -121
  100. package/dist/down-A56B5JLK.js +0 -14
  101. package/dist/mind-manager-Z7O7PN2O.js +0 -15
  102. package/dist/web-assets/assets/index-CtiimdWK.css +0 -1
  103. package/dist/web-assets/assets/index-kt1_EcuO.js +0 -63
  104. /package/{templates/_base/_skills → dist/skills}/memory/SKILL.md +0 -0
package/README.md CHANGED
@@ -74,7 +74,7 @@ The agent knows which channel each message came from — CLI, web, Discord, or s
74
74
  │ ├── VOLUTE.md # channel routing docs
75
75
  │ └── memory/ # daily logs (YYYY-MM-DD.md)
76
76
  ├── src/ # agent server code
77
- └── .volute/ # runtime state, session, logs
77
+ └── .mind/ # runtime state, session, logs
78
78
  ```
79
79
 
80
80
  **`SOUL.md`** is the identity. This is the core of the system prompt. Edit it to change how the agent thinks and speaks.
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ addHistoryToArchive,
4
+ createExportArchive,
5
+ extractArchive,
6
+ readManifest
7
+ } from "./chunk-AW7P4EVV.js";
8
+ import "./chunk-EBGCNDMM.js";
9
+ import "./chunk-K3NQKI34.js";
10
+ export {
11
+ addHistoryToArchive,
12
+ createExportArchive,
13
+ extractArchive,
14
+ readManifest
15
+ };
@@ -1,4 +1,8 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ getClient,
4
+ urlOf
5
+ } from "./chunk-4RQBJWQX.js";
2
6
  import {
3
7
  resolveMindName
4
8
  } from "./chunk-NAOW2CLO.js";
@@ -7,12 +11,8 @@ import {
7
11
  } from "./chunk-D424ZQGI.js";
8
12
  import {
9
13
  daemonFetch
10
- } from "./chunk-OJQ47SCA.js";
11
- import "./chunk-M77QBTEH.js";
12
- import {
13
- getClient,
14
- urlOf
15
- } from "./chunk-4RQBJWQX.js";
14
+ } from "./chunk-WC6ZHVRL.js";
15
+ import "./chunk-EBGCNDMM.js";
16
16
  import "./chunk-K3NQKI34.js";
17
17
 
18
18
  // src/commands/channel.ts
@@ -34,6 +34,12 @@ async function run(args) {
34
34
  case "typing":
35
35
  await typingChannel(args.slice(1));
36
36
  break;
37
+ case "invite":
38
+ await inviteChannel(args.slice(1));
39
+ break;
40
+ case "pending":
41
+ await pendingChannel(args.slice(1));
42
+ break;
37
43
  case "--help":
38
44
  case "-h":
39
45
  case void 0:
@@ -50,7 +56,9 @@ function printUsage() {
50
56
  volute channel list [<platform>] [--mind <name>]
51
57
  volute channel users <platform> [--mind <name>]
52
58
  volute channel create <platform> --participants user1,user2 [--name "..."] [--mind <name>]
53
- volute channel typing <channel-uri> [--mind <name>]`);
59
+ volute channel typing <channel-uri> [--mind <name>]
60
+ volute channel invite <channel-name> <username>
61
+ volute channel pending [--mind <name>]`);
54
62
  }
55
63
  async function readChannel(args) {
56
64
  const { positional, flags } = parseArgs(args, {
@@ -194,6 +202,51 @@ async function typingChannel(args) {
194
202
  process.exit(1);
195
203
  }
196
204
  }
205
+ async function inviteChannel(args) {
206
+ const { positional } = parseArgs(args, {});
207
+ const channelName = positional[0];
208
+ const username = positional[1];
209
+ if (!channelName || !username) {
210
+ console.error("Usage: volute channel invite <channel-name> <username>");
211
+ process.exit(1);
212
+ }
213
+ const res = await daemonFetch(`/api/volute/channels/${encodeURIComponent(channelName)}/invite`, {
214
+ method: "POST",
215
+ headers: { "Content-Type": "application/json" },
216
+ body: JSON.stringify({ username })
217
+ });
218
+ if (!res.ok) {
219
+ const body = await res.json().catch(() => ({}));
220
+ console.error(body.error ?? `Server responded with ${res.status}`);
221
+ process.exit(1);
222
+ }
223
+ console.log(`Invited ${username} to #${channelName}`);
224
+ }
225
+ async function pendingChannel(args) {
226
+ const { flags } = parseArgs(args, {
227
+ mind: { type: "string" }
228
+ });
229
+ const mindName = resolveMindName(flags);
230
+ const res = await daemonFetch(`/api/minds/${encodeURIComponent(mindName)}/delivery/pending`);
231
+ if (!res.ok) {
232
+ const body = await res.json().catch(() => ({}));
233
+ console.error(body.error ?? `Server responded with ${res.status}`);
234
+ process.exit(1);
235
+ }
236
+ const pending = await res.json();
237
+ if (pending.length === 0) {
238
+ console.log("No pending messages.");
239
+ return;
240
+ }
241
+ for (const entry of pending) {
242
+ console.log(
243
+ `${(entry.channel ?? "unknown").padEnd(30)} ${String(entry.count).padEnd(6)} ${entry.sender ?? "unknown"}`
244
+ );
245
+ console.log(` First seen: ${entry.firstSeen}`);
246
+ console.log(` Preview: ${entry.preview}`);
247
+ console.log();
248
+ }
249
+ }
197
250
  function parseUri(uri) {
198
251
  const colonIdx = uri.indexOf(":");
199
252
  if (colonIdx === -1) {