volute 0.21.0 → 0.23.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 (58) hide show
  1. package/dist/api.d.ts +4294 -0
  2. package/dist/chunk-G5KRTU2F.js +76 -0
  3. package/dist/chunk-ISWZ6QUK.js +2691 -0
  4. package/dist/{chunk-J5A3DF2U.js → chunk-JG4CCJOA.js} +1 -1
  5. package/dist/{chunk-IPJXU366.js → chunk-JTDFJWI2.js} +1 -0
  6. package/dist/{chunk-7LPTHFIL.js → chunk-M5CNKH4J.js} +55 -5
  7. package/dist/{chunk-L3LHXZD7.js → chunk-PHHKNGA3.js} +1 -1
  8. package/dist/{chunk-Q7AITQ44.js → chunk-QIXPN3OO.js} +1 -1
  9. package/dist/{chunk-PC6R6UUW.js → chunk-RK627D57.js} +36 -59
  10. package/dist/{chunk-5462YKWP.js → chunk-TFS25FIM.js} +1 -1
  11. package/dist/{chunk-QUJUKM4U.js → chunk-VT5QODNE.js} +1 -1
  12. package/dist/chunk-XLC342FO.js +29 -0
  13. package/dist/cli.js +10 -10
  14. package/dist/cloud-sync-PI47U2LT.js +96 -0
  15. package/dist/{daemon-restart-BH67ZOTE.js → daemon-restart-RMGOOGPE.js} +4 -4
  16. package/dist/daemon.js +1216 -1822
  17. package/dist/{down-LIOQ5JDH.js → down-WSUASL5E.js} +3 -3
  18. package/dist/{import-E433B4KG.js → import-EAXTHHXL.js} +2 -1
  19. package/dist/message-delivery-FHV4NO2F.js +23 -0
  20. package/dist/{mind-BIDOF65R.js → mind-BTXR5B3C.js} +13 -5
  21. package/dist/{mind-manager-3V2NXX4I.js → mind-manager-KMY4GA2J.js} +1 -1
  22. package/dist/mind-sleep-FWRBIFBS.js +41 -0
  23. package/dist/mind-wake-LJK2YU5X.js +36 -0
  24. package/dist/{package-HQR52XSG.js → package-CUBJ4PKS.js} +10 -1
  25. package/dist/{pages-KQBR5TAZ.js → pages-YSTRWJR4.js} +1 -1
  26. package/dist/{publish-OJ4QMXVZ.js → publish-BZNHKUUK.js} +2 -2
  27. package/dist/{service-TVNEORO7.js → service-7BFXDI6J.js} +4 -4
  28. package/dist/{setup-OZDYCKDI.js → setup-SSIIXQMI.js} +2 -2
  29. package/dist/sleep-manager-2TMQ65E4.js +27 -0
  30. package/dist/{sprout-6Z6C42YM.js → sprout-UKCYBGHK.js} +2 -2
  31. package/dist/{status-Z7NAFMBI.js → status-H2MKDN6L.js} +2 -2
  32. package/dist/{up-7BGDMFRT.js → up-Z5JRG2M2.js} +3 -3
  33. package/dist/{update-4WT7VWHW.js → update-ELC6MEUT.js} +2 -2
  34. package/dist/{upgrade-ZEC2GGFO.js → upgrade-GXW2EQY3.js} +11 -2
  35. package/dist/{version-notify-TFS2U5CF.js → version-notify-LKABEJSA.js} +11 -3
  36. package/dist/web-assets/assets/index-CZ26vsyY.js +69 -0
  37. package/dist/web-assets/assets/index-DyyAvJwW.css +1 -0
  38. package/dist/web-assets/index.html +2 -2
  39. package/package.json +10 -1
  40. package/templates/_base/.init/.config/prompts.json +1 -0
  41. package/templates/_base/home/.config/config.json.tmpl +4 -1
  42. package/templates/_base/src/lib/file-handler.ts +6 -1
  43. package/templates/_base/src/lib/logger.ts +68 -23
  44. package/templates/_base/src/lib/startup.ts +12 -3
  45. package/templates/claude/src/agent.ts +150 -29
  46. package/templates/claude/src/lib/hooks/pre-compact.ts +18 -4
  47. package/templates/claude/src/lib/message-channel.ts +6 -0
  48. package/templates/claude/src/lib/stream-consumer.ts +17 -1
  49. package/templates/claude/src/server.ts +3 -1
  50. package/templates/pi/home/.config/config.json.tmpl +4 -1
  51. package/templates/pi/src/agent.ts +87 -0
  52. package/templates/pi/src/lib/content.ts +18 -3
  53. package/templates/pi/src/lib/event-handler.ts +22 -2
  54. package/templates/pi/src/server.ts +3 -1
  55. package/dist/chunk-OGZYB5GL.js +0 -847
  56. package/dist/web-assets/assets/index-BR3gtK3E.css +0 -1
  57. package/dist/web-assets/assets/index-CWmrZRQd.js +0 -64
  58. /package/dist/{shared-DCQ2UXOM.js → shared-2OGT3NSL.js} +0 -0
