volute 0.26.0 → 0.27.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 (127) hide show
  1. package/README.md +13 -13
  2. package/dist/{activity-events-ZMBAKLUF.js → activity-events-BBIEA2F4.js} +2 -3
  3. package/dist/api.d.ts +363 -168
  4. package/dist/{archive-4ZQYK5MN.js → archive-UA4BDFXQ.js} +2 -2
  5. package/dist/{auth-4TV573WE.js → auth-D3OT2ARB.js} +3 -3
  6. package/dist/bridge-FQHZL3MC.js +206 -0
  7. package/dist/chat-MHJ3L6JQ.js +58 -0
  8. package/dist/{chunk-PHU4DEAJ.js → chunk-2WPW7OT6.js} +3 -3
  9. package/dist/{chunk-5Y3PBKW6.js → chunk-2YP2TVDT.js} +138 -56
  10. package/dist/{chunk-USNBKHYG.js → chunk-4WXYUOAK.js} +4 -6
  11. package/dist/{chunk-YJA7P64S.js → chunk-AW7PFDVN.js} +5 -5
  12. package/dist/{chunk-OZFKBXD6.js → chunk-EHYDTZTF.js} +6 -6
  13. package/dist/{chunk-LX22GRG7.js → chunk-GIE6CSN5.js} +11 -8
  14. package/dist/{chunk-WBHMQ5OZ.js → chunk-H7OZRFJB.js} +192 -12
  15. package/dist/{chunk-ON3FF5JA.js → chunk-HDN7MNGD.js} +3 -3
  16. package/dist/chunk-IAYBDWVG.js +477 -0
  17. package/dist/{chunk-TZKJLDQN.js → chunk-IKRVFPWU.js} +14 -9
  18. package/dist/{chunk-WGOGUMPO.js → chunk-JGFVMROS.js} +13 -6
  19. package/dist/{chunk-3TV4GLFO.js → chunk-JKOWNZ4P.js} +3 -3
  20. package/dist/{chunk-NWI2425I.js → chunk-K5NAC55T.js} +1 -1
  21. package/dist/{chunk-HFCBO2GL.js → chunk-KDGS53OS.js} +4 -4
  22. package/dist/chunk-KTLFDYPT.js +61 -0
  23. package/dist/{chunk-V63B7DX3.js → chunk-LAC664WU.js} +7 -4
  24. package/dist/{chunk-3CFRE2VC.js → chunk-OQZH4PBB.js} +337 -1061
  25. package/dist/{chunk-2VO7453N.js → chunk-PHSAT7YL.js} +30 -54
  26. package/dist/{chunk-XOXLRRR2.js → chunk-RKQEHRBB.js} +4 -3
  27. package/dist/chunk-T6HKBWXZ.js +23 -0
  28. package/dist/{chunk-UTL75LP6.js → chunk-USUXRNVD.js} +22 -22
  29. package/dist/{chunk-J2CO4WEV.js → chunk-VIVMW2H2.js} +4 -4
  30. package/dist/{chunk-KTJGZ7M7.js → chunk-XBLSAVJF.js} +1 -1
  31. package/dist/cli.js +31 -36
  32. package/dist/{cloud-sync-NI2K3C7G.js → cloud-sync-T7M3ESC3.js} +15 -14
  33. package/dist/connectors/discord-bridge.js +158 -0
  34. package/dist/connectors/slack-bridge.js +119 -0
  35. package/dist/connectors/telegram-bridge.js +133 -0
  36. package/dist/conversations-M2K4253F.js +55 -0
  37. package/dist/create-D7J73A6H.js +45 -0
  38. package/dist/{create-4YBRTTJS.js → create-QWV73WXD.js} +1 -1
  39. package/dist/{daemon-client-Z7FAJ6JW.js → daemon-client-I42FK2BF.js} +2 -2
  40. package/dist/{daemon-restart-BJZ3O4U4.js → daemon-restart-M2QTYMEG.js} +7 -7
  41. package/dist/daemon.js +1758 -1024
  42. package/dist/db-IC4J52XQ.js +8 -0
  43. package/dist/{delete-27OYNK25.js → delete-4JYGD4VN.js} +1 -1
  44. package/dist/down-LVBXEULC.js +14 -0
  45. package/dist/{env-M336ONDP.js → env-YJMUMFIY.js} +2 -2
  46. package/dist/{export-HP4G5DQC.js → export-BOJQWBMA.js} +4 -4
  47. package/dist/{file-HUDKTRAS.js → file-CR36YUPD.js} +4 -4
  48. package/dist/{history-B64GTFTD.js → history-XKRTAFS2.js} +5 -5
  49. package/dist/{import-XIB7UV4S.js → import-SRTQXBGH.js} +4 -4
  50. package/dist/join-J4QU42DL.js +66 -0
  51. package/dist/list-R73GENNL.js +40 -0
  52. package/dist/{log-PBFNILJ4.js → log-ABYNVYJ3.js} +4 -4
  53. package/dist/{login-B5E7N7MY.js → login-3QZNR2DF.js} +4 -4
  54. package/dist/{login-6U7U6BNG.js → login-XX37I52P.js} +2 -2
  55. package/dist/{logout-XSJRYS3U.js → logout-T53VKCPU.js} +4 -4
  56. package/dist/{logout-UKD5LA37.js → logout-W4KOOBIT.js} +2 -2
  57. package/dist/{logs-3CART7O7.js → logs-U35JR2KE.js} +5 -5
  58. package/dist/{merge-VK2HSKMA.js → merge-LNSMSAOF.js} +4 -4
  59. package/dist/message-delivery-LDXLGERA.js +25 -0
  60. package/dist/migrate-registry-to-db-XC7T5B7P.js +110 -0
  61. package/dist/{mind-HZ3QSDDJ.js → mind-DI33C74K.js} +25 -25
  62. package/dist/{mind-activity-tracker-4G6FURY2.js → mind-activity-tracker-EN6XNXPF.js} +3 -4
  63. package/dist/mind-manager-M6EMUW5I.js +18 -0
  64. package/dist/{mind-sleep-DTV7L44D.js → mind-sleep-BTSWQNAC.js} +4 -4
  65. package/dist/{mind-wake-PFN4FN3T.js → mind-wake-SBAKIDVP.js} +4 -4
  66. package/dist/{notes-37FW2UR2.js → notes-XCER3I7M.js} +11 -21
  67. package/dist/{package-VZWLXPHV.js → package-7WY6VKU3.js} +1 -1
  68. package/dist/{pages-DIIT5HMQ.js → pages-6EBS6CBR.js} +2 -2
  69. package/dist/{publish-HQV7YREB.js → publish-66UB2ZFY.js} +5 -5
  70. package/dist/{pull-2MB4SK3C.js → pull-XCHJTM5M.js} +4 -4
  71. package/dist/read-36UFXN3G.js +46 -0
  72. package/dist/{register-EFND67FQ.js → register-6B2CXTYM.js} +2 -2
  73. package/dist/{registry-D2BSQ2X5.js → registry-NDNOOYG4.js} +15 -9
  74. package/dist/{restart-CCK7D6TV.js → restart-6ESL3NBO.js} +5 -5
  75. package/dist/{sandbox-EHGFF52K.js → sandbox-TGBX22DS.js} +3 -3
  76. package/dist/{schedule-6F7ELB2M.js → schedule-QTJMFATP.js} +5 -5
  77. package/dist/{seed-E5OQGWX3.js → seed-SSUCYYDF.js} +2 -2
  78. package/dist/{send-IH6XZKPC.js → send-ZNCJDSRP.js} +25 -19
  79. package/dist/{service-LLBV3R7M.js → service-6LIN3F3K.js} +4 -4
  80. package/dist/{setup-F6TWFYGQ.js → setup-JG4QAEBV.js} +12 -12
  81. package/dist/{setup-YGAAIKKZ.js → setup-JHL5ZEST.js} +2 -2
  82. package/dist/{shared-UMO4S7CC.js → shared-ML5I4Q2A.js} +4 -4
  83. package/dist/{skill-42LGFBQC.js → skill-AUAQTSP5.js} +5 -5
  84. package/dist/skills/dreaming/references/INSTALL.md +2 -2
  85. package/dist/skills/orientation/SKILL.md +3 -3
  86. package/dist/skills/volute-mind/SKILL.md +32 -30
  87. package/dist/sleep-manager-MWYHM5HV.js +29 -0
  88. package/dist/split-TKJ5OT3P.js +63 -0
  89. package/dist/{sprout-QL74KR2X.js → sprout-IJVVKSJ2.js} +6 -7
  90. package/dist/{start-O5JQASRC.js → start-EUJSS5R4.js} +2 -2
  91. package/dist/{status-FZBEBM7Q.js → status-77YEPHMW.js} +5 -5
  92. package/dist/{status-WXD4HXRL.js → status-7GA4SM4Y.js} +4 -4
  93. package/dist/{status-LV34BG6G.js → status-THLOBLWG.js} +2 -2
  94. package/dist/{stop-2SOG5NYF.js → stop-3XAITBBF.js} +5 -5
  95. package/dist/{tailscale-AJ4VL5XK.js → tailscale-NY5MUMY3.js} +1 -1
  96. package/dist/up-NKSMXBWR.js +17 -0
  97. package/dist/{update-5VUDAI3D.js → update-PTSH22AZ.js} +9 -9
  98. package/dist/{update-check-F5Z3ALXX.js → update-check-64FWC4Y2.js} +2 -2
  99. package/dist/{upgrade-QCCO33BK.js → upgrade-HA47CS4C.js} +12 -5
  100. package/dist/variant-7TGZHOU3.js +41 -0
  101. package/dist/{version-notify-USFZBWMG.js → version-notify-5Z4MNR6M.js} +26 -30
  102. package/dist/web-assets/assets/index-CI5wgghI.css +1 -0
  103. package/dist/web-assets/assets/index-is5CvJWH.js +75 -0
  104. package/dist/web-assets/favicon.png +0 -0
  105. package/dist/web-assets/index.html +2 -2
  106. package/drizzle/0017_minds.sql +16 -0
  107. package/drizzle/meta/_journal.json +7 -0
  108. package/package.json +1 -1
  109. package/templates/_base/.init/.config/prompts.json +2 -2
  110. package/templates/_base/home/VOLUTE.md +5 -5
  111. package/templates/_base/src/lib/startup.ts +2 -2
  112. package/dist/channel-ZVZV42UD.js +0 -260
  113. package/dist/chunk-B2CPS4QU.js +0 -283
  114. package/dist/chunk-SIAG3QMM.js +0 -42
  115. package/dist/chunk-WSLPZF72.js +0 -173
  116. package/dist/connector-G722WXAU.js +0 -147
  117. package/dist/connectors/discord.js +0 -177
  118. package/dist/connectors/slack.js +0 -181
  119. package/dist/connectors/telegram.js +0 -187
  120. package/dist/down-7UKFMJJZ.js +0 -14
  121. package/dist/message-delivery-MS5JYPZX.js +0 -25
  122. package/dist/mind-manager-VVK67AY3.js +0 -19
  123. package/dist/sleep-manager-EE4NRN2Q.js +0 -29
  124. package/dist/up-SDMCSVI3.js +0 -17
  125. package/dist/variant-WWLDY6D5.js +0 -207
  126. package/dist/web-assets/assets/index-CUQ31ieL.js +0 -69
  127. package/dist/web-assets/assets/index-CW8NSl1o.css +0 -1
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ getDb
4
+ } from "./chunk-H7OZRFJB.js";
5
+ import "./chunk-K3NQKI34.js";
6
+ export {
7
+ getDb
8
+ };
@@ -13,7 +13,7 @@ async function run(args) {
13
13
  force: { type: "boolean" }
14
14
  });
