volute 0.13.2 → 0.14.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 (94) hide show
  1. package/dist/{channel-JZJJRRWT.js → channel-SLURLIRV.js} +28 -28
  2. package/dist/{chunk-KRJ6KCBI.js → chunk-2Y77MCFG.js} +3 -3
  3. package/dist/{chunk-AA5TDLXB.js → chunk-3FC42ZBM.js} +24 -24
  4. package/dist/{chunk-YYUSXARD.js → chunk-6BDNWYKG.js} +2 -2
  5. package/dist/{chunk-KN4WBLH2.js → chunk-BEFIBW5B.js} +2 -2
  6. package/dist/{chunk-FE5O5RSL.js → chunk-GSPWIM5E.js} +25 -25
  7. package/dist/{chunk-QRRXD2V7.js → chunk-J52CJCVI.js} +71 -69
  8. package/dist/{chunk-LGSW7T7K.js → chunk-M77QBTEH.js} +60 -57
  9. package/dist/{chunk-KXOFPDO6.js → chunk-MVSXRMJJ.js} +1 -1
  10. package/dist/chunk-NAOW2CLO.js +15 -0
  11. package/dist/{chunk-VQIJUR43.js → chunk-OJQ47SCA.js} +1 -1
  12. package/dist/{chunk-O4BN3ZIY.js → chunk-OYSZNX5I.js} +7 -7
  13. package/dist/{chunk-AOSGW3MX.js → chunk-PDLAZJGC.js} +28 -28
  14. package/dist/{chunk-XUA3JUFK.js → chunk-PO5Q2AYN.js} +2 -2
  15. package/dist/{chunk-6BQHEIDO.js → chunk-QJIIHU32.js} +2 -2
  16. package/dist/{chunk-NXT67PPK.js → chunk-ZCEYUUID.js} +19 -19
  17. package/dist/cli.js +42 -42
  18. package/dist/{connector-WFT5KK67.js → connector-JFAHYFQX.js} +21 -21
  19. package/dist/connectors/discord.js +7 -7
  20. package/dist/connectors/slack.js +7 -7
  21. package/dist/connectors/telegram.js +9 -9
  22. package/dist/{create-HT47ZH5T.js → create-ZWHCRT5F.js} +7 -7
  23. package/dist/{daemon-client-DEF7IFEJ.js → daemon-client-ODKDUYDE.js} +2 -2
  24. package/dist/{daemon-restart-P3FEE3QJ.js → daemon-restart-IZGEF4NA.js} +6 -6
  25. package/dist/daemon.js +2313 -1997
  26. package/dist/{delete-YG3RVURA.js → delete-6G6WEX4F.js} +8 -8
  27. package/dist/down-A56B5JLK.js +14 -0
  28. package/dist/{env-BQYYF4YL.js → env-6LXDUZDA.js} +25 -25
  29. package/dist/{history-I4KIKIUX.js → history-LKCJJMUV.js} +7 -7
  30. package/dist/{import-UHCK6PRC.js → import-EDGRLIGO.js} +3 -3
  31. package/dist/{logs-2DWFES6A.js → logs-GYOR3L2L.js} +8 -8
  32. package/dist/mind-OJN6RBZW.js +79 -0
  33. package/dist/mind-manager-PN5SUDJ4.js +15 -0
  34. package/dist/{package-MMTPOMUN.js → package-I7Z6G44Y.js} +4 -4
  35. package/dist/{restart-6PE3GWYZ.js → restart-YFAWFS5T.js} +9 -9
  36. package/dist/{schedule-5AYTQM3N.js → schedule-AGYLDMNS.js} +17 -17
  37. package/dist/{seed-3QQVFMBU.js → seed-AP4Q7RZ7.js} +9 -9
  38. package/dist/{send-FPFW7J5Q.js → send-SV4K2TDE.js} +32 -24
  39. package/dist/{service-5X5EKPVM.js → service-U7MZ2H7F.js} +4 -4
  40. package/dist/{setup-5NXV25ZS.js → setup-DJKIZKGW.js} +21 -16
  41. package/dist/{sprout-VOUJ4Y3I.js → sprout-TJ3BHVOG.js} +25 -18
  42. package/dist/{start-ICPSQ2ZK.js → start-3YYRXBKP.js} +7 -7
  43. package/dist/{status-JBT7ENQN.js → status-VSFZYX7S.js} +14 -14
  44. package/dist/{stop-IXJGAG4T.js → stop-AA5K5LYG.js} +9 -9
  45. package/dist/{up-ROC7LJ7G.js → up-C4MV6EXV.js} +5 -5
  46. package/dist/{update-GU6JYDSN.js → update-YAGN5ODG.js} +5 -5
  47. package/dist/{update-check-MUPZYTW4.js → update-check-APLTH4IN.js} +2 -2
  48. package/dist/{upgrade-275LKIEG.js → upgrade-KXZCQSZN.js} +8 -10
  49. package/dist/{variant-RE45F2IY.js → variant-X5QFG6KK.js} +30 -30
  50. package/dist/web-assets/assets/index-CeFLp8DZ.js +307 -0
  51. package/dist/web-assets/index.html +1 -1
  52. package/drizzle/0005_rename_agents_to_minds.sql +11 -0
  53. package/drizzle/meta/0005_snapshot.json +410 -0
  54. package/drizzle/meta/_journal.json +7 -0
  55. package/package.json +4 -4
  56. package/templates/_base/.init/.config/scripts/session-reader.ts +1 -1
  57. package/templates/_base/.init/SOUL.md +1 -1
  58. package/templates/_base/_skills/memory/SKILL.md +1 -1
  59. package/templates/_base/_skills/orientation/SKILL.md +6 -6
  60. package/templates/_base/_skills/sessions/SKILL.md +1 -1
  61. package/templates/_base/_skills/{volute-agent → volute-mind}/SKILL.md +21 -21
  62. package/templates/_base/home/VOLUTE.md +7 -7
  63. package/templates/_base/src/lib/auto-commit.ts +1 -1
  64. package/templates/_base/src/lib/auto-reply.ts +1 -1
  65. package/templates/_base/src/lib/daemon-client.ts +8 -8
  66. package/templates/_base/src/lib/router.ts +6 -6
  67. package/templates/_base/src/lib/routing.ts +9 -6
  68. package/templates/_base/src/lib/startup.ts +1 -1
  69. package/templates/_base/src/lib/volute-server.ts +1 -1
  70. package/templates/{agent-sdk → claude}/.init/CLAUDE.md +3 -3
  71. package/templates/{agent-sdk → claude}/src/agent.ts +10 -10
  72. package/templates/{agent-sdk → claude}/src/lib/hooks/pre-compact.ts +2 -2
  73. package/templates/{agent-sdk → claude}/src/lib/session-store.ts +2 -2
  74. package/templates/{agent-sdk → claude}/src/lib/stream-consumer.ts +1 -1
  75. package/templates/{agent-sdk → claude}/src/server.ts +4 -4
  76. package/templates/pi/.init/{AGENTS.md → MINDS.md} +3 -3
  77. package/templates/pi/home/.config/config.json.tmpl +1 -1
  78. package/templates/pi/src/agent.ts +12 -12
  79. package/templates/pi/src/lib/event-handler.ts +39 -4
  80. package/templates/pi/src/server.ts +3 -3
  81. package/dist/agent-IUSETOXJ.js +0 -79
  82. package/dist/agent-manager-4O4AC2S6.js +0 -15
  83. package/dist/chunk-AZEL2IEK.js +0 -15
  84. package/dist/down-36YCOZ7V.js +0 -14
  85. package/dist/web-assets/assets/index-TqXd1QOX.js +0 -307
  86. /package/templates/{agent-sdk → claude}/.init/.claude/settings.json +0 -0
  87. /package/templates/{agent-sdk → claude}/.init/.config/routes.json +0 -0
  88. /package/templates/{agent-sdk → claude}/package.json.tmpl +0 -0
  89. /package/templates/{agent-sdk → claude}/src/lib/content.ts +0 -0
  90. /package/templates/{agent-sdk → claude}/src/lib/hooks/auto-commit.ts +0 -0
  91. /package/templates/{agent-sdk → claude}/src/lib/hooks/identity-reload.ts +0 -0
  92. /package/templates/{agent-sdk → claude}/src/lib/hooks/session-context.ts +0 -0
  93. /package/templates/{agent-sdk → claude}/src/lib/message-channel.ts +0 -0
  94. /package/templates/{agent-sdk → claude}/volute-template.json +0 -0
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- resolveAgentName
4
- } from "./chunk-AZEL2IEK.js";
3
+ resolveMindName
4
+ } from "./chunk-NAOW2CLO.js";
5
5
  import {
6
6
  parseArgs
7
7
  } from "./chunk-D424ZQGI.js";
