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
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ schema_exports
4
+ } from "./chunk-VQWDC6UK.js";
5
+ import {
6
+ voluteHome
7
+ } from "./chunk-EBGCNDMM.js";
8
+
9
+ // src/lib/db.ts
10
+ import { chmodSync, existsSync } from "fs";
11
+ import { dirname, resolve } from "path";
12
+ import { fileURLToPath } from "url";
13
+ import { drizzle } from "drizzle-orm/libsql";
14
+ import { migrate } from "drizzle-orm/libsql/migrator";
15
+ var __dirname = dirname(fileURLToPath(import.meta.url));
16
+ var migrationsFolder = existsSync(resolve(__dirname, "../drizzle")) ? resolve(__dirname, "../drizzle") : resolve(__dirname, "../../drizzle");
17
+ var db = null;
18
+ async function getDb() {
19
+ if (db) return db;
20
+ const dbPath = process.env.VOLUTE_DB_PATH || resolve(voluteHome(), "volute.db");
21
+ db = drizzle({ connection: { url: `file:${dbPath}` }, schema: schema_exports });
22
+ await migrate(db, { migrationsFolder });
23
+ try {
24
+ chmodSync(dbPath, 384);
25
+ } catch (err) {
26
+ console.error(
27
+ `[volute] WARNING: Failed to restrict database file permissions on ${dbPath}:`,
28
+ err
29
+ );
30
+ }
31
+ return db;
32
+ }
33
+
34
+ export {
35
+ getDb
36
+ };
package/dist/cli.js CHANGED
@@ -9,76 +9,79 @@ if (!process.env.VOLUTE_HOME) {
9
9
  var command = process.argv[2];
10
10
  var args = process.argv.slice(3);
11
11
  if (command === "--version" || command === "-v") {
12
- const { default: pkg } = await import("./package-OKLFO7UY.js");
12
+ const { default: pkg } = await import("./package-MYE2ZJLV.js");
13
13
  console.log(pkg.version);
14
14
  process.exit(0);
15
15
  }
16
16
  switch (command) {
17
17
  case "mind":
18
- await import("./mind-OJN6RBZW.js").then((m) => m.run(args));
18
+ await import("./mind-PQ5NCPSU.js").then((m) => m.run(args));
19
19
  break;
20
20
  case "send":
21
- await import("./send-BNDTLUPM.js").then((m) => m.run(args));
21
+ await import("./send-KVIZIGCE.js").then((m) => m.run(args));
22
22
  break;
23
23
  case "history":
24
- await import("./history-YUEKTJ2N.js").then((m) => m.run(args));
24
+ await import("./history-WNK3DFUM.js").then((m) => m.run(args));
25
25
  break;
26
26
  case "variant":
27
- await import("./variant-X5QFG6KK.js").then((m) => m.run(args));
27
+ await import("./variant-63ZWO2W7.js").then((m) => m.run(args));
28
28
  break;
29
29
  case "connector":
30
- await import("./connector-3ELFMI2R.js").then((m) => m.run(args));
30
+ await import("./connector-JBVNZ7VK.js").then((m) => m.run(args));
31
31
  break;
32
32
  case "channel":
33
- await import("./channel-SLURLIRV.js").then((m) => m.run(args));
33
+ await import("./channel-PUQKGSQM.js").then((m) => m.run(args));
34
34
  break;
35
35
  case "schedule":
36
- await import("./schedule-AGYLDMNS.js").then((m) => m.run(args));
36
+ await import("./schedule-LMX7GAQZ.js").then((m) => m.run(args));
37
37
  break;
38
38
  case "skill":
39
- await import("./skill-2Y42P4JY.js").then((m) => m.run(args));
39
+ await import("./skill-BCVNI6TV.js").then((m) => m.run(args));
40
+ break;
41
+ case "shared":
42
+ await import("./shared-KO35ZM44.js").then((m) => m.run(args));
40
43
  break;
41
44
  case "env":
42
- await import("./env-6IDWGBUH.js").then((m) => m.run(args));
45
+ await import("./env-A3LMO777.js").then((m) => m.run(args));
43
46
  break;
44
47
  case "up":
45
- await import("./up-7B3BWF2U.js").then((m) => m.run(args));
48
+ await import("./up-WG65SWJU.js").then((m) => m.run(args));
46
49
  break;
47
50
  case "down":
48
- await import("./down-A56B5JLK.js").then((m) => m.run(args));
51
+ await import("./down-ZY35KMHR.js").then((m) => m.run(args));
49
52
  break;
50
53
  case "restart":
51
- await import("./daemon-restart-2HVTHZAT.js").then((m) => m.run(args));
54
+ await import("./daemon-restart-JMZM3QY4.js").then((m) => m.run(args));
52
55
  break;
53
56
  case "setup":
54
- await import("./setup-DJKIZKGW.js").then((m) => m.run(args));
57
+ await import("./setup-OH3PJUJO.js").then((m) => m.run(args));
55
58
  break;
56
59
  case "service":
57
- await import("./service-U7MZ2H7F.js").then((m) => m.run(args));
60
+ await import("./service-LUR7WDO7.js").then((m) => m.run(args));
58
61
  break;
59
62
  case "update":
60
- await import("./update-YAGN5ODG.js").then((m) => m.run(args));
63
+ await import("./update-FJIHDJKM.js").then((m) => m.run(args));
61
64
  break;
62
65
  case "status":
63
- await import("./status-VSFZYX7S.js").then((m) => m.run(args));
66
+ await import("./status-4ESFLGH4.js").then((m) => m.run(args));
64
67
  break;
65
68
  case "seed":
66
- await import("./seed-AP4Q7RZ7.js").then((m) => m.run(args));
69
+ await import("./seed-J43YDKXG.js").then((m) => m.run(args));
67
70
  break;
68
71
  case "sprout":
69
- await import("./sprout-TJ3BHVOG.js").then((m) => m.run(args));
72
+ await import("./sprout-VBEX63LX.js").then((m) => m.run(args));
70
73
  break;
71
74
  case "pages":
72
- await import("./pages-6IV4VQTU.js").then((m) => m.run(args));
75
+ await import("./pages-AXCOSY3P.js").then((m) => m.run(args));
73
76
  break;
74
77
  case "register":
75
- await import("./register-LDE6LRXY.js").then((m) => m.run(args));
78
+ await import("./register-VSPCMHKX.js").then((m) => m.run(args));
76
79
  break;
77
80
  case "login":
78
- await import("./login-ORQDXLBM.js").then((m) => m.run(args));
81
+ await import("./login-HNH3EUQV.js").then((m) => m.run(args));
79
82
  break;
80
83
  case "logout":
81
- await import("./logout-XC5AUO5I.js").then((m) => m.run());
84
+ await import("./logout-I5CB5UZS.js").then((m) => m.run());
82
85
  break;
83
86
  case "--help":
84
87
  case "-h":
@@ -126,6 +129,11 @@ Commands:
126
129
  volute skill remove <name> Remove a shared skill
127
130
  volute skill uninstall <name> --mind Uninstall a skill from a mind
128
131
 
132
+ volute shared merge "<msg>" Merge shared changes to main
133
+ volute shared pull Pull latest shared changes
134
+ volute shared log Show shared repo history
135
+ volute shared status Show pending changes diff
136
+
129
137
  volute env <set|get|list|remove> Manage environment variables
130
138
 
131
139
  volute up [--port N] Start the daemon (default: 4200)
@@ -155,7 +163,7 @@ Options:
155
163
  --version, -v Show version number
156
164
  --help, -h Show this help message
157
165
 
158
- Mind-scoped commands (send, history, variant, connector, schedule, channel, skill, pages)
166
+ Mind-scoped commands (send, history, variant, connector, schedule, channel, skill, shared, pages)
159
167
  use --mind <name> or VOLUTE_MIND env var to identify the mind.`);
160
168
  break;
161
169
  default:
@@ -164,7 +172,7 @@ Run 'volute --help' for usage.`);
164
172
  process.exit(1);
165
173
  }