15
15
  const name = resolveMindName({ mind: positional[0] });
16
- const { daemonFetch } = await import("./daemon-client-Z7FAJ6JW.js");
16
+ const { daemonFetch } = await import("./daemon-client-I42FK2BF.js");
17
17
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
18
18
  const client = getClient();
19
19
  const url = urlOf(client.api.minds[":name"].$url({ param: { name } })) + (flags.force ? "?force=true" : "");
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ run,
4
+ stopDaemon
5
+ } from "./chunk-EHYDTZTF.js";
6
+ import "./chunk-LAC664WU.js";
7
+ import "./chunk-AW7PFDVN.js";
8
+ import "./chunk-RKQEHRBB.js";
9
+ import "./chunk-H7OZRFJB.js";
10
+ import "./chunk-K3NQKI34.js";
11
+ export {
12
+ run,
13
+ stopDaemon
14
+ };
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-SSI47XP2.js";
5
5
  import {
6
6
  daemonFetch
7
- } from "./chunk-WGOGUMPO.js";
7
+ } from "./chunk-JGFVMROS.js";
8
8
  import {
9
9
  getClient,
10
10
  urlOf
@@ -12,7 +12,7 @@ import {
12
12
  import {
13
13
  parseArgs
14
14
  } from "./chunk-D424ZQGI.js";
15
- import "./chunk-B2CPS4QU.js";
15
+ import "./chunk-H7OZRFJB.js";
16
16
  import "./chunk-K3NQKI34.js";
17
17
 
18
18
  // src/commands/env.ts
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  addHistoryToArchive,
4
4
  createExportArchive
5
- } from "./chunk-KTJGZ7M7.js";
5
+ } from "./chunk-XBLSAVJF.js";
6
6
  import {
7
7
  parseArgs
8
8
  } from "./chunk-D424ZQGI.js";