@@ -12,22 +12,22 @@ async function run(args) {
12
12
  const { positional, flags } = parseArgs(args, {
13
13
  force: { type: "boolean" }
14
14
  });
15
- const name = resolveAgentName({ agent: positional[0] });
16
- const { daemonFetch } = await import("./daemon-client-DEF7IFEJ.js");
15
+ const name = resolveMindName({ mind: positional[0] });
16
+ const { daemonFetch } = await import("./daemon-client-ODKDUYDE.js");
17
17
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
18
18
  const client = getClient();
19
- const url = urlOf(client.api.agents[":name"].$url({ param: { name } })) + (flags.force ? "?force=true" : "");
19
+ const url = urlOf(client.api.minds[":name"].$url({ param: { name } })) + (flags.force ? "?force=true" : "");
20
20
  const res = await daemonFetch(url, { method: "DELETE" });
21
21
  const data = await res.json();
22
22
  if (!res.ok) {
23
- console.error(data.error ?? "Failed to delete agent");
23
+ console.error(data.error ?? "Failed to delete mind");
24
24
  process.exit(1);
25
25
  }
26
26
  console.log(`Removed ${name}.`);
27
27
  if (flags.force) {
28
- console.log("Deleted agent directory.");
28
+ console.log("Deleted mind directory.");
29
29
  } else {
30
- console.log("Use --force to also delete the agent directory.");
30
+ console.log("Use --force to also delete the mind directory.");
31
31
  }
32
32
  }