166
174
  if (command !== "update") {
167
- import("./update-check-APLTH4IN.js").then((m) => m.checkForUpdate()).then((result) => {
175
+ import("./update-check-MWE5AH4U.js").then((m) => m.checkForUpdate()).then((result) => {
168
176
  if (result.updateAvailable) {
169
177
  console.error(`
170
178
  Update available: ${result.current} \u2192 ${result.latest}`);
@@ -2,6 +2,10 @@
2
2
  import {
3
3
  promptLine
4
4
  } from "./chunk-RVKR2R7F.js";
5
+ import {
6
+ getClient,
7
+ urlOf
8
+ } from "./chunk-4RQBJWQX.js";
5
9
  import {
6
10
  resolveMindName
7
11
  } from "./chunk-NAOW2CLO.js";
@@ -10,12 +14,8 @@ import {
10
14
  } from "./chunk-D424ZQGI.js";
11
15
  import {
12
16
  daemonFetch
13
- } from "./chunk-OJQ47SCA.js";
14
- import "./chunk-M77QBTEH.js";
15
- import {
16
- getClient,
17
- urlOf
18
- } from "./chunk-4RQBJWQX.js";
17
+ } from "./chunk-WC6ZHVRL.js";
18
+ import "./chunk-EBGCNDMM.js";
19
19
  import "./chunk-K3NQKI34.js";
20
20
 
21
21
  // src/commands/connector.ts
@@ -7,8 +7,8 @@ import {
7
7
  sendToMind,
8
8
  slugify,
9
9
  writeChannelEntry
10
- } from "../chunk-GK4E7LM7.js";
11
- import "../chunk-M77QBTEH.js";
10
+ } from "../chunk-RHEGSQFJ.js";
11
+ import "../chunk-EBGCNDMM.js";
12
12
  import "../chunk-K3NQKI34.js";
13
13
 
14
14
  // src/connectors/discord.ts
@@ -6,8 +6,8 @@ import {
6
6
  onShutdown,
7
7
  sendToMind,
8
8
  writeChannelEntry
9
- } from "../chunk-GK4E7LM7.js";
10
- import "../chunk-M77QBTEH.js";
9
+ } from "../chunk-RHEGSQFJ.js";
10
+ import "../chunk-EBGCNDMM.js";
11
11
  import "../chunk-K3NQKI34.js";
12
12
 
13
13
  // src/connectors/slack.ts
@@ -5,8 +5,8 @@ import {
5
5
  loadFollowedChannels,
6
6
  sendToMind,
7
7
  writeChannelEntry
8
- } from "../chunk-GK4E7LM7.js";
9
- import "../chunk-M77QBTEH.js";
8
+ } from "../chunk-RHEGSQFJ.js";
9
+ import "../chunk-EBGCNDMM.js";
10
10
  import "../chunk-K3NQKI34.js";
11
11
 
12
12
  // src/connectors/telegram.ts
@@ -7,21 +7,23 @@ import "./chunk-K3NQKI34.js";
7
7
  // src/commands/create.ts
8
8
  async function run(args) {
9
9
  const { positional, flags } = parseArgs(args, {
10
- template: { type: "string" }
10
+ template: { type: "string" },
11
+ skills: { type: "string" }
11
12
  });
12
13
  const name = positional[0];
13
14
  const template = flags.template ?? "claude";
14
15
  if (!name) {
15
- console.error("Usage: volute mind create <name> [--template <name>]");
16
+ console.error("Usage: volute mind create <name> [--template <name>] [--skills <list|none>]");
16
17
  process.exit(1);
17
18
  }
18
- const { daemonFetch } = await import("./daemon-client-ODKDUYDE.js");
19
+ const skills = flags.skills === "none" ? [] : flags.skills ? flags.skills.split(",") : void 0;
20
+ const { daemonFetch } = await import("./daemon-client-ITWUCNFO.js");
19
21
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
20
22
  const client = getClient();
21
23
  const res = await daemonFetch(urlOf(client.api.minds.$url()), {
22
24
  method: "POST",
23
25
  headers: { "Content-Type": "application/json" },
24
- body: JSON.stringify({ name, template })
26
+ body: JSON.stringify({ name, template, skills })
25
27
  });
26
28
  const data = await res.json();
27
29
  if (!res.ok) {
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  daemonFetch
4
- } from "./chunk-OJQ47SCA.js";
5
- import "./chunk-M77QBTEH.js";
4
+ } from "./chunk-WC6ZHVRL.js";
5
+ import "./chunk-EBGCNDMM.js";
6
6
  import "./chunk-K3NQKI34.js";
7
7
  export {
8
8
  daemonFetch
@@ -1,21 +1,21 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- run
4
- } from "./chunk-6DVBMLVN.js";
5
2
  import {
6
3
  stopDaemon
7
- } from "./chunk-QJIIHU32.js";
4
+ } from "./chunk-7NO7EV5Z.js";
5
+ import {
6
+ run
7
+ } from "./chunk-VE4D3GOP.js";
8
8
  import {
9
9
  getServiceMode,
10
10
  modeLabel,
11
11
  pollHealth,
12
12
  readDaemonConfig,
13
13
  restartService
14
- } from "./chunk-6BDNWYKG.js";
15
- import "./chunk-2Y77MCFG.js";
16
- import "./chunk-ZCEYUUID.js";
14
+ } from "./chunk-32VR2EOH.js";
17
15
  import "./chunk-D424ZQGI.js";
18
- import "./chunk-M77QBTEH.js";
16
+ import "./chunk-DYZGP3EW.js";
17
+ import "./chunk-OGXOMR65.js";
18
+ import "./chunk-EBGCNDMM.js";
19
19
  import "./chunk-K3NQKI34.js";
20
20
 
21
21
  // src/commands/daemon-restart.ts