@@ -2,9 +2,9 @@
2
2
  import {
3
3
  run,
4
4
  stopDaemon
5
- } from "./chunk-Q7AITQ44.js";
6
- import "./chunk-QUJUKM4U.js";
7
- import "./chunk-IPJXU366.js";
5
+ } from "./chunk-QIXPN3OO.js";
6
+ import "./chunk-VT5QODNE.js";
7
+ import "./chunk-JTDFJWI2.js";
8
8
  import "./chunk-NWPT4ASZ.js";
9
9
  import "./chunk-B2CPS4QU.js";
10
10
  import "./chunk-K3NQKI34.js";
@@ -6,7 +6,8 @@ import {
6
6
  parseNameFromIdentity,
7
7
  run,
8
8
  sessionMatchesWorkspace
9
- } from "./chunk-PC6R6UUW.js";
9
+ } from "./chunk-RK627D57.js";
10
+ import "./chunk-XLC342FO.js";
10
11
  import "./chunk-PHU4DEAJ.js";
11
12
  import "./chunk-D424ZQGI.js";
12
13
  import "./chunk-B2CPS4QU.js";
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ deliverMessage,
4
+ extractTextContent,
5
+ recordInbound
6
+ } from "./chunk-ISWZ6QUK.js";
7
+ import "./chunk-HFCBO2GL.js";
8
+ import "./chunk-HGCDWKSP.js";
9
+ import "./chunk-A4S7H6G6.js";
10
+ import "./chunk-M5CNKH4J.js";
11
+ import "./chunk-XLC342FO.js";
12
+ import "./chunk-PHU4DEAJ.js";
13
+ import "./chunk-SGPEZ32F.js";
14
+ import "./chunk-YUIHSKR6.js";
15
+ import "./chunk-JTDFJWI2.js";
16
+ import "./chunk-NWPT4ASZ.js";
17
+ import "./chunk-B2CPS4QU.js";
18
+ import "./chunk-K3NQKI34.js";
19
+ export {
20
+ deliverMessage,
21
+ extractTextContent,
22
+ recordInbound
23
+ };
@@ -21,14 +21,14 @@ async function run(args) {
21
21
  await import("./delete-LOIANQGD.js").then((m) => m.run(args.slice(1)));
22
22
  break;
23
23
  case "list":
24
- await import("./status-Z7NAFMBI.js").then((m) => m.run(args.slice(1)));
24
+ await import("./status-H2MKDN6L.js").then((m) => m.run(args.slice(1)));
25
25
  break;
26
26
  case "status": {
27
27
  const rest = args.slice(1);
28
28
  if (!rest[0] && process.env.VOLUTE_MIND) {
29
29
  rest.unshift(process.env.VOLUTE_MIND);
30
30
  }
31
- await import("./status-Z7NAFMBI.js").then((m) => m.run(rest));
31
+ await import("./status-H2MKDN6L.js").then((m) => m.run(rest));
32
32
  break;
33
33
  }
34
34
  case "logs": {
@@ -38,10 +38,10 @@ async function run(args) {
38
38
  break;
39
39
  }
40
40
  case "upgrade":
41
- await import("./upgrade-ZEC2GGFO.js").then((m) => m.run(args.slice(1)));
41
+ await import("./upgrade-GXW2EQY3.js").then((m) => m.run(args.slice(1)));
42
42
  break;
43
43
  case "import":
44
- await import("./import-E433B4KG.js").then((m) => m.run(args.slice(1)));
44
+ await import("./import-EAXTHHXL.js").then((m) => m.run(args.slice(1)));
45
45
  break;
46
46
  case "export":
47
47
  await import("./export-XD6PJBQP.js").then((m) => m.run(args.slice(1)));
@@ -56,7 +56,13 @@ async function run(args) {
56
56
  await import("./seed-3H2MRREW.js").then((m) => m.run(args.slice(1)));
57
57
  break;
58
58
  case "sprout":
59
- await import("./sprout-6Z6C42YM.js").then((m) => m.run(args.slice(1)));
59
+ await import("./sprout-UKCYBGHK.js").then((m) => m.run(args.slice(1)));
60
+ break;
61
+ case "sleep":
62
+ await import("./mind-sleep-FWRBIFBS.js").then((m) => m.run(args.slice(1)));
63
+ break;
64
+ case "wake":
65
+ await import("./mind-wake-LJK2YU5X.js").then((m) => m.run(args.slice(1)));
60
66
  break;
61
67
  case "--help":
62
68
  case "-h":
@@ -88,6 +94,8 @@ function printUsage() {
88
94
  volute mind connect <type> [--mind <name>]
89
95
  volute mind disconnect <type> [--mind <name>]
90
96
  volute mind sprout
97
+ volute mind sleep [name] [--wake-at <time>]
98
+ volute mind wake [name]
91
99
  volute mind upgrade [name] [--template <name>] [--continue]
92
100
  volute mind import <path> [--name <name>] [--session <path>] [--template <name>]
93
101
  volute mind export <name> [--include-env] [--include-identity] [--include-connectors] [--include-history] [--include-sessions] [--all] [--output <path>]
@@ -3,7 +3,7 @@ import {
3
3
  MindManager,
4
4
  getMindManager,
5
5
  initMindManager
6
- } from "./chunk-7LPTHFIL.js";
6
+ } from "./chunk-M5CNKH4J.js";
7
7
  import "./chunk-PHU4DEAJ.js";
8
8
  import "./chunk-SGPEZ32F.js";
9
9
  import "./chunk-YUIHSKR6.js";
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ resolveMindName
4
+ } from "./chunk-NAOW2CLO.js";
5
+ import {
6
+ parseArgs
7
+ } from "./chunk-D424ZQGI.js";
8
+ import {
9
+ daemonFetch
10
+ } from "./chunk-KFI7TQJ6.js";
11
+ import "./chunk-B2CPS4QU.js";
12
+ import "./chunk-K3NQKI34.js";
13
+
14
+ // src/commands/mind-sleep.ts
15
+ async function run(args) {
16
+ const { positional, flags } = parseArgs(args, {
17
+ mind: { type: "string" },
18
+ "wake-at": { type: "string" }
19
+ });
20
+ const name = positional[0] || resolveMindName(flags);
21
+ if (!name) {
22
+ console.error("Usage: volute mind sleep <name> [--wake-at <time>]");
23
+ process.exit(1);
24
+ }
25
+ const body = {};
26
+ if (flags["wake-at"]) body.wakeAt = flags["wake-at"];
27
+ const res = await daemonFetch(`/api/minds/${encodeURIComponent(name)}/sleep`, {
28
+ method: "POST",
29
+ headers: { "Content-Type": "application/json" },
30
+ body: JSON.stringify(body)
31
+ });
32
+ const data = await res.json();
33
+ if (!res.ok) {
34
+ console.error(data.error || "Failed to put mind to sleep");
35
+ process.exit(1);
36
+ }
37
+ console.log(`${name} is going to sleep`);
38
+ }
39
+ export {
40
+ run
41
+ };
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ resolveMindName
4
+ } from "./chunk-NAOW2CLO.js";
5
+ import {
6
+ parseArgs
7
+ } from "./chunk-D424ZQGI.js";
8
+ import {
9
+ daemonFetch
10
+ } from "./chunk-KFI7TQJ6.js";
11
+ import "./chunk-B2CPS4QU.js";
12
+ import "./chunk-K3NQKI34.js";
13
+
14
+ // src/commands/mind-wake.ts
15
+ async function run(args) {
16
+ const { positional, flags } = parseArgs(args, {
17
+ mind: { type: "string" }
18
+ });
19
+ const name = positional[0] || resolveMindName(flags);
20
+ if (!name) {
21
+ console.error("Usage: volute mind wake <name>");
22
+ process.exit(1);
23
+ }
24
+ const res = await daemonFetch(`/api/minds/${encodeURIComponent(name)}/wake`, {
25
+ method: "POST"
26
+ });
27
+ const data = await res.json();
28
+ if (!res.ok) {
29
+ console.error(data.error || "Failed to wake mind");
30
+ process.exit(1);
31
+ }
32
+ console.log(`${name} is waking up`);
33
+ }
34
+ export {
35
+ run
36
+ };
@@ -4,7 +4,7 @@ import "./chunk-K3NQKI34.js";
4
4
  // package.json
5
5
  var package_default = {
6
6
  name: "volute",
7
- version: "0.21.0",
7
+ version: "0.23.0",
8
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",
@@ -19,12 +19,21 @@ var package_default = {
19
19
  "claude",
20
20
  "anthropic"
21
21
  ],
22
+ workspaces: [
23
+ "packages/*"
24
+ ],
22
25
  engines: {
23
26
  node: ">=24"
24
27
  },
25
28
  bin: {
26
29
  volute: "dist/cli.js"
27
30
  },
31
+ exports: {
32
+ ".": "./dist/cli.js",
33
+ "./api": {
34
+ types: "./dist/api.d.ts"
35
+ }
36
+ },
28
37
  files: [
29
38
  "dist/",
30
39
  "drizzle/",
@@ -6,7 +6,7 @@ async function run(args) {
6
6
  const subcommand = args[0];
7
7
  switch (subcommand) {
8
8
  case "publish":
9
- await import("./publish-OJ4QMXVZ.js").then((m) => m.run(args.slice(1)));
9
+ await import("./publish-BZNHKUUK.js").then((m) => m.run(args.slice(1)));
10
10
  break;
11
11
  case "status":
12
12
  await import("./status-LV34BG6G.js").then((m) => m.run(args.slice(1)));
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-NAOW2CLO.js";
8
8
  import {
9
9
  sharedDir
10
- } from "./chunk-L3LHXZD7.js";
10
+ } from "./chunk-PHHKNGA3.js";
11
11
  import {
12
12
  readSystemsConfig
13
13
  } from "./chunk-HFCBO2GL.js";
@@ -15,7 +15,7 @@ import "./chunk-YUIHSKR6.js";
15
15
  import {
16
16
  parseArgs
17
17
  } from "./chunk-D424ZQGI.js";
18
- import "./chunk-IPJXU366.js";
18
+ import "./chunk-JTDFJWI2.js";
19
19
  import "./chunk-NWPT4ASZ.js";
20
20
  import {
21
21
  mindDir
@@ -4,13 +4,13 @@ import {
4
4
  LAUNCHD_PLIST_PATH,
5
5
  SYSTEM_SERVICE_PATH,
6
6
  USER_SYSTEMD_UNIT
7
- } from "./chunk-QUJUKM4U.js";
7
+ } from "./chunk-VT5QODNE.js";
8
8
  import {
9
9
  parseArgs
10
10
  } from "./chunk-D424ZQGI.js";
11
11
  import {
12
12
  resolveVoluteBin
13
- } from "./chunk-IPJXU366.js";
13
+ } from "./chunk-JTDFJWI2.js";
14
14
  import "./chunk-NWPT4ASZ.js";
15
15
  import "./chunk-B2CPS4QU.js";
16
16
  import "./chunk-K3NQKI34.js";
@@ -211,7 +211,7 @@ async function run(args) {
211
211
  switch (subcommand) {
212
212
  case "install":
213
213
  if (flags.system) {
214
- const setup = await import("./setup-OZDYCKDI.js");
214
+ const setup = await import("./setup-SSIIXQMI.js");
215
215
  setup.install(flags.port, flags.host);
216
216
  } else {
217
217
  await install(flags.port, flags.host);
@@ -219,7 +219,7 @@ async function run(args) {
219
219
  break;
220
220
  case "uninstall":
221
221
  if (flags.system) {
222
- const setup = await import("./setup-OZDYCKDI.js");
222
+ const setup = await import("./setup-SSIIXQMI.js");
223
223
  setup.uninstall(!!flags.force);
224
224
  } else {
225
225
  await uninstall();
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SYSTEM_SERVICE_PATH
4
- } from "./chunk-QUJUKM4U.js";
4
+ } from "./chunk-VT5QODNE.js";
5
5
  import {
6
6
  resolveVoluteBin
7
- } from "./chunk-IPJXU366.js";
7
+ } from "./chunk-JTDFJWI2.js";
8
8
  import {
9
9
  ensureVoluteGroup
10
10
  } from "./chunk-NWPT4ASZ.js";
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ SleepManager,
4
+ getSleepManager,
5
+ getSleepManagerIfReady,
6
+ initSleepManager,
7
+ matchesGlob
8
+ } from "./chunk-ISWZ6QUK.js";
9
+ import "./chunk-HFCBO2GL.js";
10
+ import "./chunk-HGCDWKSP.js";
11
+ import "./chunk-A4S7H6G6.js";
12
+ import "./chunk-M5CNKH4J.js";
13
+ import "./chunk-XLC342FO.js";
14
+ import "./chunk-PHU4DEAJ.js";
15
+ import "./chunk-SGPEZ32F.js";
16
+ import "./chunk-YUIHSKR6.js";
17
+ import "./chunk-JTDFJWI2.js";
18
+ import "./chunk-NWPT4ASZ.js";
19
+ import "./chunk-B2CPS4QU.js";
20
+ import "./chunk-K3NQKI34.js";
21
+ export {
22
+ SleepManager,
23
+ getSleepManager,
24
+ getSleepManagerIfReady,
25
+ initSleepManager,
26
+ matchesGlob
27
+ };
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  STANDARD_SKILLS
4
- } from "./chunk-5462YKWP.js";
4
+ } from "./chunk-TFS25FIM.js";
5
5
  import "./chunk-SGPEZ32F.js";
6
6
  import "./chunk-YUIHSKR6.js";
7
- import "./chunk-IPJXU366.js";
7
+ import "./chunk-JTDFJWI2.js";
8
8
  import "./chunk-NWPT4ASZ.js";
9
9
  import {
10
10
  findMind,
@@ -4,8 +4,8 @@ import {
4
4
  getServiceMode,
5
5
  modeLabel,
6
6
  readDaemonConfig
7
- } from "./chunk-QUJUKM4U.js";
8
- import "./chunk-IPJXU366.js";
7
+ } from "./chunk-VT5QODNE.js";
8
+ import "./chunk-JTDFJWI2.js";
9
9
  import "./chunk-NWPT4ASZ.js";
10
10
  import {
11
11
  checkForUpdate
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  readGlobalConfig,
4
4
  run
5
- } from "./chunk-J5A3DF2U.js";
6
- import "./chunk-QUJUKM4U.js";
5
+ } from "./chunk-JG4CCJOA.js";
6
+ import "./chunk-VT5QODNE.js";
7
7
  import "./chunk-D424ZQGI.js";
8
- import "./chunk-IPJXU366.js";
8
+ import "./chunk-JTDFJWI2.js";
9
9
  import "./chunk-NWPT4ASZ.js";
10
10
  import "./chunk-B2CPS4QU.js";
11
11
  import "./chunk-K3NQKI34.js";
@@ -5,12 +5,12 @@ import {
5
5
  pollHealth,
6
6
  readDaemonConfig,
7
7
  restartService
8
- } from "./chunk-QUJUKM4U.js";
8
+ } from "./chunk-VT5QODNE.js";
9
9
  import {
10
10
  exec,
11
11
  execInherit,
12
12
  resolveVoluteBin
13
- } from "./chunk-IPJXU366.js";
13
+ } from "./chunk-JTDFJWI2.js";
14
14
  import "./chunk-NWPT4ASZ.js";