33
33
  export {
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ run,
4
+ stopDaemon
5
+ } from "./chunk-QJIIHU32.js";
6
+ import "./chunk-6BDNWYKG.js";
7
+ import "./chunk-2Y77MCFG.js";
8
+ import "./chunk-ZCEYUUID.js";
9
+ import "./chunk-M77QBTEH.js";
10
+ import "./chunk-K3NQKI34.js";
11
+ export {
12
+ run,
13
+ stopDaemon
14
+ };
@@ -4,8 +4,8 @@ import {
4
4
  } from "./chunk-D424ZQGI.js";
5
5
  import {
6
6
  daemonFetch
7
- } from "./chunk-VQIJUR43.js";
8
- import "./chunk-LGSW7T7K.js";
7
+ } from "./chunk-OJQ47SCA.js";
8
+ import "./chunk-M77QBTEH.js";
9
9
  import {
10
10
  getClient,
11
11
  urlOf
@@ -49,7 +49,7 @@ function maskValue(value) {
49
49
  }
50
50
  async function run(args) {
51
51
  const { positional, flags } = parseArgs(args, {
52
- agent: { type: "string" },
52
+ mind: { type: "string" },
53
53
  reveal: { type: "boolean" }
54
54
  });
55
55
  const subcommand = positional[0];
@@ -58,16 +58,16 @@ async function run(args) {
58
58
  case "set": {
59
59
  const key = positional[1];
60
60
  if (!key) {
61
- console.error("Usage: volute env set <KEY> [<VALUE>] [--agent <name>]");
61
+ console.error("Usage: volute env set <KEY> [<VALUE>] [--mind <name>]");
62
62
  process.exit(1);
63
63
  }
64
64
  const value = positional[2] ?? await promptValue(key);
65
65
  let res;
66
- if (flags.agent) {
66
+ if (flags.mind) {
67
67
  res = await daemonFetch(
68
68
  urlOf(
69
- client.api.agents[":name"].env[":key"].$url({
70
- param: { name: flags.agent, key }
69
+ client.api.minds[":name"].env[":key"].$url({
70
+ param: { name: flags.mind, key }
71
71
  })
72
72
  ),
73
73
  {
@@ -88,21 +88,21 @@ async function run(args) {
88
88
  console.error(body.error ?? `Failed to set ${key}`);
89
89
  process.exit(1);
90
90
  }
91
- const scope = flags.agent ? `agent:${flags.agent}` : "shared";
91
+ const scope = flags.mind ? `mind:${flags.mind}` : "shared";
92
92
  console.log(`Set ${key} [${scope}]`);
93
93
  break;
94
94
  }
95
95
  case "get": {
96
96
  const key = positional[1];
97
97
  if (!key) {
98
- console.error("Usage: volute env get <KEY> [--agent <name>]");
98
+ console.error("Usage: volute env get <KEY> [--mind <name>]");
99
99
  process.exit(1);
100
100
  }
101
- if (flags.agent) {
101
+ if (flags.mind) {
102
102
  const res = await daemonFetch(
103
103
  urlOf(
104
- client.api.agents[":name"].env[":key"].$url({
105
- param: { name: flags.agent, key }
104
+ client.api.minds[":name"].env[":key"].$url({
105
+ param: { name: flags.mind, key }
106
106
  })
107
107
  )
108
108
  );
@@ -130,9 +130,9 @@ async function run(args) {
130
130
  break;
131
131
  }
132
132
  case "list": {
133
- if (flags.agent) {
133
+ if (flags.mind) {
134
134
  const res = await daemonFetch(
135
- urlOf(client.api.agents[":name"].env.$url({ param: { name: flags.agent } }))
135
+ urlOf(client.api.minds[":name"].env.$url({ param: { name: flags.mind } }))
136
136
  );
137
137
  if (!res.ok) {
138
138
  const body = await res.json().catch(() => ({}));
@@ -140,14 +140,14 @@ async function run(args) {
140
140
  process.exit(1);
141
141
  }
142
142
  const data = await res.json();
143
- const allKeys = /* @__PURE__ */ new Set([...Object.keys(data.shared), ...Object.keys(data.agent)]);
143
+ const allKeys = /* @__PURE__ */ new Set([...Object.keys(data.shared), ...Object.keys(data.mind)]);
144
144
  if (allKeys.size === 0) {
145
145
  console.log("No environment variables set.");
146
146
  return;
147
147
  }
148
148
  for (const key of [...allKeys].sort()) {
149
- const scope = key in data.agent ? "agent" : "shared";
150
- const raw = key in data.agent ? data.agent[key] : data.shared[key];
149
+ const scope = key in data.mind ? "mind" : "shared";
150
+ const raw = key in data.mind ? data.mind[key] : data.shared[key];
151
151
  const value = flags.reveal ? raw : maskValue(raw);
152
152
  console.log(`${key}=${value} [${scope}]`);
153
153
  }
@@ -173,15 +173,15 @@ async function run(args) {
173
173
  case "remove": {
174
174
  const key = positional[1];
175
175
  if (!key) {
176
- console.error("Usage: volute env remove <KEY> [--agent <name>]");
176
+ console.error("Usage: volute env remove <KEY> [--mind <name>]");
177
177
  process.exit(1);
178
178
  }
179
179
  let res;
180
- if (flags.agent) {
180
+ if (flags.mind) {
181
181
  res = await daemonFetch(
182
182
  urlOf(
183
- client.api.agents[":name"].env[":key"].$url({
184
- param: { name: flags.agent, key }
183
+ client.api.minds[":name"].env[":key"].$url({
184
+ param: { name: flags.mind, key }
185
185
  })
186
186
  ),
187
187
  { method: "DELETE" }
@@ -192,21 +192,21 @@ async function run(args) {
192
192
  });
193
193
  }
194
194
  if (!res.ok) {
195
- const scope2 = flags.agent ? `agent:${flags.agent}` : "shared";
195
+ const scope2 = flags.mind ? `mind:${flags.mind}` : "shared";
196
196
  console.error(`${key} not set in ${scope2} scope`);
197
197
  process.exit(1);
198
198
  }
199
- const scope = flags.agent ? `agent:${flags.agent}` : "shared";
199
+ const scope = flags.mind ? `mind:${flags.mind}` : "shared";
200
200
  console.log(`Removed ${key} [${scope}]`);
201
201
  break;
202
202
  }
203
203
  case "--help":
204
204
  case "-h":
205
205
  case void 0:
206
- console.log(`Usage: volute env <set|get|list|remove> [--agent <name>]`);
206
+ console.log(`Usage: volute env <set|get|list|remove> [--mind <name>]`);
207
207
  break;
208
208
  default:
209
- console.error(`Usage: volute env <set|get|list|remove> [--agent <name>]`);
209
+ console.error(`Usage: volute env <set|get|list|remove> [--mind <name>]`);
210
210
  console.error(`
211
211
  Unknown subcommand: ${subcommand}`);
212
212
  process.exit(1);
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- resolveAgentName
4
- } from "./chunk-AZEL2IEK.js";
3
+ resolveMindName
4
+ } from "./chunk-NAOW2CLO.js";
5
5
  import {
6
6
  parseArgs
7
7
  } from "./chunk-D424ZQGI.js";
8
8
  import {
9
9
  daemonFetch
10
- } from "./chunk-VQIJUR43.js";
11
- import "./chunk-LGSW7T7K.js";
10
+ } from "./chunk-OJQ47SCA.js";
11
+ import "./chunk-M77QBTEH.js";
12
12
  import {
13
13
  getClient,
14
14
  urlOf
@@ -18,13 +18,13 @@ import "./chunk-K3NQKI34.js";
18
18
  // src/commands/history.ts
19
19
  async function run(args) {
20
20
  const { flags } = parseArgs(args, {
21
- agent: { type: "string" },
21
+ mind: { type: "string" },
22
22
  channel: { type: "string" },
23
23
  limit: { type: "string" }
24
24
  });
25
- const name = resolveAgentName(flags);
25
+ const name = resolveMindName(flags);
26
26
  const client = getClient();
27
- const url = client.api.agents[":name"].history.$url({ param: { name } });
27
+ const url = client.api.minds[":name"].history.$url({ param: { name } });
28
28
  if (flags.channel) url.searchParams.set("channel", flags.channel);
29
29
  if (flags.limit) url.searchParams.set("limit", flags.limit);
30
30
  const res = await daemonFetch(urlOf(url));
@@ -6,10 +6,10 @@ import {
6
6
  parseNameFromIdentity,
7
7
  run,
8
8
  sessionMatchesWorkspace
9
- } from "./chunk-FE5O5RSL.js";
10
- import "./chunk-O4BN3ZIY.js";
9
+ } from "./chunk-GSPWIM5E.js";
10
+ import "./chunk-OYSZNX5I.js";
11
11
  import "./chunk-D424ZQGI.js";
12
- import "./chunk-LGSW7T7K.js";
12
+ import "./chunk-M77QBTEH.js";
13
13
  import "./chunk-K3NQKI34.js";
14
14
  export {
15
15
  findOpenClawSession,
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- resolveAgentName
4
- } from "./chunk-AZEL2IEK.js";
3
+ resolveMindName
4
+ } from "./chunk-NAOW2CLO.js";
5
5
  import {
6
6
  parseArgs
7
7
  } from "./chunk-D424ZQGI.js";
8
8
  import {
9
9
  daemonFetch
10
- } from "./chunk-VQIJUR43.js";
11
- import "./chunk-LGSW7T7K.js";
10
+ } from "./chunk-OJQ47SCA.js";
11
+ import "./chunk-M77QBTEH.js";
12
12
  import {
13
13
  getClient,
14
14
  urlOf
@@ -18,14 +18,14 @@ import "./chunk-K3NQKI34.js";
18
18
  // src/commands/logs.ts
19
19
  async function run(args) {
20
20
  const { flags } = parseArgs(args, {
21
- agent: { type: "string" },
21
+ mind: { type: "string" },
22
22
  follow: { type: "boolean" },
23
23
  n: { type: "number" }
24
24
  });
25
- const name = resolveAgentName(flags);
25
+ const name = resolveMindName(flags);
26
26
  const client = getClient();
27
27
  if (flags.follow) {
28
- const res = await daemonFetch(urlOf(client.api.agents[":name"].logs.$url({ param: { name } })));
28
+ const res = await daemonFetch(urlOf(client.api.minds[":name"].logs.$url({ param: { name } })));
29
29
  if (!res.ok) {
30
30
  const body = await res.json().catch(() => ({}));
31
31
  console.error(body.error ?? `Server responded with ${res.status}`);
@@ -61,7 +61,7 @@ async function run(args) {
61
61
  }
62
62
  } else {
63
63
  const n = flags.n ?? 50;
64
- const url = client.api.agents[":name"].logs.tail.$url({ param: { name } });
64
+ const url = client.api.minds[":name"].logs.tail.$url({ param: { name } });
65
65
  url.searchParams.set("n", String(n));
66
66
  const res = await daemonFetch(urlOf(url));
67
67
  if (!res.ok) {
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env node
2
+ import "./chunk-K3NQKI34.js";
3
+
4
+ // src/commands/mind.ts
5
+ async function run(args) {
6
+ const subcommand = args[0];
7
+ switch (subcommand) {
8
+ case "create":
9
+ await import("./create-ZWHCRT5F.js").then((m) => m.run(args.slice(1)));
10
+ break;
11
+ case "start":
12
+ await import("./start-3YYRXBKP.js").then((m) => m.run(args.slice(1)));
13
+ break;
14
+ case "stop":
15
+ await import("./stop-AA5K5LYG.js").then((m) => m.run(args.slice(1)));
16
+ break;
17
+ case "restart":
18
+ await import("./restart-YFAWFS5T.js").then((m) => m.run(args.slice(1)));
19
+ break;
20
+ case "delete":
21
+ await import("./delete-6G6WEX4F.js").then((m) => m.run(args.slice(1)));
22
+ break;
23
+ case "list":
24
+ await import("./status-VSFZYX7S.js").then((m) => m.run(args.slice(1)));
25
+ break;
26
+ case "status": {
27
+ const rest = args.slice(1);
28
+ if (!rest[0] && process.env.VOLUTE_MIND) {
29
+ rest.unshift(process.env.VOLUTE_MIND);
30
+ }
31
+ await import("./status-VSFZYX7S.js").then((m) => m.run(rest));
32
+ break;
33
+ }
34
+ case "logs": {
35
+ const rest = args.slice(1);
36
+ const logsArgs = transformMindFlag(rest);
37
+ await import("./logs-GYOR3L2L.js").then((m) => m.run(logsArgs));
38
+ break;
39
+ }
40
+ case "upgrade":
41
+ await import("./upgrade-KXZCQSZN.js").then((m) => m.run(args.slice(1)));
42
+ break;
43
+ case "import":
44
+ await import("./import-EDGRLIGO.js").then((m) => m.run(args.slice(1)));
45
+ break;
46
+ case "--help":
47
+ case "-h":
48
+ case void 0:
49
+ printUsage();
50
+ break;
51
+ default:
52
+ printUsage();
53
+ process.exit(1);
54
+ }
55
+ }
56
+ function transformMindFlag(args) {
57
+ if (args.length > 0 && args[0] && !args[0].startsWith("-")) {
58
+ return ["--mind", args[0], ...args.slice(1)];
59
+ }
60
+ return args;
61
+ }
62
+ function printUsage() {
63
+ console.log(`Usage:
64
+ volute mind create <name> [--template <name>]
65
+ volute mind start <name>
66
+ volute mind stop [name]
67
+ volute mind restart [name]
68
+ volute mind delete [name] [--force]
69
+ volute mind list
70
+ volute mind status [name]
71
+ volute mind logs [name] [--follow] [-n N]
72
+ volute mind upgrade [name] [--template <name>] [--continue]
73
+ volute mind import <path> [--name <name>] [--session <path>] [--template <name>]
74
+
75
+ Mind name can be omitted (where shown as [name]) if VOLUTE_MIND is set.`);
76
+ }
77
+ export {
78
+ run
79
+ };
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ MindManager,
4
+ getMindManager,
5
+ initMindManager
6
+ } from "./chunk-J52CJCVI.js";
7
+ import "./chunk-OYSZNX5I.js";
8
+ import "./chunk-ZCEYUUID.js";
9
+ import "./chunk-M77QBTEH.js";
10
+ import "./chunk-K3NQKI34.js";
11
+ export {
12
+ MindManager,
13
+ getMindManager,
14
+ initMindManager
15
+ };
@@ -4,8 +4,8 @@ import "./chunk-K3NQKI34.js";
4
4
  // package.json
5
5
  var package_default = {
6
6
  name: "volute",
7
- version: "0.13.2",
8
- description: "CLI for creating and managing self-modifying AI agents powered by the Claude Agent SDK",
7
+ version: "0.14.1",
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",
11
11
  repository: {
@@ -15,7 +15,7 @@ var package_default = {
15
15
  keywords: [
16
16
  "cli",
17
17
  "ai",
18
- "agents",
18
+ "minds",
19
19
  "claude",
20
20
  "anthropic"
21
21
  ],
@@ -40,7 +40,7 @@ var package_default = {
40
40
  "lint:fix": "biome check --write src/ test/",
41
41
  format: "biome format --write src/ test/",
42
42
  typecheck: "tsc --noEmit",
43
- "typecheck:templates": "tsc --noEmit -p templates/agent-sdk/tsconfig.json && tsc --noEmit -p templates/pi/tsconfig.json",
43
+ "typecheck:templates": "tsc --noEmit -p templates/claude/tsconfig.json && tsc --noEmit -p templates/pi/tsconfig.json",
44
44
  "lint:templates": "biome check templates/",
45
45
  "typecheck:web": "tsc --noEmit -p src/web/frontend/tsconfig.json",
46
46
  prepare: "lefthook install",
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- resolveAgentName
4
- } from "./chunk-AZEL2IEK.js";
3
+ resolveMindName
4
+ } from "./chunk-NAOW2CLO.js";
5
5
  import {
6
6
  daemonFetch
7
- } from "./chunk-VQIJUR43.js";
7
+ } from "./chunk-OJQ47SCA.js";
8
8
  import {
9
- resolveAgent
10
- } from "./chunk-LGSW7T7K.js";
9
+ resolveMind
10
+ } from "./chunk-M77QBTEH.js";
11
11
  import {
12
12
  getClient,
13
13
  urlOf
@@ -16,16 +16,16 @@ import "./chunk-K3NQKI34.js";
16
16
 
17
17
  // src/commands/restart.ts
18
18
  async function run(args) {
19
- const name = resolveAgentName({ agent: args[0] });
20
- const { entry } = resolveAgent(name);
19
+ const name = resolveMindName({ mind: args[0] });
20
+ const { entry } = resolveMind(name);
21
21
  const client = getClient();
22
22
  const res = await daemonFetch(
23
- urlOf(client.api.agents[":name"].restart.$url({ param: { name } })),
23
+ urlOf(client.api.minds[":name"].restart.$url({ param: { name } })),
24
24
  { method: "POST" }
25
25
  );
26
26
  const data = await res.json();
27
27
  if (!res.ok) {
28
- console.error(data.error || "Failed to restart agent");
28
+ console.error(data.error || "Failed to restart mind");
29
29
  process.exit(1);
30
30
  }
31
31
  console.log(`${name} restarted on port ${entry.port}`);
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- resolveAgentName
4
- } from "./chunk-AZEL2IEK.js";
3
+ resolveMindName
4
+ } from "./chunk-NAOW2CLO.js";
5
5
  import {
6
6
  parseArgs
7
7
  } from "./chunk-D424ZQGI.js";
8
8
  import {
9
9
  daemonFetch
10
- } from "./chunk-VQIJUR43.js";
11
- import "./chunk-LGSW7T7K.js";
10
+ } from "./chunk-OJQ47SCA.js";
11
+ import "./chunk-M77QBTEH.js";
12
12
  import {
13
13
  getClient,
14
14
  urlOf
@@ -40,18 +40,18 @@ async function run(args) {
40
40
  }
41
41
  function printUsage() {
42
42
  console.log(`Usage:
43
- volute schedule list [--agent <name>]
44
- volute schedule add [--agent <name>] --cron "..." --message "..." [--id name]
45
- volute schedule remove [--agent <name>] --id <id>`);
43
+ volute schedule list [--mind <name>]
44
+ volute schedule add [--mind <name>] --cron "..." --message "..." [--id name]
45
+ volute schedule remove [--mind <name>] --id <id>`);
46
46
  }
47
47
  async function listSchedules(args) {
48
48
  const { flags } = parseArgs(args, {
49
- agent: { type: "string" }
49
+ mind: { type: "string" }
50
50
  });
51
- const agent = resolveAgentName(flags);
51
+ const mind = resolveMindName(flags);
52
52
  const client = getClient();
53
53
  const res = await daemonFetch(
54
- urlOf(client.api.agents[":name"].schedules.$url({ param: { name: agent } }))
54
+ urlOf(client.api.minds[":name"].schedules.$url({ param: { name: mind } }))
55
55
  );
56
56
  if (!res.ok) {
57
57
  const data = await res.json();
@@ -74,12 +74,12 @@ async function listSchedules(args) {
74
74
  }
75
75
  async function addSchedule(args) {
76
76
  const { flags } = parseArgs(args, {
77
- agent: { type: "string" },
77
+ mind: { type: "string" },
78
78
  cron: { type: "string" },
79
79
  message: { type: "string" },
80
80
  id: { type: "string" }
81
81
  });
82
- const agent = resolveAgentName(flags);
82
+ const mind = resolveMindName(flags);
83
83
  if (!flags.cron || !flags.message) {
84
84
  console.error("--cron and --message are required");
85
85
  process.exit(1);
@@ -88,7 +88,7 @@ async function addSchedule(args) {
88
88
  if (flags.id) body.id = flags.id;
89
89
  const client = getClient();
90
90
  const res = await daemonFetch(
91
- urlOf(client.api.agents[":name"].schedules.$url({ param: { name: agent } })),
91
+ urlOf(client.api.minds[":name"].schedules.$url({ param: { name: mind } })),
92
92
  {
93
93
  method: "POST",
94
94
  headers: { "Content-Type": "application/json" },
@@ -105,10 +105,10 @@ async function addSchedule(args) {
105
105
  }
106
106
  async function removeSchedule(args) {
107
107
  const { flags } = parseArgs(args, {
108
- agent: { type: "string" },
108
+ mind: { type: "string" },
109
109
  id: { type: "string" }
110
110
  });
111
- const agent = resolveAgentName(flags);
111
+ const mind = resolveMindName(flags);
112
112
  if (!flags.id) {
113
113
  console.error("--id is required");
114
114
  process.exit(1);
@@ -116,8 +116,8 @@ async function removeSchedule(args) {
116
116
  const client = getClient();
117
117
  const res = await daemonFetch(
118
118
  urlOf(
119
- client.api.agents[":name"].schedules[":id"].$url({
120
- param: { name: agent, id: flags.id }
119
+ client.api.minds[":name"].schedules[":id"].$url({
120
+ param: { name: mind, id: flags.id }
121
121
  })
122
122
  ),
123
123
  { method: "DELETE" }
@@ -18,11 +18,11 @@ async function run(args) {
18
18
  );
19
19
  process.exit(1);
20
20
  }
21
- const template = flags.template ?? "agent-sdk";
22
- const { daemonFetch } = await import("./daemon-client-DEF7IFEJ.js");
21
+ const template = flags.template ?? "claude";
22
+ const { daemonFetch } = await import("./daemon-client-ODKDUYDE.js");
23
23
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
24
24
  const client = getClient();
25
- const createRes = await daemonFetch(urlOf(client.api.agents.$url()), {
25
+ const createRes = await daemonFetch(urlOf(client.api.minds.$url()), {
26
26
  method: "POST",
27
27
  headers: { "Content-Type": "application/json" },
28
28
  body: JSON.stringify({
@@ -35,20 +35,20 @@ async function run(args) {
35
35
  });
36
36
  const createData = await createRes.json();
37
37
  if (!createRes.ok) {
38
- console.error(createData.error ?? "Failed to create agent");
38
+ console.error(createData.error ?? "Failed to create mind");
39
39
  process.exit(1);
40
40
  }
41
41
  const startRes = await daemonFetch(
42
- urlOf(client.api.agents[":name"].start.$url({ param: { name } })),
42
+ urlOf(client.api.minds[":name"].start.$url({ param: { name } })),
43
43
  { method: "POST" }
44
44
  );
45
45
  if (!startRes.ok) {
46
46
  const startData = await startRes.json();
47
- console.error(startData.error ?? "Failed to start agent");
47
+ console.error(startData.error ?? "Failed to start mind");
48
48
  process.exit(1);
49
49
  }
50
50
  const initialMessage = "You've just been created. A human planted you as a seed. Start a conversation with them \u2014 introduce yourself, ask questions, and begin exploring who you want to be.";
51
- await daemonFetch(urlOf(client.api.agents[":name"].message.$url({ param: { name } })), {
51
+ await daemonFetch(urlOf(client.api.minds[":name"].message.$url({ param: { name } })), {
52
52
  method: "POST",
53
53
  headers: { "Content-Type": "application/json" },
54
54
  body: JSON.stringify({
@@ -58,9 +58,9 @@ async function run(args) {
58
58
  })
59
59
  });
60
60
  console.log(`
61
- Seeded agent: ${name} (port ${createData.port})`);
61
+ Seeded mind: ${name} (port ${createData.port})`);
62
62
  console.log(`
63
- Talk to your new agent:`);
63
+ Talk to your new mind:`);
64
64
  console.log(` volute send @${name} "hello"`);
65
65
  }
66
66
  export {