volute 0.18.0 → 0.20.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 (117) hide show
  1. package/README.md +67 -67
  2. package/dist/activity-events-OMXKXD5N.js +16 -0
  3. package/dist/archive-ZCFOSTKB.js +15 -0
  4. package/dist/{channel-SLURLIRV.js → channel-PUQKGSQM.js} +60 -7
  5. package/dist/{chunk-6BDNWYKG.js → chunk-32VR2EOH.js} +2 -2
  6. package/dist/chunk-5XNT2472.js +36 -0
  7. package/dist/{chunk-QJIIHU32.js → chunk-7NO7EV5Z.js} +2 -2
  8. package/dist/{chunk-6DVBMLVN.js → chunk-7UFKREVW.js} +2 -2
  9. package/dist/chunk-AW7P4EVV.js +159 -0
  10. package/dist/{chunk-2Y77MCFG.js → chunk-DYZGP3EW.js} +2 -2
  11. package/dist/{chunk-M77QBTEH.js → chunk-EBGCNDMM.js} +24 -14
  12. package/dist/{chunk-37X7ECMF.js → chunk-FCDU5BFX.js} +1 -1
  13. package/dist/chunk-FGSYHIS3.js +891 -0
  14. package/dist/chunk-GZ7DW4YL.js +97 -0
  15. package/dist/chunk-IKMY5X76.js +375 -0
  16. package/dist/chunk-NSE7VJQA.js +159 -0
  17. package/dist/{chunk-GSPWIM5E.js → chunk-O6ASDHFO.js} +79 -7
  18. package/dist/{chunk-ZCEYUUID.js → chunk-OGXOMR65.js} +2 -1
  19. package/dist/{chunk-AYB7XAWO.js → chunk-PUVXOZ6T.js} +120 -279
  20. package/dist/{chunk-GK4E7LM7.js → chunk-RHEGSQFJ.js} +1 -1
  21. package/dist/{chunk-MVSXRMJJ.js → chunk-SCUDS4US.js} +1 -1
  22. package/dist/chunk-TIWH32HP.js +227 -0
  23. package/dist/{chunk-FW5API7X.js → chunk-UJ6GHNR7.js} +2 -2
  24. package/dist/chunk-UU7A7KLB.js +58 -0
  25. package/dist/{chunk-OYSZNX5I.js → chunk-VDWCHYTS.js} +1 -1
  26. package/dist/{chunk-OJQ47SCA.js → chunk-WC6ZHVRL.js} +1 -1
  27. package/dist/chunk-YUIHSKR6.js +72 -0
  28. package/dist/cli.js +43 -25
  29. package/dist/{connector-3ELFMI2R.js → connector-JBVNZ7VK.js} +6 -6
  30. package/dist/connectors/discord.js +2 -2
  31. package/dist/connectors/slack.js +2 -2
  32. package/dist/connectors/telegram.js +2 -2
  33. package/dist/{create-ZWHCRT5F.js → create-HP4OVVHF.js} +6 -4
  34. package/dist/{daemon-client-ODKDUYDE.js → daemon-client-ITWUCNFO.js} +2 -2
  35. package/dist/{daemon-restart-2HVTHZAT.js → daemon-restart-KPSWNYTH.js} +6 -6
  36. package/dist/daemon.js +2463 -1707
  37. package/dist/db-C2CJ46ZU.js +10 -0
  38. package/dist/{delete-6G6WEX4F.js → delete-BSU7K3RY.js} +1 -1
  39. package/dist/delivery-manager-CSG7LXA4.js +16 -0
  40. package/dist/down-ZY35KMHR.js +14 -0
  41. package/dist/{env-6IDWGBUH.js → env-A3LMO777.js} +6 -6
  42. package/dist/export-6QBUOQGC.js +100 -0
  43. package/dist/file-C57SK5DK.js +204 -0
  44. package/dist/{history-YUEKTJ2N.js → history-WNK3DFUM.js} +6 -6
  45. package/dist/{import-EDGRLIGO.js → import-XEC34Y4Z.js} +3 -3
  46. package/dist/log-PPPZDVEF.js +39 -0
  47. package/dist/{login-ORQDXLBM.js → login-HNH3EUQV.js} +2 -2
  48. package/dist/{logout-XC5AUO5I.js → logout-I5CB5UZS.js} +2 -2
  49. package/dist/{logs-GYOR3L2L.js → logs-SF2IMJN4.js} +6 -6
  50. package/dist/merge-33C237A4.js +46 -0
  51. package/dist/{mind-OJN6RBZW.js → mind-Z7CKD6DG.js} +14 -10
  52. package/dist/mind-activity-tracker-624QLQLC.js +19 -0
  53. package/dist/mind-manager-3DMYKZPB.js +18 -0
  54. package/dist/{package-OKLFO7UY.js → package-4NHAVUUI.js} +5 -3
  55. package/dist/{pages-6IV4VQTU.js → pages-4DGQT7ZA.js} +2 -2
  56. package/dist/{publish-Q4RPSJLL.js → publish-TAJUET4I.js} +22 -5
  57. package/dist/pull-XAEWQJ47.js +39 -0
  58. package/dist/{register-LDE6LRXY.js → register-VSPCMHKX.js} +2 -2
  59. package/dist/{restart-YFAWFS5T.js → restart-IQKMCK5M.js} +6 -6
  60. package/dist/{schedule-AGYLDMNS.js → schedule-FFZG23IW.js} +31 -11
  61. package/dist/schema-GFH6RV3W.js +26 -0
  62. package/dist/{seed-AP4Q7RZ7.js → seed-J43YDKXG.js} +7 -4
  63. package/dist/{send-BNDTLUPM.js → send-KVIZIGCE.js} +8 -8
  64. package/dist/{service-U7MZ2H7F.js → service-LUR7WDO7.js} +6 -6
  65. package/dist/{setup-DJKIZKGW.js → setup-52YRV7VP.js} +23 -7
  66. package/dist/shared-KO35ZM44.js +39 -0
  67. package/dist/{skill-2Y42P4JY.js → skill-BCVNI6TV.js} +6 -6
  68. package/{templates/_base/_skills → dist/skills}/orientation/SKILL.md +1 -1
  69. package/{templates/_base/_skills → dist/skills}/sessions/SKILL.md +2 -2
  70. package/{templates/_base/_skills → dist/skills}/volute-mind/SKILL.md +51 -3
  71. package/dist/{sprout-TJ3BHVOG.js → sprout-QN7Y4VVO.js} +38 -20
  72. package/dist/{start-3YYRXBKP.js → start-I5JYB65M.js} +6 -6
  73. package/dist/{status-VSFZYX7S.js → status-4ESFLGH4.js} +5 -5
  74. package/dist/status-D7E5HHBV.js +35 -0
  75. package/dist/{status-OKNA6AR3.js → status-FU2PFVVF.js} +5 -4
  76. package/dist/{stop-AA5K5LYG.js → stop-NBVKEFQQ.js} +6 -6
  77. package/dist/{up-7B3BWF2U.js → up-FS7CKM6V.js} +5 -5
  78. package/dist/{update-YAGN5ODG.js → update-FJIHDJKM.js} +5 -5
  79. package/dist/{update-check-APLTH4IN.js → update-check-MWE5AH4U.js} +2 -2
  80. package/dist/{upgrade-KXZCQSZN.js → upgrade-AIT24B5I.js} +1 -1
  81. package/dist/{variant-X5QFG6KK.js → variant-63ZWO2W7.js} +4 -4
  82. package/dist/variants-JAGWGBXG.js +26 -0
  83. package/dist/web-assets/assets/index-CUZTZzaW.js +64 -0
  84. package/dist/web-assets/assets/index-adVuCkqy.css +1 -0
  85. package/dist/web-assets/index.html +2 -2
  86. package/drizzle/0010_delivery_queue.sql +12 -0
  87. package/drizzle/0011_rename_human_to_brain.sql +1 -0
  88. package/drizzle/0012_activity.sql +11 -0
  89. package/drizzle/meta/0010_snapshot.json +7 -0
  90. package/drizzle/meta/0011_snapshot.json +7 -0
  91. package/drizzle/meta/0012_snapshot.json +7 -0
  92. package/drizzle/meta/_journal.json +21 -0
  93. package/package.json +5 -3
  94. package/templates/_base/.init/.config/hooks/startup-context.sh +1 -1
  95. package/templates/_base/.init/.config/scripts/session-reader.ts +3 -3
  96. package/templates/_base/home/.config/routes.json +2 -2
  97. package/templates/_base/home/VOLUTE.md +16 -1
  98. package/templates/_base/src/lib/auto-commit.ts +51 -14
  99. package/templates/_base/src/lib/daemon-client.ts +22 -0
  100. package/templates/_base/src/lib/router.ts +123 -1
  101. package/templates/_base/src/lib/transparency.ts +1 -1
  102. package/templates/_base/src/lib/types.ts +4 -0
  103. package/templates/_base/src/lib/volute-server.ts +91 -2
  104. package/templates/claude/.init/.config/routes.json +7 -1
  105. package/templates/claude/src/server.ts +2 -2
  106. package/templates/claude/volute-template.json +1 -2
  107. package/templates/pi/.init/.config/routes.json +7 -1
  108. package/templates/pi/src/agent.ts +12 -6
  109. package/templates/pi/src/lib/session-context-extension.ts +6 -4
  110. package/templates/pi/src/server.ts +2 -0
  111. package/templates/pi/volute-template.json +1 -2
  112. package/dist/chunk-PO5Q2AYN.js +0 -121
  113. package/dist/down-A56B5JLK.js +0 -14
  114. package/dist/mind-manager-Z7O7PN2O.js +0 -15
  115. package/dist/web-assets/assets/index-CtiimdWK.css +0 -1
  116. package/dist/web-assets/assets/index-kt1_EcuO.js +0 -63
  117. /package/{templates/_base/_skills → dist/skills}/memory/SKILL.md +0 -0
