volute 0.1.0 → 0.2.1

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 (66) hide show
  1. package/README.md +1 -2
  2. package/dist/agent-manager-SSJUZWOV.js +13 -0
  3. package/dist/{channel-Q642YUZE.js → channel-2WJRM7PE.js} +2 -2
  4. package/dist/{chunk-H5XQARAP.js → chunk-4YXYAMFT.js} +3 -3
  5. package/dist/{chunk-5YW4B7CG.js → chunk-6UCG6MIX.js} +72 -23
  6. package/dist/{chunk-A5ZJEMHT.js → chunk-KFNNHQK7.js} +4 -4
  7. package/dist/chunk-L3BQEZ4Z.js +271 -0
  8. package/dist/{chunk-N4QN44LC.js → chunk-MY74SUOL.js} +29 -22
  9. package/dist/{chunk-KSMIWOCN.js → chunk-N4YNKR3Q.js} +6 -0
  10. package/dist/cli.js +23 -19
  11. package/dist/{connect-LW6G23AV.js → connect-X5V5IMRW.js} +3 -3
  12. package/dist/connectors/discord.js +9 -2
  13. package/dist/{create-3K6O2SDC.js → create-23AM7H5B.js} +1 -1
  14. package/dist/{daemon-client-ZTHW7ROS.js → daemon-client-VN24HM5T.js} +2 -2
  15. package/dist/daemon.js +394 -436
  16. package/dist/{delete-JNGY7ZFH.js → delete-GDMSOW3U.js} +2 -2
  17. package/dist/{disconnect-ACVTKTRE.js → disconnect-5JWFZ6RV.js} +2 -2
  18. package/dist/{down-FYCUYC5H.js → down-WTF73FE7.js} +5 -4
  19. package/dist/{env-7SLRN3MG.js → env-YKUJOFHE.js} +12 -5
  20. package/dist/{fork-BB3DZ426.js → fork-GRSVMBKI.js} +39 -32
  21. package/dist/history-7WVVKMUY.js +46 -0
  22. package/dist/{import-W2AMTEV5.js → import-42DOLBDT.js} +1 -1
  23. package/dist/{logs-BUHRIQ2L.js → logs-SYRQOL6B.js} +1 -1
  24. package/dist/{merge-446QTE7Q.js → merge-CSAVLSLY.js} +33 -36
  25. package/dist/{schedule-KKSOVUDF.js → schedule-J37XQM6E.js} +2 -2
  26. package/dist/{send-WQSVSRDD.js → send-PLOYEYER.js} +7 -5
  27. package/dist/{start-LKMWS6ZE.js → start-AG7QLULK.js} +2 -2
  28. package/dist/{status-CIEKUI3V.js → status-GCNU4M3K.js} +9 -2
  29. package/dist/{stop-YTOAGYE4.js → stop-IL5Q6NER.js} +2 -2
  30. package/dist/{up-AJJ4GCXY.js → up-ZC6G6K4K.js} +21 -37
  31. package/dist/{upgrade-JACA6YMO.js → upgrade-DD5TNJWU.js} +3 -5
  32. package/dist/{variants-HPY4DEWU.js → variants-QQIEKT6M.js} +2 -2
  33. package/drizzle/0000_flaky_mariko_yashida.sql +34 -0
  34. package/drizzle/0001_careless_warpath.sql +12 -0
  35. package/drizzle/meta/0000_snapshot.json +227 -0
  36. package/drizzle/meta/0001_snapshot.json +298 -0
  37. package/drizzle/meta/_journal.json +20 -0
  38. package/package.json +2 -1
  39. package/templates/_base/.init/.config/hooks/startup-context.sh +28 -0
  40. package/templates/_base/_skills/memory/SKILL.md +56 -13
  41. package/templates/_base/_skills/volute-agent/SKILL.md +27 -3
  42. package/templates/_base/home/VOLUTE.md +25 -0
  43. package/templates/_base/src/lib/format-prefix.ts +24 -0
  44. package/templates/_base/src/lib/sessions.ts +71 -0
  45. package/templates/_base/src/lib/startup.ts +132 -0
  46. package/templates/_base/src/lib/types.ts +3 -0
  47. package/templates/_base/src/lib/volute-server.ts +18 -2
  48. package/templates/agent-sdk/.init/.claude/settings.json +14 -0
  49. package/templates/agent-sdk/.init/.config/sessions.json +4 -0
  50. package/templates/agent-sdk/.init/CLAUDE.md +3 -2
  51. package/templates/agent-sdk/package.json.tmpl +1 -1
  52. package/templates/agent-sdk/src/agent.ts +101 -0
  53. package/templates/agent-sdk/src/lib/agent-sessions.ts +180 -0
  54. package/templates/agent-sdk/src/server.ts +33 -129
  55. package/templates/agent-sdk/volute-template.json +1 -1
  56. package/templates/pi/.init/.config/sessions.json +1 -0
  57. package/templates/pi/.init/AGENTS.md +2 -1
  58. package/templates/pi/src/agent.ts +61 -0
  59. package/templates/pi/src/lib/agent-sessions.ts +188 -0
  60. package/templates/pi/src/server.ts +28 -102
  61. package/templates/pi/volute-template.json +1 -1
  62. package/templates/agent-sdk/src/lib/agent.ts +0 -199
  63. package/templates/pi/src/lib/agent.ts +0 -205
  64. /package/templates/_base/.init/memory/{.gitkeep → journal/.gitkeep} +0 -0
  65. /package/templates/_base/{volute.json.tmpl → home/.config/volute.json.tmpl} +0 -0
  66. /package/templates/pi/{volute.json.tmpl → home/.config/volute.json.tmpl} +0 -0
