volute 0.19.0 → 0.21.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 (104) hide show
  1. package/README.md +68 -68
  2. package/dist/activity-events-3WHHCOBB.js +15 -0
  3. package/dist/{archive-ZCFOSTKB.js → archive-4ZQYK5MN.js} +4 -2
  4. package/dist/auth-HM2RSPY7.js +37 -0
  5. package/dist/{channel-PUQKGSQM.js → channel-BOOMFULW.js} +2 -2
  6. package/dist/{chunk-OTWLI7F4.js → chunk-5462YKWP.js} +12 -9
  7. package/dist/{chunk-2TJGRJ4O.js → chunk-7LPTHFIL.js} +64 -59
  8. package/dist/chunk-A4S7H6G6.js +56 -0
  9. package/dist/chunk-AKPFNL7L.js +148 -0
  10. package/dist/{chunk-EBGCNDMM.js → chunk-B2CPS4QU.js} +128 -114
  11. package/dist/{chunk-FCDU5BFX.js → chunk-HFCBO2GL.js} +2 -2
  12. package/dist/chunk-HGCDWKSP.js +97 -0
  13. package/dist/{chunk-DYZGP3EW.js → chunk-IPJXU366.js} +1 -1
  14. package/dist/{chunk-VE4D3GOP.js → chunk-J5A3DF2U.js} +2 -2
  15. package/dist/{chunk-WC6ZHVRL.js → chunk-KFI7TQJ6.js} +2 -2
  16. package/dist/{chunk-AW7P4EVV.js → chunk-KTJGZ7M7.js} +55 -7
  17. package/dist/{chunk-4KPUF5JD.js → chunk-L3LHXZD7.js} +18 -5
  18. package/dist/{chunk-OGXOMR65.js → chunk-NWPT4ASZ.js} +1 -1
  19. package/dist/{chunk-FGV2H4TX.js → chunk-OGZYB5GL.js} +312 -268
  20. package/dist/{chunk-SCUDS4US.js → chunk-ON3FF5JA.js} +1 -1
  21. package/dist/{chunk-EMQSAY3B.js → chunk-PC6R6UUW.js} +6 -5
  22. package/dist/{chunk-VDWCHYTS.js → chunk-PHU4DEAJ.js} +1 -1
  23. package/dist/{chunk-7NO7EV5Z.js → chunk-Q7AITQ44.js} +2 -2
  24. package/dist/{chunk-32VR2EOH.js → chunk-QUJUKM4U.js} +2 -2
  25. package/dist/{chunk-VQWDC6UK.js → chunk-SGPEZ32F.js} +46 -1
  26. package/dist/{chunk-RHEGSQFJ.js → chunk-WSLPZF72.js} +1 -1
  27. package/dist/cli.js +59 -111
  28. package/dist/{connector-JBVNZ7VK.js → connector-PYT5UOTZ.js} +6 -6
  29. package/dist/connectors/discord.js +2 -2
  30. package/dist/connectors/slack.js +2 -2
  31. package/dist/connectors/telegram.js +2 -2
  32. package/dist/{create-HP4OVVHF.js → create-WIDA3M4C.js} +1 -1
  33. package/dist/{daemon-client-ITWUCNFO.js → daemon-client-ZHCDL4RS.js} +2 -2
  34. package/dist/{daemon-restart-JMZM3QY4.js → daemon-restart-BH67ZOTE.js} +8 -8
  35. package/dist/daemon.js +2872 -1301
  36. package/dist/{delete-BSU7K3RY.js → delete-LOIANQGD.js} +1 -1
  37. package/dist/down-LIOQ5JDH.js +14 -0
  38. package/dist/{env-A3LMO777.js → env-4PHIHTF4.js} +2 -2
  39. package/dist/{export-GCDNQCF3.js → export-XD6PJBQP.js} +19 -8
  40. package/dist/file-X4L5TTOL.js +204 -0
  41. package/dist/{history-WNK3DFUM.js → history-HTEKRNID.js} +2 -2
  42. package/dist/{import-M63VIUJ5.js → import-E433B4KG.js} +3 -3
  43. package/dist/{log-PPPZDVEF.js → log-SRO5Q6AD.js} +2 -2
  44. package/dist/{login-HNH3EUQV.js → login-UO6AOVEA.js} +4 -4
  45. package/dist/{logout-I5CB5UZS.js → logout-UKD5LA37.js} +2 -2
  46. package/dist/{logs-SF2IMJN4.js → logs-HNTNNBDW.js} +2 -2
  47. package/dist/{merge-33C237A4.js → merge-B6SYTGI7.js} +2 -2
  48. package/dist/{mind-PQ5NCPSU.js → mind-BIDOF65R.js} +27 -11
  49. package/dist/mind-activity-tracker-PGC3DBJ7.js +18 -0
  50. package/dist/{mind-manager-RVCFROAY.js → mind-manager-3V2NXX4I.js} +5 -6
  51. package/dist/{package-MYE2ZJLV.js → package-HQR52XSG.js} +1 -1
  52. package/dist/{pages-AXCOSY3P.js → pages-KQBR5TAZ.js} +6 -6
  53. package/dist/{publish-YB377JB7.js → publish-OJ4QMXVZ.js} +12 -9
  54. package/dist/{pull-XAEWQJ47.js → pull-GRQAXM2E.js} +2 -2
  55. package/dist/{register-VSPCMHKX.js → register-U2UO6TC4.js} +5 -5
  56. package/dist/registry-D2BSQ2X5.js +42 -0
  57. package/dist/{restart-IQKMCK5M.js → restart-CIDAKGG2.js} +3 -6
  58. package/dist/{schedule-LMX7GAQZ.js → schedule-NLR3LZLY.js} +27 -7
  59. package/dist/{seed-J43YDKXG.js → seed-3H2MRREW.js} +2 -2
  60. package/dist/{send-KVIZIGCE.js → send-RP2TA7SG.js} +132 -36
  61. package/dist/{service-LUR7WDO7.js → service-TVNEORO7.js} +31 -13
  62. package/dist/{setup-OH3PJUJO.js → setup-OZDYCKDI.js} +25 -34
  63. package/dist/{shared-KO35ZM44.js → shared-DCQ2UXOM.js} +4 -4
  64. package/dist/{skill-BCVNI6TV.js → skill-Q2Y6PQ3L.js} +2 -2
  65. package/dist/skills/orientation/SKILL.md +2 -2
  66. package/dist/skills/volute-mind/SKILL.md +38 -8
  67. package/dist/{sprout-VBEX63LX.js → sprout-6Z6C42YM.js} +34 -30
  68. package/dist/{start-I5JYB65M.js → start-JR6CUUWF.js} +3 -6
  69. package/dist/{status-D7E5HHBV.js → status-5XDGYHKP.js} +2 -2
  70. package/dist/{status-JCJAOXTW.js → status-LV34BG6G.js} +6 -5
  71. package/dist/{status-4ESFLGH4.js → status-Z7NAFMBI.js} +5 -5
  72. package/dist/{stop-NBVKEFQQ.js → stop-VKPGK25U.js} +2 -5
  73. package/dist/template-hash-BIMA4ILT.js +8 -0
  74. package/dist/{up-WG65SWJU.js → up-7BGDMFRT.js} +5 -5
  75. package/dist/{update-FJIHDJKM.js → update-4WT7VWHW.js} +5 -5
  76. package/dist/{update-check-MWE5AH4U.js → update-check-F5Z3ALXX.js} +2 -2
  77. package/dist/{upgrade-AIT24B5I.js → upgrade-ZEC2GGFO.js} +1 -1
  78. package/dist/{variant-63ZWO2W7.js → variant-A4I7PHXS.js} +16 -24
  79. package/dist/version-notify-TFS2U5CF.js +173 -0
  80. package/dist/web-assets/assets/index-BR3gtK3E.css +1 -0
  81. package/dist/web-assets/assets/index-CWmrZRQd.js +64 -0
  82. package/dist/web-assets/index.html +2 -2
  83. package/drizzle/0012_activity.sql +11 -0
  84. package/drizzle/meta/0012_snapshot.json +7 -0
  85. package/drizzle/meta/_journal.json +7 -0
  86. package/package.json +1 -1
  87. package/templates/_base/home/.config/routes.json +2 -2
  88. package/templates/_base/home/VOLUTE.md +1 -1
  89. package/templates/_base/src/lib/daemon-client.ts +22 -0
  90. package/templates/_base/src/lib/transparency.ts +1 -1
  91. package/templates/claude/.init/.config/routes.json +7 -1
  92. package/templates/pi/.init/.config/routes.json +7 -1
  93. package/templates/pi/src/agent.ts +11 -5
  94. package/templates/pi/src/lib/session-context-extension.ts +6 -4
  95. package/templates/pi/src/server.ts +2 -0
  96. package/dist/chunk-UJ6GHNR7.js +0 -675
  97. package/dist/chunk-Z524RFCJ.js +0 -36
  98. package/dist/db-5ZVC6MQF.js +0 -10
  99. package/dist/delivery-manager-ISTJMZDW.js +0 -16
  100. package/dist/down-ZY35KMHR.js +0 -14
  101. package/dist/schema-5BW7DFZI.js +0 -24
  102. package/dist/variants-JAGWGBXG.js +0 -26
  103. package/dist/web-assets/assets/index-BAbuRsVF.css +0 -1
  104. package/dist/web-assets/assets/index-CiQhSKi_.js +0 -63
