volute 0.24.0 → 0.26.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 (114) hide show
  1. package/README.md +15 -20
  2. package/dist/{activity-events-4O37J7PD.js → activity-events-ZMBAKLUF.js} +2 -2
  3. package/dist/api.d.ts +590 -10
  4. package/dist/{auth-HM2RSPY7.js → auth-4TV573WE.js} +2 -2
  5. package/dist/{channel-HZOSHGNF.js → channel-ZVZV42UD.js} +3 -3
  6. package/dist/{chunk-NOBRGACV.js → chunk-2VO7453N.js} +56 -19
  7. package/dist/{chunk-OOW675I3.js → chunk-3CFRE2VC.js} +931 -775
  8. package/dist/{chunk-PHHKNGA3.js → chunk-3TV4GLFO.js} +2 -2
  9. package/dist/{chunk-4TJ72QQ3.js → chunk-5Y3PBKW6.js} +3 -3
  10. package/dist/{chunk-BFK6SOEJ.js → chunk-J2CO4WEV.js} +1 -1
  11. package/dist/{chunk-TQDITGES.js → chunk-LX22GRG7.js} +10 -13
  12. package/dist/{chunk-E7GOKNOT.js → chunk-NWI2425I.js} +1 -1
  13. package/dist/{chunk-2767L2RZ.js → chunk-OZFKBXD6.js} +1 -1
  14. package/dist/{chunk-XLC342FO.js → chunk-SIAG3QMM.js} +14 -1
  15. package/dist/{chunk-RVKR2R7F.js → chunk-SSI47XP2.js} +10 -2
  16. package/dist/chunk-TZKJLDQN.js +78 -0
  17. package/dist/{chunk-P3W36ZGD.js → chunk-USNBKHYG.js} +33 -5
  18. package/dist/chunk-UTL75LP6.js +113 -0
  19. package/dist/{chunk-3AIBT4TW.js → chunk-V63B7DX3.js} +24 -1
  20. package/dist/{chunk-33XAVCS4.js → chunk-WBHMQ5OZ.js} +49 -0
  21. package/dist/{chunk-TRQEV3CD.js → chunk-WGOGUMPO.js} +22 -3
  22. package/dist/chunk-XOXLRRR2.js +176 -0
  23. package/dist/{chunk-JTDFJWI2.js → chunk-YJA7P64S.js} +1 -1
  24. package/dist/chunk-ZYGKG6VC.js +22 -0
  25. package/dist/cli.js +44 -20
  26. package/dist/{cloud-sync-DIU3OCPV.js → cloud-sync-NI2K3C7G.js} +11 -9
  27. package/dist/{connector-M6XFI6GM.js → connector-G722WXAU.js} +4 -4
  28. package/dist/{create-VDQJER52.js → create-4YBRTTJS.js} +1 -1
  29. package/dist/{daemon-client-JOVQZ52X.js → daemon-client-Z7FAJ6JW.js} +1 -1
  30. package/dist/{daemon-restart-YMPEATQH.js → daemon-restart-BJZ3O4U4.js} +6 -5
  31. package/dist/daemon.js +982 -340
  32. package/dist/{delete-2MRR4JX5.js → delete-27OYNK25.js} +1 -1
  33. package/dist/{down-674SX2IZ.js → down-7UKFMJJZ.js} +4 -4
  34. package/dist/{env-2FPOZK37.js → env-M336ONDP.js} +4 -4
  35. package/dist/{export-IKFAPRAO.js → export-HP4G5DQC.js} +1 -1
  36. package/dist/{file-KT3UIQM3.js → file-HUDKTRAS.js} +3 -3
  37. package/dist/{history-46WZN5CN.js → history-B64GTFTD.js} +3 -3
  38. package/dist/{import-FRDPQPJ2.js → import-XIB7UV4S.js} +2 -2
  39. package/dist/{log-6SGSSR3D.js → log-PBFNILJ4.js} +3 -3
  40. package/dist/{login-UO6AOVEA.js → login-6U7U6BNG.js} +1 -1
  41. package/dist/login-B5E7N7MY.js +46 -0
  42. package/dist/logout-XSJRYS3U.js +39 -0
  43. package/dist/{logs-HRBONI5I.js → logs-3CART7O7.js} +3 -3
  44. package/dist/{merge-KSFJKX6T.js → merge-VK2HSKMA.js} +3 -3
  45. package/dist/{message-delivery-S7BCNV6Y.js → message-delivery-MS5JYPZX.js} +11 -9
  46. package/dist/{mind-KPLCRKQA.js → mind-HZ3QSDDJ.js} +17 -17
  47. package/dist/{mind-activity-tracker-NMDDEV3K.js → mind-activity-tracker-4G6FURY2.js} +3 -3
  48. package/dist/{mind-manager-ZNRIYEK3.js → mind-manager-VVK67AY3.js} +6 -4
  49. package/dist/{mind-sleep-GHPTSAYN.js → mind-sleep-DTV7L44D.js} +3 -3
  50. package/dist/{mind-wake-BJDJFMDF.js → mind-wake-PFN4FN3T.js} +3 -3
  51. package/dist/notes-37FW2UR2.js +230 -0
  52. package/dist/{package-S5YF25XV.js → package-VZWLXPHV.js} +3 -1
  53. package/dist/{pages-TWR6U7DS.js → pages-DIIT5HMQ.js} +1 -1
  54. package/dist/{publish-BZNHKUUK.js → publish-HQV7YREB.js} +4 -4
  55. package/dist/{pull-D32SPFVU.js → pull-2MB4SK3C.js} +3 -3
  56. package/dist/{register-U2UO6TC4.js → register-EFND67FQ.js} +1 -1
  57. package/dist/{restart-5BMNV7KU.js → restart-CCK7D6TV.js} +3 -3
  58. package/dist/sandbox-EHGFF52K.js +19 -0
  59. package/dist/{schedule-YEFDLVMJ.js → schedule-6F7ELB2M.js} +3 -3
  60. package/dist/{seed-6FEKB3YC.js → seed-E5OQGWX3.js} +1 -1
  61. package/dist/{send-IISDYFCL.js → send-IH6XZKPC.js} +6 -20
  62. package/dist/service-LLBV3R7M.js +122 -0
  63. package/dist/setup-F6TWFYGQ.js +371 -0
  64. package/dist/setup-YGAAIKKZ.js +17 -0
  65. package/dist/{shared-LWMNTTZN.js → shared-UMO4S7CC.js} +4 -4
  66. package/dist/{skill-BQOFACEI.js → skill-42LGFBQC.js} +13 -5
  67. package/dist/skills/dreaming/SKILL.md +68 -0
  68. package/dist/skills/dreaming/references/INSTALL.md +56 -0
  69. package/dist/skills/dreaming/scripts/dream.ts +289 -0
  70. package/dist/skills/dreaming/scripts/wake-context-dreams.sh +30 -0
  71. package/dist/skills/imagegen/SKILL.md +37 -0
  72. package/dist/skills/imagegen/references/INSTALL.md +13 -0
  73. package/dist/skills/imagegen/scripts/imagegen.ts +136 -0
  74. package/dist/skills/notes/SKILL.md +34 -0
  75. package/dist/skills/resonance/SKILL.md +73 -0
  76. package/dist/skills/resonance/assets/default-config.json +21 -0
  77. package/dist/skills/resonance/references/INSTALL.md +23 -0
  78. package/dist/skills/resonance/scripts/resonance.ts +1250 -0
  79. package/dist/skills/volute-mind/SKILL.md +23 -3
  80. package/dist/{sleep-manager-XXSWQQLE.js → sleep-manager-EE4NRN2Q.js} +11 -9
  81. package/dist/{sprout-CGSW4CF5.js → sprout-QL74KR2X.js} +5 -5
  82. package/dist/{start-C7XITZ5O.js → start-O5JQASRC.js} +3 -3
  83. package/dist/{status-SIRPLEZC.js → status-FZBEBM7Q.js} +3 -3
  84. package/dist/{status-LYS4NUOZ.js → status-WXD4HXRL.js} +3 -3
  85. package/dist/{stop-CVKBSLXY.js → stop-2SOG5NYF.js} +3 -3
  86. package/dist/up-SDMCSVI3.js +17 -0
  87. package/dist/{update-7XCZMYBT.js → update-5VUDAI3D.js} +6 -6
  88. package/dist/{upgrade-7RUIXGOO.js → upgrade-QCCO33BK.js} +1 -1
  89. package/dist/{variant-UGREB4G5.js → variant-WWLDY6D5.js} +4 -4
  90. package/dist/{version-notify-SZ75QRGO.js → version-notify-USFZBWMG.js} +11 -9
  91. package/dist/web-assets/assets/index-CUQ31ieL.js +69 -0
  92. package/dist/web-assets/assets/index-CW8NSl1o.css +1 -0
  93. package/dist/web-assets/favicon.png +0 -0
  94. package/dist/web-assets/index.html +5 -4
  95. package/dist/web-assets/logo.png +0 -0
  96. package/drizzle/0015_notes.sql +23 -0
  97. package/drizzle/0016_note_reactions_and_replies.sql +15 -0
  98. package/drizzle/meta/_journal.json +14 -0
  99. package/package.json +3 -1
  100. package/templates/_base/.init/.config/hooks/wake-context.sh +7 -0
  101. package/templates/_base/home/public/.gitkeep +0 -0
  102. package/templates/_base/src/lib/startup.ts +8 -0
  103. package/templates/claude/src/agent.ts +51 -1
  104. package/templates/claude/src/server.ts +1 -0
  105. package/templates/pi/package.json.tmpl +1 -0
  106. package/templates/pi/src/agent.ts +48 -1
  107. package/templates/pi/src/lib/subagents.ts +150 -0
  108. package/templates/pi/src/server.ts +1 -0
  109. package/dist/chunk-NWPT4ASZ.js +0 -89
  110. package/dist/service-FASYWLTC.js +0 -247
  111. package/dist/setup-BMLM2UTK.js +0 -230
  112. package/dist/up-OMHACRJL.js +0 -15
  113. package/dist/web-assets/assets/index-Bx9WDoaQ.js +0 -69
  114. package/dist/web-assets/assets/index-Clz8OhmJ.css +0 -1