9
9
  import {
10
10
  findMind,
11
11
  mindDir
12
- } from "./chunk-B2CPS4QU.js";
12
+ } from "./chunk-H7OZRFJB.js";
13
13
  import "./chunk-K3NQKI34.js";
14
14
 
15
15
  // src/commands/export.ts
@@ -33,7 +33,7 @@ async function run(args) {
33
33
  );
34
34
  process.exit(1);
35
35
  }
36
- const entry = findMind(name);
36
+ const entry = await findMind(name);
37
37
  if (!entry) {
38
38
  console.error(`Unknown mind: ${name}`);
39
39
  process.exit(1);
@@ -63,7 +63,7 @@ async function run(args) {
63
63
  });
64
64
  if (includeHistory) {
65
65
  try {
66
- const { daemonFetch } = await import("./daemon-client-Z7FAJ6JW.js");
66
+ const { daemonFetch } = await import("./daemon-client-I42FK2BF.js");
67
67
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
68
68
  const client = getClient();
69
69
  const res = await daemonFetch(
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- daemonFetch
4
- } from "./chunk-WGOGUMPO.js";
5
2
  import {
6
3
  resolveMindName
7
4
  } from "./chunk-NAOW2CLO.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-JGFVMROS.js";
8
8
  import {
9
9
  parseArgs
10
10
  } from "./chunk-D424ZQGI.js";
11
- import "./chunk-B2CPS4QU.js";
11
+ import "./chunk-H7OZRFJB.js";
12
12
  import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // src/commands/file.ts
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ resolveMindName
4
+ } from "./chunk-NAOW2CLO.js";
2
5
  import {
3
6
  daemonFetch
4
- } from "./chunk-WGOGUMPO.js";
7
+ } from "./chunk-JGFVMROS.js";
5
8
  import {
6
9
  getClient,
7
10
  urlOf
8
11
  } from "./chunk-4RQBJWQX.js";