@@ -2,9 +2,10 @@
2
2
  import {
3
3
  mindDir,
4
4
  stateDir
5
- } from "./chunk-EBGCNDMM.js";
5
+ } from "./chunk-B2CPS4QU.js";
6
6
 
7
7
  // src/lib/archive.ts
8
+ import { execFileSync } from "child_process";
8
9
  import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from "fs";
9
10
  import { join, relative, resolve } from "path";
10
11
  import AdmZip from "adm-zip";
@@ -26,10 +27,32 @@ function walkDir(dir, base, skipSessions) {
26
27
  }
27
28
  return results;
28
29
  }
30
+ function gitListFiles(dir) {
31
+ try {
32
+ const tracked = execFileSync("git", ["ls-files"], { cwd: dir, encoding: "utf-8" });
33
+ const untracked = execFileSync("git", ["ls-files", "--others", "--exclude-standard"], {
34
+ cwd: dir,
35
+ encoding: "utf-8"
36
+ });
37
+ const files = [...tracked.trim().split("\n"), ...untracked.trim().split("\n")].filter(Boolean);
38
+ return [...new Set(files)];
39
+ } catch (err) {
40
+ const msg = err instanceof Error ? err.message : String(err);
41
+ if (!msg.includes("not a git repository")) {
42
+ console.error(`Warning: git ls-files failed, .gitignore rules will not apply: ${msg}`);
43
+ }
44
+ return null;
45
+ }
46
+ }
47
+ function isHomeOnlyArchive(manifest) {
48
+ return manifest.format === "home-only";
49
+ }
29
50
  function createExportArchive(options) {
30
51
  const {
31
52
  name,
32
53
  template,
54
+ stage,
55
+ includeSrc = false,
33
56
  includeEnv = false,
34
57
  includeIdentity = false,
35
58
  includeConnectors = false,
@@ -39,12 +62,34 @@ function createExportArchive(options) {
39
62
  const dir = mindDir(name);
40
63
  const state = stateDir(name);
41
64
  const zip = new AdmZip();
42
- const files = walkDir(dir, void 0, includeSessions);
43
- for (const relPath of files) {
44
- if (!includeIdentity && relPath.startsWith(join(".mind", "identity"))) continue;
45
- if (!includeConnectors && relPath.startsWith(join(".mind", "connectors"))) continue;
46
- const fullPath = resolve(dir, relPath);
47
- zip.addFile(`mind/${relPath}`, readFileSync(fullPath));
65
+ const format = includeSrc ? "full" : "home-only";
66
+ if (includeSrc) {
67
+ const files = walkDir(dir, void 0, includeSessions);
68
+ for (const relPath of files) {
69
+ if (!includeIdentity && relPath.startsWith(join(".mind", "identity"))) continue;
70
+ if (!includeConnectors && relPath.startsWith(join(".mind", "connectors"))) continue;
71
+ const fullPath = resolve(dir, relPath);
72
+ zip.addFile(`mind/${relPath}`, readFileSync(fullPath));
73
+ }
74
+ } else {
75
+ const gitFiles = gitListFiles(dir);
76
+ const homeFiles = gitFiles ? gitFiles.filter((f) => f.startsWith("home/") || f.startsWith("home\\")) : walkDir(resolve(dir, "home"), dir);
77
+ for (const relPath of homeFiles) {
78
+ const fullPath = resolve(dir, relPath);
79
+ if (existsSync(fullPath)) {
80
+ zip.addFile(`mind/${relPath}`, readFileSync(fullPath));
81
+ }
82
+ }
83
+ const mindInternalDir = resolve(dir, ".mind");
84
+ if (existsSync(mindInternalDir)) {
85
+ const mindFiles = walkDir(mindInternalDir, dir, includeSessions);
86
+ for (const relPath of mindFiles) {
87
+ if (!includeIdentity && relPath.startsWith(join(".mind", "identity"))) continue;
88
+ if (!includeConnectors && relPath.startsWith(join(".mind", "connectors"))) continue;
89
+ const fullPath = resolve(dir, relPath);
90
+ zip.addFile(`mind/${relPath}`, readFileSync(fullPath));
91
+ }
92
+ }
48
93
  }
49
94
  if (existsSync(state)) {
50
95
  const channelsPath = resolve(state, "channels.json");
@@ -81,6 +126,8 @@ function createExportArchive(options) {
81
126
  template,
82
127
  voluteVersion,
83
128
  exportedAt: (/* @__PURE__ */ new Date()).toISOString(),
129
+ format,
130
+ stage,
84
131
  includes: {
85
132
  env: includeEnv,
86
133
  identity: includeIdentity,
@@ -152,6 +199,7 @@ function extractArchive(archivePath, destDir) {
152
199
  }
153
200
 
154
201
  export {
202
+ isHomeOnlyArchive,
155
203
  createExportArchive,
156
204
  addHistoryToArchive,
157
205
  readManifest,
@@ -4,18 +4,18 @@ import {
4
4
  } from "./chunk-YUIHSKR6.js";
5
5
  import {
6
6
  gitExec
7
- } from "./chunk-DYZGP3EW.js";
7
+ } from "./chunk-IPJXU366.js";
8
8
  import {
9
9
  isIsolationEnabled,
10
10
  mindUserName
11
- } from "./chunk-OGXOMR65.js";
11
+ } from "./chunk-NWPT4ASZ.js";
12
12
  import {
13
13
  voluteHome
14
- } from "./chunk-EBGCNDMM.js";
14
+ } from "./chunk-B2CPS4QU.js";
15
15
 
16
16
  // src/lib/shared.ts
17
17
  import { execFileSync } from "child_process";
18
- import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
18
+ import { chmodSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "fs";
19
19
  import { resolve } from "path";
20
20
  function readWorktreeGitDir(worktreePath) {
21
21
  const dotGit = resolve(worktreePath, ".git");
@@ -34,7 +34,20 @@ function sharedDir() {
34
34
  async function ensureSharedRepo() {
35
35
  const dir = sharedDir();
36
36
  mkdirSync(dir, { recursive: true });
37
- if (existsSync(resolve(dir, ".git"))) return;
37
+ if (existsSync(resolve(dir, ".git"))) {
38
+ try {
39
+ await gitExec(["rev-parse", "HEAD"], { cwd: dir });
40
+ return;
41
+ } catch (err) {
42
+ const msg = err instanceof Error ? err.message : String(err);
43
+ if (msg.includes("unknown revision") || msg.includes("bad default revision")) {
44
+ logger_default.warn("shared repo has no commits, re-initializing");
45
+ rmSync(resolve(dir, ".git"), { recursive: true, force: true });
46
+ } else {
47
+ throw err;
48
+ }
49
+ }
50
+ }
38
51
  const initArgs = isIsolationEnabled() ? ["init", "--shared=group"] : ["init"];
39
52
  await gitExec(initArgs, { cwd: dir });
40
53
  await gitExec(["checkout", "-b", "main"], { cwd: dir });
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  validateMindName
4
- } from "./chunk-EBGCNDMM.js";
4
+ } from "./chunk-B2CPS4QU.js";
5
5
 
6
6
  // src/lib/isolation.ts
7
7
  import { execFileSync } from "child_process";