@@ -3,14 +3,25 @@ import {
3
3
  mindEnvPath,
4
4
  readEnv,
5
5
  writeEnv
6
- } from "./chunk-OYSZNX5I.js";
6
+ } from "./chunk-VDWCHYTS.js";
7
7
  import {
8
8
  parseArgs
9
9
  } from "./chunk-D424ZQGI.js";
10
10
 
11
11
  // src/commands/import.ts
12
- import { existsSync as existsSync2, mkdirSync as mkdirSync2, readdirSync, readFileSync as readFileSync2, statSync, writeFileSync as writeFileSync2 } from "fs";
13
- import { homedir } from "os";
12
+ import {
13
+ closeSync,
14
+ existsSync as existsSync2,
15
+ mkdirSync as mkdirSync2,
16
+ openSync,
17
+ readdirSync,
18
+ readFileSync as readFileSync2,
19
+ readSync,
20
+ rmSync,
21
+ statSync,
22
+ writeFileSync as writeFileSync2
23
+ } from "fs";
24
+ import { homedir, tmpdir } from "os";
14
25
  import { basename, resolve as resolve2 } from "path";
15
26
 
16
27
  // src/lib/volute-config.ts
@@ -20,7 +31,8 @@ function readJson(path) {
20
31
  if (!existsSync(path)) return null;
21
32
  try {
22
33
  return JSON.parse(readFileSync(path, "utf-8"));
23
- } catch {
34
+ } catch (err) {
35
+ console.error(`[volute-config] failed to parse ${path}: ${err}`);
24
36
  return null;
25
37
  }
26
38
  }