9
- import {
10
- resolveMindName
11
- } from "./chunk-NAOW2CLO.js";
12
12
  import {
13
13
  parseArgs
14
14
  } from "./chunk-D424ZQGI.js";
15
- import "./chunk-B2CPS4QU.js";
15
+ import "./chunk-H7OZRFJB.js";
16
16
  import "./chunk-K3NQKI34.js";
17
17
 
18
18
  // src/commands/history.ts
@@ -6,11 +6,11 @@ import {
6
6
  parseNameFromIdentity,
7
7
  run,
8
8
  sessionMatchesWorkspace
9
- } from "./chunk-5Y3PBKW6.js";
10
- import "./chunk-SIAG3QMM.js";
11
- import "./chunk-PHU4DEAJ.js";
9
+ } from "./chunk-2YP2TVDT.js";
10
+ import "./chunk-2WPW7OT6.js";
11
+ import "./chunk-YUIHSKR6.js";
12
12
  import "./chunk-D424ZQGI.js";
13
- import "./chunk-B2CPS4QU.js";
13
+ import "./chunk-H7OZRFJB.js";
14
14
  import "./chunk-K3NQKI34.js";
15
15
  export {
16
16
  findOpenClawSession,
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ parseArgs
4
+ } from "./chunk-D424ZQGI.js";
5
+ import "./chunk-K3NQKI34.js";
6
+
7
+ // src/commands/join.ts
8
+ async function run(args) {
9
+ const { positional, flags } = parseArgs(args, {
10
+ summary: { type: "string" },
11
+ justification: { type: "string" },
12
+ memory: { type: "string" },
13
+ "skip-verify": { type: "boolean" }
14
+ });
15
+ const variantName = positional[0];
16
+ if (!variantName) {
17
+ console.error(
18
+ "Usage: volute mind join <variant-name> [--summary '...'] [--justification '...'] [--memory '...'] [--skip-verify]"
19
+ );
20
+ process.exit(1);
21
+ }
22
+ console.log(`Joining variant ${variantName}...`);
23
+ const { daemonFetch } = await import("./daemon-client-I42FK2BF.js");
24
+ const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
25
+ const client = getClient();
26
+ const statusRes = await daemonFetch(
27
+ urlOf(client.api.minds[":name"].$url({ param: { name: variantName } }))
28
+ );
29
+ if (!statusRes.ok) {
30
+ const data2 = await statusRes.json().catch(() => ({}));
31
+ console.error(data2.error ?? `Variant '${variantName}' not found (HTTP ${statusRes.status})`);
32
+ process.exit(1);
33
+ }
34
+ const statusData = await statusRes.json();
35
+ const parentName = statusData.parent;
36
+ if (!parentName) {
37
+ console.error(`'${variantName}' is not a variant \u2014 it has no parent mind`);
38
+ process.exit(1);
39
+ }
40
+ const res = await daemonFetch(
41
+ urlOf(
42
+ client.api.minds[":name"].variants[":variant"].merge.$url({
43
+ param: { name: parentName, variant: variantName }
44
+ })
45
+ ),
46
+ {
47
+ method: "POST",
48
+ headers: { "Content-Type": "application/json" },
49
+ body: JSON.stringify({
50
+ ...flags.summary && { summary: flags.summary },
51
+ ...flags.justification && { justification: flags.justification },
52
+ ...flags.memory && { memory: flags.memory },
53
+ ...flags["skip-verify"] && { skipVerify: true }
54
+ })
55
+ }
56
+ );
57
+ const data = await res.json();
58
+ if (!res.ok) {
59
+ console.error(data.error ?? "Failed to join variant");
60
+ process.exit(1);
61
+ }
62
+ console.log(`Variant ${variantName} joined and cleaned up.`);
63
+ }
64
+ export {
65
+ run
66
+ };
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ resolveMindName
4
+ } from "./chunk-NAOW2CLO.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-JGFVMROS.js";
8
+ import {
9
+ parseArgs
10
+ } from "./chunk-D424ZQGI.js";
11
+ import "./chunk-H7OZRFJB.js";
12
+ import "./chunk-K3NQKI34.js";
13
+
14
+ // src/commands/chat/list.ts
15
+ async function run(args) {
16
+ const { flags } = parseArgs(args, {
17
+ mind: { type: "string" }
18
+ });
19
+ const mindName = resolveMindName(flags);
20
+ const res = await daemonFetch(`/api/minds/${encodeURIComponent(mindName)}/conversations`);
21
+ if (!res.ok) {
22
+ console.error(`Failed to list conversations: ${res.status}`);
23
+ process.exit(1);
24
+ }
25
+ const convs = await res.json();
26
+ if (convs.length === 0) {
27
+ console.log("No conversations.");
28
+ return;
29
+ }
30
+ for (const conv of convs) {
31
+ const label = conv.type === "channel" ? `#${conv.name}` : conv.title ?? conv.id.slice(0, 8);
32
+ const time = new Date(
33
+ conv.updated_at.endsWith("Z") ? conv.updated_at : `${conv.updated_at}Z`
34
+ ).toLocaleString();
35
+ console.log(` ${label} (${conv.type}) ${time}`);
36
+ }
37
+ }
38
+ export {
39
+ run
40
+ };
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- daemonFetch
4
- } from "./chunk-WGOGUMPO.js";
5
2
  import {
6
3
  resolveMindName
7
4
  } from "./chunk-NAOW2CLO.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-JGFVMROS.js";