15
15
  import {
16
16
  checkForUpdate
@@ -11,7 +11,8 @@ import "./chunk-K3NQKI34.js";
11
11
  async function run(args) {
12
12
  const { positional, flags } = parseArgs(args, {
13
13
  template: { type: "string" },
14
- continue: { type: "boolean" }
14
+ continue: { type: "boolean" },
15
+ abort: { type: "boolean" }
15
16
  });
16
17
  const mindName = resolveMindName({ mind: positional[0] });
17
18
  const { daemonFetch } = await import("./daemon-client-ZHCDL4RS.js");
@@ -24,7 +25,8 @@ async function run(args) {
24
25
  headers: { "Content-Type": "application/json" },
25
26
  body: JSON.stringify({
26
27
  template: flags.template,
27
- continue: flags.continue
28
+ continue: flags.continue,
29
+ abort: flags.abort
28
30
  })
29
31
  }
30
32
  );
@@ -33,12 +35,19 @@ async function run(args) {
33
35
  console.error(data.error ?? "Failed to upgrade mind");
34
36
  process.exit(1);
35
37
  }
38
+ if (flags.abort) {
39
+ console.log(`Upgrade aborted for ${mindName}.`);
40
+ return;
41
+ }
36
42
  if (data.conflicts) {
37
43
  console.log("\nMerge conflicts detected. Resolve them in:");
38
44
  console.log(` ${data.worktreeDir}`);
39
45
  console.log(`
40
46
  Then run:`);
41
47
  console.log(` volute mind upgrade ${mindName} --continue`);
48
+ console.log(`
49
+ Or abort:`);
50
+ console.log(` volute mind upgrade ${mindName} --abort`);
42
51
  return;
43
52
  }
44
53
  console.log(`
@@ -1,14 +1,22 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- deliverMessage
4
- } from "./chunk-OGZYB5GL.js";
5
2
  import {
6
3
  computeTemplateHash
7
4
  } from "./chunk-AKPFNL7L.js";
5
+ import {
6
+ deliverMessage
7
+ } from "./chunk-ISWZ6QUK.js";
8
+ import "./chunk-HFCBO2GL.js";
9
+ import "./chunk-HGCDWKSP.js";
10
+ import "./chunk-A4S7H6G6.js";
11
+ import "./chunk-M5CNKH4J.js";
12
+ import "./chunk-XLC342FO.js";
13
+ import "./chunk-PHU4DEAJ.js";
8
14
  import "./chunk-SGPEZ32F.js";
9
15
  import {
10
16
  logger_default
11
17
  } from "./chunk-YUIHSKR6.js";
18
+ import "./chunk-JTDFJWI2.js";
19
+ import "./chunk-NWPT4ASZ.js";
12
20
  import {
13
21
  getCurrentVersion
14
22
  } from "./chunk-ON3FF5JA.js";