package/dist/cli.js CHANGED
@@ -5,61 +5,64 @@ var command = process.argv[2];
5
5
  var args = process.argv.slice(3);
6
6
  switch (command) {
7
7
  case "create":
8
- await import("./create-3K6O2SDC.js").then((m) => m.run(args));
8
+ await import("./create-23AM7H5B.js").then((m) => m.run(args));
9
9
  break;
10
10
  case "start":
11
- await import("./start-LKMWS6ZE.js").then((m) => m.run(args));
11
+ await import("./start-AG7QLULK.js").then((m) => m.run(args));
12
12
  break;
13
13
  case "stop":
14
- await import("./stop-YTOAGYE4.js").then((m) => m.run(args));
14
+ await import("./stop-IL5Q6NER.js").then((m) => m.run(args));
15
15
  break;
16
16
  case "logs":
17
- await import("./logs-BUHRIQ2L.js").then((m) => m.run(args));
17
+ await import("./logs-SYRQOL6B.js").then((m) => m.run(args));
18
18
  break;
19
19
  case "status":
20
- await import("./status-CIEKUI3V.js").then((m) => m.run(args));
20
+ await import("./status-GCNU4M3K.js").then((m) => m.run(args));
21
21
  break;
22
22
  case "fork":
23
- await import("./fork-BB3DZ426.js").then((m) => m.run(args));
23
+ await import("./fork-GRSVMBKI.js").then((m) => m.run(args));
24
24
  break;
25
25
  case "variants":
26
- await import("./variants-HPY4DEWU.js").then((m) => m.run(args));
26
+ await import("./variants-QQIEKT6M.js").then((m) => m.run(args));
27
27
  break;
28
28
  case "send":
29
- await import("./send-WQSVSRDD.js").then((m) => m.run(args));
29
+ await import("./send-PLOYEYER.js").then((m) => m.run(args));
30
30
  break;
31
31
  case "merge":
32
- await import("./merge-446QTE7Q.js").then((m) => m.run(args));
32
+ await import("./merge-CSAVLSLY.js").then((m) => m.run(args));
33
33
  break;
34
34
  case "import":
35
- await import("./import-W2AMTEV5.js").then((m) => m.run(args));
35
+ await import("./import-42DOLBDT.js").then((m) => m.run(args));
36
36
  break;
37
37
  case "delete":
38
- await import("./delete-JNGY7ZFH.js").then((m) => m.run(args));
38
+ await import("./delete-GDMSOW3U.js").then((m) => m.run(args));
39
39
  break;
40
40
  case "env":
41
- await import("./env-7SLRN3MG.js").then((m) => m.run(args));
41
+ await import("./env-YKUJOFHE.js").then((m) => m.run(args));
42
42
  break;
43
43
  case "connect":
44
- await import("./connect-LW6G23AV.js").then((m) => m.run(args));
44
+ await import("./connect-X5V5IMRW.js").then((m) => m.run(args));
45
45
  break;
46
46
  case "disconnect":
47
- await import("./disconnect-ACVTKTRE.js").then((m) => m.run(args));
47
+ await import("./disconnect-5JWFZ6RV.js").then((m) => m.run(args));
48
48
  break;
49
49
  case "channel":
50
- await import("./channel-Q642YUZE.js").then((m) => m.run(args));
50
+ await import("./channel-2WJRM7PE.js").then((m) => m.run(args));
51
51
  break;
52
52
  case "upgrade":
53
- await import("./upgrade-JACA6YMO.js").then((m) => m.run(args));
53
+ await import("./upgrade-DD5TNJWU.js").then((m) => m.run(args));
54
54
  break;
55
55
  case "up":
56
- await import("./up-AJJ4GCXY.js").then((m) => m.run(args));
56
+ await import("./up-ZC6G6K4K.js").then((m) => m.run(args));
57
57
  break;
58
58
  case "down":
59
- await import("./down-FYCUYC5H.js").then((m) => m.run(args));
59
+ await import("./down-WTF73FE7.js").then((m) => m.run(args));
60
60
  break;
61
61
  case "schedule":
62
- await import("./schedule-KKSOVUDF.js").then((m) => m.run(args));
62
+ await import("./schedule-J37XQM6E.js").then((m) => m.run(args));
63
+ break;
64
+ case "history":
65
+ await import("./history-7WVVKMUY.js").then((m) => m.run(args));
63
66
  break;
64
67
  default:
65
68
  console.log(`volute \u2014 create and manage AI agents
@@ -83,6 +86,7 @@ Commands:
83
86
  volute schedule list <agent> List schedules for an agent
84
87
  volute schedule add <agent> ... Add a cron schedule
85
88
  volute schedule remove <agent> ... Remove a schedule
89
+ volute history [<agent>] View message history
86
90
  volute up [--port N] Start the daemon (default: 4200)
87
91
  volute down Stop the daemon
88
92
  volute upgrade <name> Upgrade agent to latest template
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  loadMergedEnv
4
- } from "./chunk-A5ZJEMHT.js";
4
+ } from "./chunk-KFNNHQK7.js";
5
5
  import {
6
6
  daemonFetch
7
- } from "./chunk-H5XQARAP.js";
7
+ } from "./chunk-4YXYAMFT.js";
8
8
  import {
9
9
  parseArgs
10
10
  } from "./chunk-D424ZQGI.js";
11
11
  import {
12
12
  resolveAgent
13
- } from "./chunk-5YW4B7CG.js";
13
+ } from "./chunk-6UCG6MIX.js";
14
14
 
15
15
  // src/commands/connect.ts
16
16
  async function run(args) {
@@ -22,7 +22,9 @@ if (!token) {
22
22
  process.exit(1);
23
23
  }
24
24
  var guildId = process.env.DISCORD_GUILD_ID;
25
- var baseUrl = `http://localhost:${agentPort}`;
25
+ var daemonUrl = process.env.VOLUTE_DAEMON_URL;
26
+ var daemonToken = process.env.VOLUTE_DAEMON_TOKEN;
27
+ var baseUrl = daemonUrl ? `${daemonUrl}/api/agents/${encodeURIComponent(agentName)}` : `http://localhost:${agentPort}`;
26
28
  var client = new Client({
27
29
  intents: [
28
30
  GatewayIntentBits.Guilds,
@@ -165,9 +167,14 @@ async function handleAgentRequest(message, content) {
165
167
  const isDM = !message.guild;
166
168
  const channelName = !isDM && "name" in message.channel ? message.channel.name : null;
167
169
  try {
170
+ const headers = { "Content-Type": "application/json" };
171
+ if (daemonUrl && daemonToken) {
172
+ headers.Authorization = `Bearer ${daemonToken}`;
173
+ headers.Origin = daemonUrl;
174
+ }
168
175
  const res = await fetch(`${baseUrl}/message`, {
169
176
  method: "POST",
170
- headers: { "Content-Type": "application/json" },
177
+ headers,
171
178
  body: JSON.stringify({
172
179
  content,
173
180
  channel: channelKey,
@@ -17,7 +17,7 @@ import {
17
17
  agentDir,
18
18
  ensureVoluteHome,
19
19
  nextPort
20
- } from "./chunk-5YW4B7CG.js";
20
+ } from "./chunk-6UCG6MIX.js";
21
21
 
22
22
  // src/commands/create.ts
23
23
  import { existsSync, rmSync } from "fs";
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  daemonFetch,
4
4
  getDaemonUrl
5
- } from "./chunk-H5XQARAP.js";
6
- import "./chunk-5YW4B7CG.js";
5
+ } from "./chunk-4YXYAMFT.js";
6
+ import "./chunk-6UCG6MIX.js";
7
7
  export {
8
8
  daemonFetch,
9
9
  getDaemonUrl