8
8
  import {
9
9
  parseArgs
10
10
  } from "./chunk-D424ZQGI.js";
11
- import "./chunk-B2CPS4QU.js";
11
+ import "./chunk-H7OZRFJB.js";
12
12
  import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // src/commands/shared/log.ts
@@ -5,10 +5,10 @@ import {
5
5
  } from "./chunk-SSI47XP2.js";
6
6
  import {
7
7
  daemonFetch
8
- } from "./chunk-WGOGUMPO.js";
8
+ } from "./chunk-JGFVMROS.js";
9
9
  import {
10
- voluteHome
11
- } from "./chunk-B2CPS4QU.js";
10
+ voluteUserHome
11
+ } from "./chunk-H7OZRFJB.js";
12
12
  import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // src/commands/login.ts
@@ -32,7 +32,7 @@ async function run(_args) {
32
32
  role,
33
33
  sessionId
34
34
  } = await res.json();
35
- const sessionPath = resolve(voluteHome(), "cli-session.json");
35
+ const sessionPath = resolve(voluteUserHome(), "cli-session.json");
36
36
  try {
37
37
  writeFileSync(sessionPath, JSON.stringify({ sessionId, username: name }), { mode: 384 });
38
38
  } catch (err) {
@@ -8,11 +8,11 @@ import {
8
8
  import {
9
9
  readSystemsConfig,
10
10
  writeSystemsConfig
11
- } from "./chunk-HFCBO2GL.js";
11
+ } from "./chunk-KDGS53OS.js";
12
12
  import {
13
13
  parseArgs
14
14
  } from "./chunk-D424ZQGI.js";
15
- import "./chunk-B2CPS4QU.js";
15
+ import "./chunk-H7OZRFJB.js";
16
16
  import "./chunk-K3NQKI34.js";
17
17
 
18
18
  // src/commands/pages/login.ts
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  daemonFetch
4
- } from "./chunk-WGOGUMPO.js";
4
+ } from "./chunk-JGFVMROS.js";
5
5
  import {
6
- voluteHome
7
- } from "./chunk-B2CPS4QU.js";
6
+ voluteUserHome
7
+ } from "./chunk-H7OZRFJB.js";
8
8
  import "./chunk-K3NQKI34.js";
9
9
 
10
10
  // src/commands/logout.ts
11
11
  import { existsSync, readFileSync, unlinkSync } from "fs";
12
12
  import { resolve } from "path";
13
13
  async function run(_args) {
14
- const sessionPath = resolve(voluteHome(), "cli-session.json");
14
+ const sessionPath = resolve(voluteUserHome(), "cli-session.json");
15
15
  if (!existsSync(sessionPath)) {
16
16
  console.log("Not logged in");
17
17
  return;
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  deleteSystemsConfig
4
- } from "./chunk-HFCBO2GL.js";
5
- import "./chunk-B2CPS4QU.js";
4
+ } from "./chunk-KDGS53OS.js";
5
+ import "./chunk-H7OZRFJB.js";
6
6
  import "./chunk-K3NQKI34.js";