@@ -0,0 +1,176 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ validateMindName
4
+ } from "./chunk-B2CPS4QU.js";
5
+
6
+ // src/lib/isolation.ts
7
+ import { execFileSync } from "child_process";
8
+ function isIsolationEnabled() {
9
+ return process.env.VOLUTE_ISOLATION === "user";
10
+ }
11
+ function mindUserName(mindName) {
12
+ const err = validateMindName(mindName);
13
+ if (err) throw new Error(`Invalid mind name for isolation: ${err}`);
14
+ const prefix = process.env.VOLUTE_USER_PREFIX ?? "mind-";
15
+ return `${prefix}${mindName}`;
16
+ }
17
+ function findNextMacId(type) {
18
+ const idField = type === "Users" ? "UniqueID" : "PrimaryGroupID";
19
+ let output;
20
+ try {
21
+ output = execFileSync("dscl", [".", "-list", `/${type}`, idField], { encoding: "utf-8" });
22
+ } catch (err) {
23
+ throw new Error(
24
+ `Failed to query ${type} via dscl: ${err instanceof Error ? err.message : err}`
25
+ );
26
+ }
27
+ const ids = /* @__PURE__ */ new Set();
28
+ for (const line of output.split("\n")) {
29
+ const parts = line.trim().split(/\s+/);
30
+ const id = parseInt(parts[parts.length - 1], 10);
31
+ if (!Number.isNaN(id)) ids.add(id);
32
+ }
33
+ let next = 401;
34
+ while (ids.has(next)) next++;
35
+ return next;
36
+ }
37
+ function getVoluteGroupGid() {
38
+ if (process.platform === "darwin") {
39
+ const output2 = execFileSync("dscl", [".", "-read", "/Groups/volute", "PrimaryGroupID"], {
40
+ encoding: "utf-8"
41
+ });
42
+ const match = output2.match(/PrimaryGroupID:\s*(\d+)/);
43
+ if (!match) throw new Error("Could not read volute group GID");
44
+ return parseInt(match[1], 10);
45
+ }
46
+ const output = execFileSync("getent", ["group", "volute"], { encoding: "utf-8" });
47
+ const gid = parseInt(output.split(":")[2], 10);
48
+ if (Number.isNaN(gid)) throw new Error("Could not read volute group GID");
49
+ return gid;
50
+ }
51
+ function ensureVoluteGroup(opts) {
52
+ if (!opts?.force && !isIsolationEnabled()) return;
53
+ if (process.platform === "darwin") {
54
+ try {
55
+ execFileSync("dscl", [".", "-read", "/Groups/volute"], { stdio: "ignore" });
56
+ return;
57
+ } catch {
58
+ }
59
+ const gid = findNextMacId("Groups");
60
+ try {
61
+ execFileSync("dscl", [".", "-create", "/Groups/volute"]);
62
+ execFileSync("dscl", [".", "-create", "/Groups/volute", "PrimaryGroupID", String(gid)]);
63
+ execFileSync("dscl", [".", "-create", "/Groups/volute", "Password", "*"]);
64
+ } catch (err) {
65
+ const msg = err instanceof Error ? err.message : String(err);
66
+ throw new Error(`Failed to create volute group on macOS: ${msg}`);
67
+ }
68
+ return;
69
+ }
70
+ try {
71
+ execFileSync("getent", ["group", "volute"], { stdio: "ignore" });
72
+ } catch {
73
+ try {
74
+ execFileSync("groupadd", ["volute"], { stdio: ["ignore", "ignore", "pipe"] });
75
+ } catch (err) {
76
+ const stderr = err?.stderr?.toString().trim();
77
+ throw new Error(`Failed to create volute group${stderr ? `: ${stderr}` : ""}`);
78
+ }
79
+ }
80
+ }
81
+ function createMindUser(name, homeDir) {
82
+ if (!isIsolationEnabled()) return;
83
+ const user = mindUserName(name);
84
+ try {
85
+ execFileSync("id", [user], { stdio: "ignore" });
86
+ return;
87
+ } catch {
88
+ }
89
+ if (process.platform === "darwin") {
90
+ const uid = findNextMacId("Users");
91
+ const gid = getVoluteGroupGid();
92
+ const home = homeDir ?? "/var/empty";
93
+ try {
94
+ execFileSync("dscl", [".", "-create", `/Users/${user}`]);
95
+ execFileSync("dscl", [".", "-create", `/Users/${user}`, "UniqueID", String(uid)]);
96
+ execFileSync("dscl", [".", "-create", `/Users/${user}`, "PrimaryGroupID", String(gid)]);
97
+ execFileSync("dscl", [".", "-create", `/Users/${user}`, "UserShell", "/usr/bin/false"]);
98
+ execFileSync("dscl", [".", "-create", `/Users/${user}`, "NFSHomeDirectory", home]);
99
+ execFileSync("dscl", [".", "-create", `/Users/${user}`, "RealName", `Volute Mind: ${name}`]);
100
+ execFileSync("dscl", [".", "-create", `/Users/${user}`, "IsHidden", "1"]);
101
+ execFileSync("dscl", [".", "-append", "/Groups/volute", "GroupMembership", user]);
102
+ } catch (err) {
103
+ const msg = err instanceof Error ? err.message : String(err);
104
+ throw new Error(`Failed to create user ${user} on macOS: ${msg}`);
105
+ }
106
+ return;
107
+ }
108
+ try {
109
+ const args = ["-r", "-M", "-G", "volute", "-s", "/usr/sbin/nologin"];
110
+ if (homeDir) args.push("-d", homeDir);
111
+ args.push(user);
112
+ execFileSync("useradd", args, {
113
+ stdio: ["ignore", "ignore", "pipe"]
114
+ });
115
+ } catch (err) {
116
+ const stderr = err?.stderr?.toString().trim();
117
+ throw new Error(`Failed to create user ${user}${stderr ? `: ${stderr}` : ""}`);
118
+ }
119
+ }
120
+ function deleteMindUser(name) {
121
+ if (!isIsolationEnabled()) return;
122
+ const user = mindUserName(name);
123
+ if (process.platform === "darwin") {
124
+ try {
125
+ execFileSync("dscl", [".", "-delete", `/Users/${user}`], { stdio: "ignore" });
126
+ } catch {
127
+ }
128
+ try {
129
+ execFileSync("dscl", [".", "-delete", "/Groups/volute", "GroupMembership", user], {
130
+ stdio: "ignore"
131
+ });
132
+ } catch {
133
+ }
134
+ return;
135
+ }
136
+ try {
137
+ execFileSync("userdel", [user], { stdio: "ignore" });
138
+ } catch {
139
+ }
140
+ }
141
+ function wrapForIsolation(cmd, args, mindName) {
142
+ if (!isIsolationEnabled()) return [cmd, args];
143
+ const baseName = mindName.split("@", 2)[0];
144
+ const user = mindUserName(baseName);
145
+ if (process.platform === "darwin") {
146
+ return ["sudo", ["-u", user, "--", cmd, ...args]];
147
+ }
148
+ return ["runuser", ["-u", user, "--", cmd, ...args]];
149
+ }
150
+ function chownMindDir(dir, name) {
151
+ if (!isIsolationEnabled()) return;
152
+ const user = mindUserName(name);
153
+ const group = process.platform === "darwin" ? "volute" : user;
154
+ try {
155
+ execFileSync("chown", ["-R", `${user}:${group}`, dir], { stdio: ["ignore", "ignore", "pipe"] });
156
+ } catch (err) {
157
+ const stderr = err?.stderr?.toString().trim();
158
+ throw new Error(`Failed to chown ${dir} to ${user}:${group}${stderr ? `: ${stderr}` : ""}`);
159
+ }
160
+ try {
161
+ execFileSync("chmod", ["700", dir], { stdio: ["ignore", "ignore", "pipe"] });
162
+ } catch (err) {
163
+ const stderr = err?.stderr?.toString().trim();
164
+ throw new Error(`Failed to chmod ${dir}${stderr ? `: ${stderr}` : ""}`);
165
+ }
166
+ }
167
+
168
+ export {
169
+ isIsolationEnabled,
170
+ mindUserName,
171
+ ensureVoluteGroup,
172
+ createMindUser,
173
+ deleteMindUser,
174
+ wrapForIsolation,
175
+ chownMindDir
176
+ };
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  wrapForIsolation
4
- } from "./chunk-NWPT4ASZ.js";
4
+ } from "./chunk-XOXLRRR2.js";
5
5
 