@@ -42,8 +54,13 @@ async function run(args) {
42
54
  session: { type: "string" },
43
55
  template: { type: "string" }
44
56
  });
45
- const wsDir = resolveWorkspace(positional[0]);
46
- const { daemonFetch } = await import("./daemon-client-ODKDUYDE.js");
57
+ const inputPath = positional[0];
58
+ if (inputPath && (inputPath.endsWith(".volute") || isZipFile(inputPath))) {
59
+ await importArchive(resolve2(inputPath), flags.name);
60
+ return;
61
+ }
62
+ const wsDir = resolveWorkspace(inputPath);
63
+ const { daemonFetch } = await import("./daemon-client-ITWUCNFO.js");
47
64
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
48
65
  const client = getClient();
49
66
  const res = await daemonFetch(urlOf(client.api.minds.import.$url()), {
@@ -66,6 +83,61 @@ ${data.message ?? `Imported mind: ${data.name} (port ${data.port})`}`);
66
83
  console.log(`
67
84
  volute mind start ${data.name}`);
68
85
  }
86
+ function isZipFile(path) {
87
+ const resolved = resolve2(path);
88
+ if (!existsSync2(resolved)) return false;
89
+ const fd = openSync(resolved, "r");
90
+ try {
91
+ const buf = Buffer.alloc(4);
92
+ const bytesRead = readSync(fd, buf, 0, 4, 0);
93
+ return bytesRead === 4 && buf[0] === 80 && buf[1] === 75 && buf[2] === 3 && buf[3] === 4;
94
+ } finally {
95
+ closeSync(fd);
96
+ }
97
+ }
98
+ async function importArchive(archivePath, nameOverride) {
99
+ if (!existsSync2(archivePath)) {
100
+ console.error(`File not found: ${archivePath}`);
101
+ process.exit(1);
102
+ }
103
+ const { extractArchive } = await import("./archive-ZCFOSTKB.js");
104
+ const tempDir = resolve2(tmpdir(), `volute-import-${Date.now()}`);
105
+ mkdirSync2(tempDir, { recursive: true });
106
+ let extracted;
107
+ try {
108
+ extracted = extractArchive(archivePath, tempDir);
109
+ } catch (err) {
110
+ rmSync(tempDir, { recursive: true, force: true });
111
+ console.error(`Failed to extract archive: ${err.message}`);
112
+ process.exit(1);
113
+ }
114
+ try {
115
+ const { daemonFetch } = await import("./daemon-client-ITWUCNFO.js");
116
+ const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
117
+ const client = getClient();
118
+ const res = await daemonFetch(urlOf(client.api.minds.import.$url()), {
119
+ method: "POST",
120
+ headers: { "Content-Type": "application/json" },
121
+ body: JSON.stringify({
122
+ archivePath: tempDir,
123
+ name: nameOverride,
124
+ manifest: extracted.manifest
125
+ })
126
+ });
127
+ const data = await res.json();
128
+ if (!res.ok) {
129
+ console.error(data.error ?? "Failed to import mind");
130
+ process.exit(1);
131
+ }
132
+ console.log(`
133
+ ${data.message ?? `Imported mind: ${data.name} (port ${data.port})`}`);
134
+ console.log(`
135
+ volute mind start ${data.name}`);
136
+ } catch (err) {
137
+ rmSync(tempDir, { recursive: true, force: true });
138
+ throw err;
139
+ }
140
+ }
69
141
  function resolveWorkspace(explicitPath) {
70
142
  if (explicitPath) {
71
143
  const wsDir = resolve2(explicitPath);
@@ -127,7 +199,7 @@ function sessionMatchesWorkspace(sessionPath, workspaceDir) {
127
199
  }
128
200
  function importPiSession(sessionFile, mindDirPath) {
129
201
  const homeDir = resolve2(mindDirPath, "home");
130
- const piSessionDir = resolve2(mindDirPath, ".volute/pi-sessions/main");
202
+ const piSessionDir = resolve2(mindDirPath, ".mind/pi-sessions/main");
131
203
  mkdirSync2(piSessionDir, { recursive: true });
132
204
  const content = readFileSync2(sessionFile, "utf-8");
133
205
  const lines = content.trim().split("\n");
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  validateMindName
4
- } from "./chunk-M77QBTEH.js";
4
+ } from "./chunk-EBGCNDMM.js";
5
5
 
6
6
  // src/lib/isolation.ts
7
7
  import { execFileSync } from "child_process";
@@ -80,6 +80,7 @@ function chownMindDir(dir, name) {
80
80
 
81
81
  export {
82
82
  isIsolationEnabled,
83
+ mindUserName,
83
84
  ensureVoluteGroup,
84
85
  createMindUser,
85
86
  deleteMindUser,