7
7
 
8
8
  // src/commands/pages/logout.ts
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ resolveMindName
4
+ } from "./chunk-NAOW2CLO.js";
2
5
  import {
3
6
  daemonFetch
4
- } from "./chunk-WGOGUMPO.js";
7
+ } from "./chunk-JGFVMROS.js";
5
8
  import {
6
9
  getClient,
7
10
  urlOf
8
11
  } from "./chunk-4RQBJWQX.js";
9
- import {
10
- resolveMindName
11
- } from "./chunk-NAOW2CLO.js";
12
12
  import {
13
13
  parseArgs
14
14
  } from "./chunk-D424ZQGI.js";
15
- import "./chunk-B2CPS4QU.js";
15
+ import "./chunk-H7OZRFJB.js";
16
16
  import "./chunk-K3NQKI34.js";
17
17
 
18
18
  // src/commands/logs.ts
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- daemonFetch
4
- } from "./chunk-WGOGUMPO.js";
5
2
  import {
6
3
  resolveMindName
7
4
  } from "./chunk-NAOW2CLO.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-JGFVMROS.js";
8
8
  import {
9
9
  parseArgs
10
10
  } from "./chunk-D424ZQGI.js";
11
- import "./chunk-B2CPS4QU.js";
11
+ import "./chunk-H7OZRFJB.js";
12
12
  import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // src/commands/shared/merge.ts
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ deliverMessage,
4
+ extractTextContent,
5
+ recordInbound
6
+ } from "./chunk-OQZH4PBB.js";
7
+ import "./chunk-KDGS53OS.js";
8
+ import "./chunk-K5NAC55T.js";
9
+ import "./chunk-PHSAT7YL.js";
10
+ import "./chunk-USUXRNVD.js";
11
+ import "./chunk-IAYBDWVG.js";
12
+ import "./chunk-VIVMW2H2.js";
13
+ import "./chunk-2WPW7OT6.js";
14
+ import "./chunk-YUIHSKR6.js";
15
+ import "./chunk-AW7PFDVN.js";
16
+ import "./chunk-RKQEHRBB.js";
17
+ import "./chunk-IKRVFPWU.js";
18
+ import "./chunk-T6HKBWXZ.js";
19
+ import "./chunk-H7OZRFJB.js";
20
+ import "./chunk-K3NQKI34.js";
21
+ export {
22
+ deliverMessage,
23
+ extractTextContent,
24
+ recordInbound
25
+ };
@@ -0,0 +1,110 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ logger_default
4
+ } from "./chunk-YUIHSKR6.js";
5
+ import {
6
+ getDb,
7
+ minds,
8
+ voluteSystemDir
9
+ } from "./chunk-H7OZRFJB.js";
10
+ import "./chunk-K3NQKI34.js";
11
+
12
+ // src/lib/migrate-registry-to-db.ts
13
+ import { existsSync, readFileSync, renameSync } from "fs";
14
+ import { resolve } from "path";
15
+ async function migrateRegistryToDb() {
16
+ const systemDir = voluteSystemDir();
17
+ const mindsJsonPath = resolve(systemDir, "minds.json");
18
+ const variantsJsonPath = resolve(systemDir, "variants.json");
19
+ if (!existsSync(mindsJsonPath) && !existsSync(variantsJsonPath)) return;
20
+ const db = await getDb();
21
+ let mindEntries = [];
22
+ let mindsParseOk = true;
23
+ if (existsSync(mindsJsonPath)) {
24
+ try {
25
+ mindEntries = JSON.parse(readFileSync(mindsJsonPath, "utf-8"));
26
+ } catch (err) {
27
+ mindsParseOk = false;
28
+ logger_default.error("failed to parse minds.json during migration", { error: err });
29
+ }
30
+ }
31
+ let allVariants = {};
32
+ let variantsParseOk = true;
33
+ if (existsSync(variantsJsonPath)) {
34
+ try {
35
+ allVariants = JSON.parse(readFileSync(variantsJsonPath, "utf-8"));
36
+ } catch (err) {
37
+ variantsParseOk = false;
38
+ logger_default.error("failed to parse variants.json during migration", { error: err });
39
+ }
40
+ }
41
+ let mindFailCount = 0;
42
+ for (const entry of mindEntries) {
43
+ try {
44
+ await db.insert(minds).values({
45
+ name: entry.name,
46
+ port: entry.port,
47
+ stage: entry.stage ?? "sprouted",
48
+ template: entry.template ?? null,
49
+ template_hash: entry.templateHash ?? null,
50
+ running: entry.running ? 1 : 0,
51
+ created_at: entry.created
52
+ }).onConflictDoNothing();
53
+ } catch (err) {
54
+ mindFailCount++;
55
+ logger_default.warn(`failed to migrate mind ${entry.name} to DB`, { error: err });
56
+ }
57
+ }
58
+ let variantFailCount = 0;
59
+ for (const [mindName, variants] of Object.entries(allVariants)) {
60
+ for (const v of variants) {
61
+ try {
62
+ await db.insert(minds).values({
63
+ name: `${mindName}@${v.name}`,
64
+ port: v.port,
65
+ parent: mindName,
66
+ dir: v.path,
67
+ branch: v.branch,
68
+ running: v.running ? 1 : 0,
69
+ created_at: v.created
70
+ }).onConflictDoNothing();
71
+ } catch (err) {
72
+ variantFailCount++;
73
+ logger_default.warn(`failed to migrate variant ${mindName}@${v.name} to DB`, { error: err });
74
+ }
75
+ }
76
+ }
77
+ if (mindFailCount > 0) {
78
+ logger_default.error(`${mindFailCount} mind(s) failed to migrate \u2014 minds.json will not be renamed`);
79
+ }
80
+ if (variantFailCount > 0) {
81
+ logger_default.error(
82
+ `${variantFailCount} variant(s) failed to migrate \u2014 variants.json will not be renamed`
83
+ );
84
+ }
85
+ if (mindsParseOk && mindFailCount === 0) {
86
+ try {
87
+ if (existsSync(mindsJsonPath)) {
88
+ renameSync(mindsJsonPath, `${mindsJsonPath}.bak`);
89
+ }
90
+ } catch (err) {
91
+ logger_default.warn("failed to rename minds.json to .bak", { error: err });
92
+ }
93
+ }
94
+ if (variantsParseOk && variantFailCount === 0) {
95
+ try {
96
+ if (existsSync(variantsJsonPath)) {
97
+ renameSync(variantsJsonPath, `${variantsJsonPath}.bak`);
98
+ }
99
+ } catch (err) {
100
+ logger_default.warn("failed to rename variants.json to .bak", { error: err });
101
+ }
102
+ }
103
+ const count = mindEntries.length + Object.values(allVariants).flat().length;
104
+ if (count > 0) {
105
+ logger_default.info(`migrated ${count} entries from JSON to DB`);
106
+ }
107
+ }
108
+ export {
109
+ migrateRegistryToDb
110
+ };
@@ -6,63 +6,63 @@ async function run(args) {
6
6
  const subcommand = args[0];
7
7
  switch (subcommand) {
8
8
  case "create":
9
- await import("./create-4YBRTTJS.js").then((m) => m.run(args.slice(1)));
9
+ await import("./create-QWV73WXD.js").then((m) => m.run(args.slice(1)));
10
10
  break;
11
11
  case "start":
12
- await import("./start-O5JQASRC.js").then((m) => m.run(args.slice(1)));
12
+ await import("./start-EUJSS5R4.js").then((m) => m.run(args.slice(1)));
13
13
  break;
14
14
  case "stop":
15
- await import("./stop-2SOG5NYF.js").then((m) => m.run(args.slice(1)));
15
+ await import("./stop-3XAITBBF.js").then((m) => m.run(args.slice(1)));
16
16
  break;
17
17
  case "restart":
18
- await import("./restart-CCK7D6TV.js").then((m) => m.run(args.slice(1)));
18
+ await import("./restart-6ESL3NBO.js").then((m) => m.run(args.slice(1)));
19
19
  break;
20
20
  case "delete":
21
- await import("./delete-27OYNK25.js").then((m) => m.run(args.slice(1)));
21
+ await import("./delete-4JYGD4VN.js").then((m) => m.run(args.slice(1)));
22
22
  break;
23
23
  case "list":
24
- await import("./status-FZBEBM7Q.js").then((m) => m.run(args.slice(1)));
24
+ await import("./status-77YEPHMW.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-FZBEBM7Q.js").then((m) => m.run(rest));
31
+ await import("./status-77YEPHMW.js").then((m) => m.run(rest));
32
32
  break;
33
33
  }
34
34
  case "logs": {
35
35
  const rest = args.slice(1);
36
36
  const logsArgs = transformMindFlag(rest);
37
- await import("./logs-3CART7O7.js").then((m) => m.run(logsArgs));
37
+ await import("./logs-U35JR2KE.js").then((m) => m.run(logsArgs));
38
38
  break;
39
39
  }
40
40
  case "upgrade":
41
- await import("./upgrade-QCCO33BK.js").then((m) => m.run(args.slice(1)));
41
+ await import("./upgrade-HA47CS4C.js").then((m) => m.run(args.slice(1)));
42
42
  break;
43
43
  case "import":
44
- await import("./import-XIB7UV4S.js").then((m) => m.run(args.slice(1)));
44
+ await import("./import-SRTQXBGH.js").then((m) => m.run(args.slice(1)));
45
45
  break;
46
46
  case "export":
47
- await import("./export-HP4G5DQC.js").then((m) => m.run(args.slice(1)));
48
- break;
49
- case "connect":
50
- await import("./connector-G722WXAU.js").then((m) => m.run(["connect", ...args.slice(1)]));
51
- break;
52
- case "disconnect":
53
- await import("./connector-G722WXAU.js").then((m) => m.run(["disconnect", ...args.slice(1)]));
47
+ await import("./export-BOJQWBMA.js").then((m) => m.run(args.slice(1)));
54
48
  break;
55
49
  case "seed":
56
- await import("./seed-E5OQGWX3.js").then((m) => m.run(args.slice(1)));
50
+ await import("./seed-SSUCYYDF.js").then((m) => m.run(args.slice(1)));
57
51
  break;
58
52
  case "sprout":
59
- await import("./sprout-QL74KR2X.js").then((m) => m.run(args.slice(1)));
53
+ await import("./sprout-IJVVKSJ2.js").then((m) => m.run(args.slice(1)));
60
54
  break;
61
55
  case "sleep":
62
- await import("./mind-sleep-DTV7L44D.js").then((m) => m.run(args.slice(1)));
56
+ await import("./mind-sleep-BTSWQNAC.js").then((m) => m.run(args.slice(1)));
63
57
  break;
64
58
  case "wake":
65
- await import("./mind-wake-PFN4FN3T.js").then((m) => m.run(args.slice(1)));
59
+ await import("./mind-wake-SBAKIDVP.js").then((m) => m.run(args.slice(1)));
60
+ break;
61
+ case "split":
62
+ await import("./split-TKJ5OT3P.js").then((m) => m.run(args.slice(1)));
63
+ break;
64
+ case "join":
65
+ await import("./join-J4QU42DL.js").then((m) => m.run(args.slice(1)));
66
66
  break;
67
67
  case "--help":
68
68
  case "-h":
@@ -91,14 +91,14 @@ function printUsage() {
91
91
  volute mind list
92
92
  volute mind status [name]
93
93
  volute mind logs [name] [--follow] [-n N]
94
- volute mind connect <type> [--mind <name>]
95
- volute mind disconnect <type> [--mind <name>]
96
94
  volute mind sprout
97
95
  volute mind sleep [name] [--wake-at <time>]
98
96
  volute mind wake [name]
99
- volute mind upgrade [name] [--template <name>] [--continue]
97
+ volute mind split <name> [--from <mind>] [--soul "..."] [--port N] [--no-start] [--json]
98
+ volute mind join <variant-name> [--summary "..." --justification "..." --memory "..."] [--skip-verify]
99
+ volute mind upgrade [name] [--template <name>] [--continue] [--accept]
100
100
  volute mind import <path> [--name <name>] [--session <path>] [--template <name>]
101
- volute mind export <name> [--include-env] [--include-identity] [--include-connectors] [--include-history] [--include-sessions] [--all] [--output <path>]
101
+ volute mind export <name> [--include-env] [--include-identity] [--include-history] [--include-sessions] [--all] [--output <path>]
102
102
 
103
103
  Mind name can be omitted (where shown as [name]) if VOLUTE_MIND is set.`);
104
104
  }
@@ -4,11 +4,10 @@ import {
4
4
  markIdle,
5
5
  onMindEvent,
6
6
  stopAll
7
- } from "./chunk-NWI2425I.js";
8
- import "./chunk-J2CO4WEV.js";
9
- import "./chunk-WBHMQ5OZ.js";
7
+ } from "./chunk-K5NAC55T.js";
8
+ import "./chunk-VIVMW2H2.js";
10
9
  import "./chunk-YUIHSKR6.js";
11
- import "./chunk-B2CPS4QU.js";
10
+ import "./chunk-H7OZRFJB.js";
12
11
  import "./chunk-K3NQKI34.js";
13
12
  export {
14
13
  getActiveMinds,
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ MindManager,
4
+ getMindManager,
5
+ initMindManager
6
+ } from "./chunk-PHSAT7YL.js";
7
+ import "./chunk-USUXRNVD.js";
8
+ import "./chunk-2WPW7OT6.js";
9
+ import "./chunk-YUIHSKR6.js";
10
+ import "./chunk-RKQEHRBB.js";
11
+ import "./chunk-IKRVFPWU.js";
12
+ import "./chunk-H7OZRFJB.js";
13
+ import "./chunk-K3NQKI34.js";
14
+ export {
15
+ MindManager,
16
+ getMindManager,
17
+ initMindManager
18
+ };