6
6
  // src/lib/exec.ts
7
7
  import { execFile as execFileCb, execFileSync, spawn } from "child_process";
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/lib/read-stdin.ts
4
+ import { isatty } from "tty";
5
+ async function readStdin() {
6
+ if (isatty(0)) return void 0;
7
+ const chunks = [];
8
+ try {
9
+ for await (const chunk of process.stdin) {
10
+ chunks.push(chunk);
11
+ }
12
+ } catch (err) {
13
+ console.error(`Failed to read from stdin: ${err instanceof Error ? err.message : String(err)}`);
14
+ process.exit(1);
15
+ }
16
+ const text = Buffer.concat(chunks).toString().replace(/\r?\n$/, "");
17
+ return text || void 0;
18
+ }
19
+
20
+ export {
21
+ readStdin
22
+ };
package/dist/cli.js CHANGED
@@ -9,64 +9,85 @@ if (!process.env.VOLUTE_HOME) {
9
9
  var command = process.argv[2];
10
10
  var args = process.argv.slice(3);
11
11
  if (command === "--version" || command === "-v") {
12
- const { default: pkg } = await import("./package-S5YF25XV.js");
12
+ const { default: pkg } = await import("./package-VZWLXPHV.js");
13
13
  console.log(pkg.version);
14
14
  process.exit(0);
15
15
  }
16
+ var ungatedCommands = /* @__PURE__ */ new Set(["setup", "--help", "-h", "--version", "-v", "update", void 0]);
17
+ if (!ungatedCommands.has(command)) {
18
+ const { isSetupComplete, migrateSetupConfig } = await import("./setup-YGAAIKKZ.js");
19
+ migrateSetupConfig();
20
+ if (!isSetupComplete()) {
21
+ console.error("Volute is not set up. Run `volute setup` first.");
22
+ process.exit(1);
23
+ }
24
+ }
16
25
  switch (command) {
26
+ case "setup":
27
+ await import("./setup-F6TWFYGQ.js").then((m) => m.run(args));
28
+ break;
17
29
  case "mind":
18
- await import("./mind-KPLCRKQA.js").then((m) => m.run(args));
30
+ await import("./mind-HZ3QSDDJ.js").then((m) => m.run(args));
19
31
  break;
20
32
  case "send":
21
- await import("./send-IISDYFCL.js").then((m) => m.run(args));
33
+ await import("./send-IH6XZKPC.js").then((m) => m.run(args));
22
34
  break;
23
35
  case "history":
24
- await import("./history-46WZN5CN.js").then((m) => m.run(args));
36
+ await import("./history-B64GTFTD.js").then((m) => m.run(args));
25
37
  break;
26
38
  case "variant":
27
- await import("./variant-UGREB4G5.js").then((m) => m.run(args));
39
+ await import("./variant-WWLDY6D5.js").then((m) => m.run(args));
28
40
  break;
29
41
  case "channel":
30
- await import("./channel-HZOSHGNF.js").then((m) => m.run(args));
42
+ await import("./channel-ZVZV42UD.js").then((m) => m.run(args));
31
43
  break;
32
44
  case "schedule":
33
- await import("./schedule-YEFDLVMJ.js").then((m) => m.run(args));
45
+ await import("./schedule-6F7ELB2M.js").then((m) => m.run(args));
34
46
  break;
35
47
  case "skill":
36
- await import("./skill-BQOFACEI.js").then((m) => m.run(args));
48
+ await import("./skill-42LGFBQC.js").then((m) => m.run(args));
37
49
  break;
38
50
  case "shared":
39
- await import("./shared-LWMNTTZN.js").then((m) => m.run(args));
51
+ await import("./shared-UMO4S7CC.js").then((m) => m.run(args));
40
52
  break;
41
53
  case "file":
42
- await import("./file-KT3UIQM3.js").then((m) => m.run(args));
54
+ await import("./file-HUDKTRAS.js").then((m) => m.run(args));
43
55
  break;
44
56
  case "env":
45
- await import("./env-2FPOZK37.js").then((m) => m.run(args));
57
+ await import("./env-M336ONDP.js").then((m) => m.run(args));
46
58
  break;
47
59
  case "up":
48
- await import("./up-OMHACRJL.js").then((m) => m.run(args));
60
+ await import("./up-SDMCSVI3.js").then((m) => m.run(args));
49
61
  break;
50
62
  case "down":
51
- await import("./down-674SX2IZ.js").then((m) => m.run(args));
63
+ await import("./down-7UKFMJJZ.js").then((m) => m.run(args));
52
64
  break;
53
65
  case "restart":
54
- await import("./daemon-restart-YMPEATQH.js").then((m) => m.run(args));
66
+ await import("./daemon-restart-BJZ3O4U4.js").then((m) => m.run(args));
55
67
  break;
56
68
  case "service":
57
- await import("./service-FASYWLTC.js").then((m) => m.run(args));
69
+ await import("./service-LLBV3R7M.js").then((m) => m.run(args));
58
70
  break;
59
71
  case "update":
60
- await import("./update-7XCZMYBT.js").then((m) => m.run(args));
72
+ await import("./update-5VUDAI3D.js").then((m) => m.run(args));
61
73
  break;
62
74
  case "status":
63
- await import("./status-SIRPLEZC.js").then((m) => m.run(args));
75
+ await import("./status-FZBEBM7Q.js").then((m) => m.run(args));
76
+ break;
77
+ case "notes":
78
+ await import("./notes-37FW2UR2.js").then((m) => m.run(args));
64
79
  break;
65
80
  case "pages":
66
- await import("./pages-TWR6U7DS.js").then((m) => m.run(args));
81
+ await import("./pages-DIIT5HMQ.js").then((m) => m.run(args));
67
82
  break;
68
83
  case "auth":
69
- await import("./auth-HM2RSPY7.js").then((m) => m.run(args));
84
+ await import("./auth-4TV573WE.js").then((m) => m.run(args));
85
+ break;
86
+ case "login":
87
+ await import("./login-B5E7N7MY.js").then((m) => m.run(args));
88
+ break;
89
+ case "logout":
90
+ await import("./logout-XSJRYS3U.js").then((m) => m.run(args));
70
91
  break;
71
92
  case "--help":
72
93
  case "-h":
@@ -97,12 +118,15 @@ Configuration:
97
118
  env Manage environment variables
98
119
  file Mind-to-mind file sharing
99
120
  shared Collaborative shared repository
121
+ notes Read and write notes
100
122
  pages Publish web pages
101
123
 
102
124
  System:
125
+ setup First-time setup
103
126
  up / down / restart Daemon control
127
+ login / logout CLI authentication
104
128
  update Update volute
105
- service install/uninstall Auto-start service
129
+ service status Check service status
106
130
  auth register/login/logout volute.systems account
107
131
 
108
132
  Options:
@@ -3,19 +3,21 @@ import {
3
3
  deliverMessage,
4
4
  getAuthHeaders,
5
5
  getWebhookUrl
6
- } from "./chunk-OOW675I3.js";
6
+ } from "./chunk-3CFRE2VC.js";
7
7
  import "./chunk-HFCBO2GL.js";
8
- import "./chunk-E7GOKNOT.js";
9
- import "./chunk-BFK6SOEJ.js";
10
- import "./chunk-NOBRGACV.js";
11
- import "./chunk-XLC342FO.js";
12
- import "./chunk-PHU4DEAJ.js";
13
- import "./chunk-33XAVCS4.js";
8
+ import "./chunk-NWI2425I.js";
9
+ import "./chunk-J2CO4WEV.js";
10
+ import "./chunk-2VO7453N.js";
11
+ import "./chunk-UTL75LP6.js";
12
+ import "./chunk-WBHMQ5OZ.js";
14
13
  import {
15
14
  logger_default
16
15
  } from "./chunk-YUIHSKR6.js";
17
- import "./chunk-JTDFJWI2.js";
18
- import "./chunk-NWPT4ASZ.js";
16
+ import "./chunk-SIAG3QMM.js";
17
+ import "./chunk-PHU4DEAJ.js";
18
+ import "./chunk-YJA7P64S.js";
19
+ import "./chunk-XOXLRRR2.js";
20
+ import "./chunk-TZKJLDQN.js";
19
21
  import "./chunk-B2CPS4QU.js";
20
22
  import "./chunk-K3NQKI34.js";
21
23
 
@@ -1,7 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  promptLine
4
- } from "./chunk-RVKR2R7F.js";
4
+ } from "./chunk-SSI47XP2.js";
5
+ import {
6
+ daemonFetch
7
+ } from "./chunk-WGOGUMPO.js";
5
8
  import {
6
9
  getClient,
7
10
  urlOf
@@ -12,9 +15,6 @@ import {
12
15
  import {
13
16
  parseArgs
14
17
  } from "./chunk-D424ZQGI.js";
15
- import {
16
- daemonFetch
17
- } from "./chunk-TRQEV3CD.js";
18
18
  import "./chunk-B2CPS4QU.js";
19
19
  import "./chunk-K3NQKI34.js";
20
20
 
@@ -17,7 +17,7 @@ async function run(args) {
17
17
  process.exit(1);
18
18
  }
19
19
  const skills = flags.skills === "none" ? [] : flags.skills ? flags.skills.split(",") : void 0;
20
- const { daemonFetch } = await import("./daemon-client-JOVQZ52X.js");
20
+ const { daemonFetch } = await import("./daemon-client-Z7FAJ6JW.js");
21
21
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
22
22
  const client = getClient();
23
23
  const res = await daemonFetch(urlOf(client.api.minds.$url()), {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  daemonFetch
4
- } from "./chunk-TRQEV3CD.js";
4
+ } from "./chunk-WGOGUMPO.js";
5
5
  import "./chunk-B2CPS4QU.js";
6
6
  import "./chunk-K3NQKI34.js";
7
7
  export {
@@ -1,20 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  run
4
- } from "./chunk-TQDITGES.js";
4
+ } from "./chunk-LX22GRG7.js";
5
5
  import {
6
6
  stopDaemon
7
- } from "./chunk-2767L2RZ.js";
7
+ } from "./chunk-OZFKBXD6.js";
8
8
  import {
9
9
  getServiceMode,
10
10
  modeLabel,
11
11
  pollHealth,
12
12
  readDaemonConfig,
13
13
  restartService
14
- } from "./chunk-3AIBT4TW.js";
14
+ } from "./chunk-V63B7DX3.js";
15
+ import "./chunk-YJA7P64S.js";
16
+ import "./chunk-XOXLRRR2.js";
15
17
  import "./chunk-D424ZQGI.js";
16
- import "./chunk-JTDFJWI2.js";
17
- import "./chunk-NWPT4ASZ.js";
18
+ import "./chunk-TZKJLDQN.js";
18
19
  import "./chunk-B2CPS4QU.js";
19
20
  import "./chunk-K3NQKI34.js";
20
21