volute 0.42.0 → 0.43.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 (129) hide show
  1. package/dist/{accept-7YVHZKRD.js → accept-N5XULCXK.js} +1 -1
  2. package/dist/{activity-events-KFKVRZE3.js → activity-events-UISXY4Y5.js} +3 -3
  3. package/dist/{ai-service-3GBOJGUA.js → ai-service-FBCCEYF5.js} +8 -4
  4. package/dist/{archive-4PPYF7LL.js → archive-I32WHCJB.js} +3 -3
  5. package/dist/{auth-EAASQPTN.js → auth-3RIG6GKN.js} +4 -4
  6. package/dist/{bridge-WPYSOQKR.js → bridge-2PO3AI5D.js} +1 -1
  7. package/dist/{chat-7DOENBY2.js → chat-SDSX5TVV.js} +8 -8
  8. package/dist/{chunk-M2YMNTHK.js → chunk-2HIVYZDB.js} +1 -1
  9. package/dist/{chunk-TKOWXAHG.js → chunk-3WLWKOGM.js} +21 -6
  10. package/dist/{chunk-QPTQKGGF.js → chunk-57LBQ7JX.js} +1 -1
  11. package/dist/{chunk-VSUZE2PD.js → chunk-65OLHBCL.js} +13 -12
  12. package/dist/{chunk-K547QOCM.js → chunk-7G2EEYXX.js} +2 -2
  13. package/dist/{chunk-E7XWFDZL.js → chunk-AD46AYZQ.js} +1 -1
  14. package/dist/{chunk-CGPESELY.js → chunk-ATEX3ZPG.js} +21 -5
  15. package/dist/{chunk-WR7CSHQ4.js → chunk-C6ESRQZ7.js} +1 -1
  16. package/dist/{chunk-OSUF75I7.js → chunk-EE7SZJON.js} +2 -2
  17. package/dist/{chunk-5QG36RV7.js → chunk-EFL5UOY4.js} +3 -3
  18. package/dist/{chunk-JLX3GC7T.js → chunk-FSSUANZJ.js} +5 -5
  19. package/dist/{chunk-2YRTSK5K.js → chunk-FZ5TH5PF.js} +14 -11
  20. package/dist/{chunk-OEJFZHZZ.js → chunk-GZJFC76M.js} +1 -1
  21. package/dist/{chunk-KUJVCDWT.js → chunk-JVK6QQIC.js} +2 -2
  22. package/dist/{chunk-YLTIEEVL.js → chunk-K4EHBHPE.js} +3 -3
  23. package/dist/{chunk-MHFAWJCC.js → chunk-L3IV23ZG.js} +12 -1
  24. package/dist/{chunk-VBKRZCR7.js → chunk-M3PGGSBH.js} +1 -1
  25. package/dist/{chunk-G777ME4L.js → chunk-O3DXAR44.js} +2 -2
  26. package/dist/{chunk-KZAL7HEQ.js → chunk-ONM2AZFL.js} +1 -1
  27. package/dist/{chunk-52NMCDBS.js → chunk-PF2AB7VJ.js} +568 -378
  28. package/dist/chunk-PGPLCJPK.js +272 -0
  29. package/dist/{chunk-IFNSAOA4.js → chunk-RBNMDAKB.js} +4 -0
  30. package/dist/{chunk-62ICA2FF.js → chunk-SPLPKBES.js} +17 -1
  31. package/dist/{chunk-BLOAJLGI.js → chunk-XDTKJNW5.js} +1 -1
  32. package/dist/{chunk-IUZ3EV2D.js → chunk-YAMO2U3N.js} +1 -1
  33. package/dist/{chunk-4ZSUUBG5.js → chunk-YSV3VJQK.js} +55 -2
  34. package/dist/{chunk-RKBYFLOR.js → chunk-ZO7IQJKO.js} +3 -3
  35. package/dist/cli.js +22 -22
  36. package/dist/{clock-HP2TGMG5.js → clock-K43IMROX.js} +3 -3
  37. package/dist/{cloud-sync-3OPHFOYQ.js → cloud-sync-FRYNWKCR.js} +16 -17
  38. package/dist/{config-W7MS3PWY.js → config-TJLYUV3U.js} +3 -3
  39. package/dist/{conversations-FSZCUUYO.js → conversations-67WWW25C.js} +4 -4
  40. package/dist/{create-YNBZWD34.js → create-7W3LV3J7.js} +2 -2
  41. package/dist/{create-CJ2SR4EU.js → create-DF3KISTW.js} +1 -1
  42. package/dist/{daemon-client-EWDPOOHC.js → daemon-client-IYR4KCPU.js} +3 -1
  43. package/dist/{daemon-restart-RAKGR56L.js → daemon-restart-5GVZ5V3X.js} +7 -8
  44. package/dist/daemon.js +541 -440
  45. package/dist/{db-ZJJJYJBU.js → db-CZV62BOQ.js} +2 -2
  46. package/dist/{delete-4ND5PLE7.js → delete-BFMIGAIB.js} +1 -1
  47. package/dist/delivery-manager-5J2BE22P.js +32 -0
  48. package/dist/{delivery-router-FDBZJQOY.js → delivery-router-HXBHYHJM.js} +7 -5
  49. package/dist/down-RRNYIGCU.js +16 -0
  50. package/dist/echo-text-XKBJM6RV.js +32 -0
  51. package/dist/{env-XX2MBZCZ.js → env-VZ4MLFQW.js} +1 -1
  52. package/dist/{exec-ZDD7NEB4.js → exec-SJK7VUTC.js} +3 -4
  53. package/dist/{export-5DOQV2WM.js → export-7LPCIB5J.js} +4 -4
  54. package/dist/{extension-BCFYXI7A.js → extension-SEID47SR.js} +1 -1
  55. package/dist/{extensions-BTNIUS5J.js → extensions-76EGTMFY.js} +16 -17
  56. package/dist/{files-K2MEMV3W.js → files-LV7VAKPC.js} +4 -4
  57. package/dist/{import-V6QEHMPQ.js → import-XPECCRQ7.js} +8 -8
  58. package/dist/{isolation-F7ABZMDA.js → isolation-5AYEY55P.js} +5 -3
  59. package/dist/{join-4S3KT7NE.js → join-RXPXGV4L.js} +1 -1
  60. package/dist/{list-XJB5WII6.js → list-OXIAY3W7.js} +1 -1
  61. package/dist/{login-PHMTLNUF.js → login-KJSN4JDA.js} +3 -3
  62. package/dist/{login-YWD6PUOT.js → login-MY6ETFYB.js} +1 -1
  63. package/dist/{logout-Q2WICH4V.js → logout-NCG3TMDL.js} +1 -1
  64. package/dist/{logout-BP3R3CAA.js → logout-TMJGUQV2.js} +3 -3
  65. package/dist/message-delivery-WJBZFALY.js +34 -0
  66. package/dist/{mind-VXV6ZYZY.js → mind-QEWCR7FA.js} +18 -18
  67. package/dist/{mind-activity-tracker-HWVFE533.js → mind-activity-tracker-JHAT6456.js} +4 -4
  68. package/dist/{mind-history-TDUQFYAG.js → mind-history-VRO5A76U.js} +1 -1
  69. package/dist/{mind-list-2T353Q5G.js → mind-list-4D7J4CHD.js} +1 -1
  70. package/dist/{mind-profile-2HHR7LZ7.js → mind-profile-PEQYASQX.js} +1 -1
  71. package/dist/mind-service-ZBVUMJ5H.js +36 -0
  72. package/dist/{mind-sleep-4NXV4J4U.js → mind-sleep-YMBR3I35.js} +1 -1
  73. package/dist/{mind-status-CG66OXDK.js → mind-status-UO34ASXZ.js} +1 -1
  74. package/dist/{mind-wake-TNB54DBR.js → mind-wake-LCLGTXA2.js} +1 -1
  75. package/dist/{package-UWH5IM76.js → package-ZOI2KAYC.js} +1 -1
  76. package/dist/{read-JLR4NQXU.js → read-QVAXMTPV.js} +1 -1
  77. package/dist/{register-IQ2M4UO6.js → register-Y2H4PY5R.js} +1 -1
  78. package/dist/{registry-MDLNPTTI.js → registry-7LQHTRUX.js} +2 -2
  79. package/dist/{reject-N2D4CZND.js → reject-EV35X64Y.js} +1 -1
  80. package/dist/{restart-43A5MBGV.js → restart-FJQ662XJ.js} +1 -1
  81. package/dist/{sandbox-E7RWZDVG.js → sandbox-SJH3XOPZ.js} +4 -4
  82. package/dist/scheduler-BR6C6B3E.js +30 -0
  83. package/dist/{schema-HHYJDG7B.js → schema-LRUTFOER.js} +1 -1
  84. package/dist/{seed-YQAOIXIY.js → seed-KOG6KJAO.js} +1 -1
  85. package/dist/{seed-check-N5ALJBT6.js → seed-check-VLTVILOV.js} +1 -1
  86. package/dist/{seed-cmd-7KJS4LCA.js → seed-cmd-GJFENEJH.js} +3 -3
  87. package/dist/{seed-create-Z7NDRRGP.js → seed-create-YXO6R4KE.js} +4 -4
  88. package/dist/{seed-sprout-PYDMVVUL.js → seed-sprout-BBU64QXP.js} +8 -9
  89. package/dist/{send-KQECN2EL.js → send-ZBZWIH5V.js} +4 -4
  90. package/dist/{service-Q5OVY5AK.js → service-4EVZKGSA.js} +4 -5
  91. package/dist/{service-install-GTDUHP6R.js → service-install-SHRM6NHK.js} +5 -6
  92. package/dist/{setup-IYOUPCIK.js → setup-25MMJ3J4.js} +3 -3
  93. package/dist/{setup-VARJ7N6Z.js → setup-354PDHUF.js} +8 -10
  94. package/dist/{skill-E43BI34Y.js → skill-FKFHIJRR.js} +1 -1
  95. package/dist/{skills-YBCYVOPQ.js → skills-DPI3WZPQ.js} +5 -6
  96. package/dist/sleep-manager-BVU5D2AE.js +34 -0
  97. package/dist/{spirit-NJFAY5CZ.js → spirit-JQQHUVWR.js} +7 -8
  98. package/dist/{split-5IBUODEE.js → split-WBMZXBHF.js} +1 -1
  99. package/dist/{sprout-B27C2WGE.js → sprout-4WAYBUVV.js} +1 -1
  100. package/dist/{start-5AYFGNS7.js → start-5JE3TV66.js} +1 -1
  101. package/dist/{status-ECZHHSY5.js → status-WTU2WHXY.js} +12 -9
  102. package/dist/{stop-WJ6IG6OK.js → stop-AAMTG3TU.js} +1 -1
  103. package/dist/system-chat-KMQIP7VH.js +34 -0
  104. package/dist/{systems-5MA57Q7G.js → systems-VNB5WKSS.js} +4 -4
  105. package/dist/{tailscale-TIRTGM6E.js → tailscale-Q7ZJL7S7.js} +2 -2
  106. package/dist/{turn-tracker-W4TASMR7.js → turn-tracker-2GMKJQTN.js} +7 -5
  107. package/dist/up-7RSBEKW6.js +18 -0
  108. package/dist/{update-OPR4KU4M.js → update-EJ7Q77ZX.js} +9 -10
  109. package/dist/{update-check-OG27AL4Z.js → update-check-ACYYNKTW.js} +3 -3
  110. package/dist/{upgrade-QB7AHIKX.js → upgrade-37DAGF6H.js} +1 -1
  111. package/dist/{version-notify-TCKAX7ZA.js → version-notify-DCAIXXZB.js} +17 -18
  112. package/dist/web-assets/assets/{index-CrFAsfiE.js → index-DTDmEfPU.js} +2 -2
  113. package/dist/web-assets/index.html +1 -1
  114. package/drizzle/0010_delivery_queue_redrive.sql +10 -0
  115. package/drizzle/meta/_journal.json +7 -0
  116. package/package.json +1 -1
  117. package/templates/codex/src/server.ts +2 -8
  118. package/dist/chunk-GN52E2DP.js +0 -59
  119. package/dist/chunk-TFBQESH7.js +0 -179
  120. package/dist/delivery-manager-5Y35DOX3.js +0 -33
  121. package/dist/down-DS6WCT34.js +0 -17
  122. package/dist/echo-text-YP3JVLNA.js +0 -32
  123. package/dist/message-delivery-FPIL26WV.js +0 -41
  124. package/dist/mind-manager-OYOIBGK6.js +0 -33
  125. package/dist/mind-service-PR4PR4XI.js +0 -37
  126. package/dist/scheduler-KXUY2I7W.js +0 -31
  127. package/dist/sleep-manager-FJLASHHW.js +0 -35
  128. package/dist/system-chat-P6KVGW4T.js +0 -35
  129. package/dist/up-POJX6S5Y.js +0 -19
@@ -8,7 +8,7 @@
8
8
  <link rel="preconnect" href="https://fonts.googleapis.com" />
9
9
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
10
10
  <link href="https://fonts.googleapis.com/css2?family=Averia+Serif+Libre:wght@300;400;700&family=Fira+Code:wght@300;400;500;600&family=Averia+Sans+Libre:ital,wght@0,300;0,400;0,500;0,600;1,400&display=swap" rel="stylesheet" />
11
- <script type="module" crossorigin src="/assets/index-CrFAsfiE.js"></script>
11
+ <script type="module" crossorigin src="/assets/index-DTDmEfPU.js"></script>
12
12
  <link rel="stylesheet" crossorigin href="/assets/index-D7udpBCx.css">
13
13
  </head>
14
14
  <body>
@@ -0,0 +1,10 @@
1
+ -- Make delivery_queue an at-least-once queue: track attempts and a backoff
2
+ -- window so a redrive loop can re-deliver stranded rows without hot-looping.
3
+
4
+ ALTER TABLE `delivery_queue` ADD `attempts` integer DEFAULT 0 NOT NULL;--> statement-breakpoint
5
+ ALTER TABLE `delivery_queue` ADD `next_attempt_at` text;--> statement-breakpoint
6
+ -- Original delivery target (may be a variant name); redrive resolves the port from
7
+ -- this so a variant's stranded row is re-delivered to the variant, not the parent.
8
+ -- Nullable: legacy rows fall back to `mind` (the base name) at read time.
9
+ ALTER TABLE `delivery_queue` ADD `target_mind` text;--> statement-breakpoint
10
+ CREATE INDEX IF NOT EXISTS `idx_delivery_queue_status_next` ON `delivery_queue` (`status`, `next_attempt_at`);
@@ -71,6 +71,13 @@
71
71
  "when": 1775400000000,
72
72
  "tag": "0009_mind_notices",
73
73
  "breakpoints": true
74
+ },
75
+ {
76
+ "idx": 10,
77
+ "version": "6",
78
+ "when": 1775500000000,
79
+ "tag": "0010_delivery_queue_redrive",
80
+ "breakpoints": true
74
81
  }
75
82
  ]
76
83
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "volute",
3
- "version": "0.42.0",
3
+ "version": "0.43.0",
4
4
  "description": "CLI for creating and managing self-modifying AI minds powered by the Claude Agent SDK",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -15,13 +15,7 @@ import { createVoluteServer } from "./lib/volute-server.js";
15
15
  const { port } = parseArgs();
16
16
  const config = loadConfig();
17
17
  if (config.logLevel) setLevel(config.logLevel);
18
- // The Codex SDK wants a bare model slug, but config.model may carry a pi-style
19
- // "provider:model" prefix (e.g. "openai-codex:gpt-5.5") when the spirit's model
20
- // is provider-qualified. Strip the prefix so the SDK gets just the model.
21
- const model = config.model?.includes(":")
22
- ? config.model.slice(config.model.indexOf(":") + 1)
23
- : config.model;
24
- if (config.model) log("server", `using model: ${model}`);
18
+ if (config.model) log("server", `using model: ${config.model}`);
25
19
  if (config.reasoningEffort) log("server", `reasoning effort: ${config.reasoningEffort}`);
26
20
 
27
21
  const systemPrompt = loadSystemPrompt();
@@ -34,7 +28,7 @@ const mind = createMind({
34
28
  systemPrompt,
35
29
  cwd,
36
30
  mindDir,
37
- model,
31
+ model: config.model,
38
32
  reasoningEffort: config.reasoningEffort,
39
33
  maxContextTokens: config.compaction?.maxContextTokens,
40
34
  });
@@ -1,59 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- wrapForIsolation
4
- } from "./chunk-TFBQESH7.js";
5
-
6
- // packages/daemon/src/lib/util/exec.ts
7
- import { execFile as execFileCb, execFileSync, spawn } from "child_process";
8
- async function exec(cmd, args, options) {
9
- const [wrappedCmd, wrappedArgs] = options?.mindName ? await wrapForIsolation(cmd, args, options.mindName) : [cmd, args];
10
- return new Promise((resolve, reject) => {
11
- execFileCb(
12
- wrappedCmd,
13
- wrappedArgs,
14
- { cwd: options?.cwd, env: options?.env },
15
- (err, stdout, stderr) => {
16
- if (err) {
17
- err.stderr = stderr;
18
- err.stdout = stdout;
19
- reject(err);
20
- } else {
21
- resolve(stdout);
22
- }
23
- }
24
- );
25
- });
26
- }
27
- function gitExec(args, options) {
28
- const fullArgs = process.env.VOLUTE_ISOLATION === "user" ? ["-c", "safe.directory=*", ...args] : args;
29
- return exec("git", fullArgs, options);
30
- }
31
- function resolveVoluteBin() {
32
- try {
33
- return execFileSync("which", ["volute"], { encoding: "utf-8" }).trim();
34
- } catch {
35
- throw new Error("Could not find volute binary on PATH");
36
- }
37
- }
38
- async function execInherit(cmd, args, options) {
39
- const [wrappedCmd, wrappedArgs] = options?.mindName ? await wrapForIsolation(cmd, args, options.mindName) : [cmd, args];
40
- return new Promise((resolve, reject) => {
41
- const child = spawn(wrappedCmd, wrappedArgs, {
42
- cwd: options?.cwd,
43
- env: options?.env,
44
- stdio: "inherit"
45
- });
46
- child.on("error", reject);
47
- child.on("close", (code) => {
48
- if (code === 0) resolve();
49
- else reject(new Error(`${cmd} ${args.join(" ")} exited with code ${code}`));
50
- });
51
- });
52
- }
53
-
54
- export {
55
- exec,
56
- gitExec,
57
- resolveVoluteBin,
58
- execInherit
59
- };
@@ -1,179 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- getBaseName,
4
- validateMindName
5
- } from "./chunk-IUZ3EV2D.js";
6
-
7
- // packages/daemon/src/lib/mind/isolation.ts
8
- import { execFileSync } from "child_process";
9
- function isIsolationEnabled() {
10
- return process.env.VOLUTE_ISOLATION === "user";
11
- }
12
- function mindUserName(mindName) {
13
- const err = validateMindName(mindName);
14
- if (err && mindName !== "volute") {
15
- throw new Error(`Invalid mind name for isolation: ${err}`);
16
- }
17
- const prefix = process.env.VOLUTE_USER_PREFIX ?? "mind-";
18
- return `${prefix}${mindName}`;
19
- }
20
- function findNextMacId(type) {
21
- const idField = type === "Users" ? "UniqueID" : "PrimaryGroupID";
22
- let output;
23
- try {
24
- output = execFileSync("dscl", [".", "-list", `/${type}`, idField], { encoding: "utf-8" });
25
- } catch (err) {
26
- throw new Error(
27
- `Failed to query ${type} via dscl: ${err instanceof Error ? err.message : err}`
28
- );
29
- }
30
- const ids = /* @__PURE__ */ new Set();
31
- for (const line of output.split("\n")) {
32
- const parts = line.trim().split(/\s+/);
33
- const id = parseInt(parts[parts.length - 1], 10);
34
- if (!Number.isNaN(id)) ids.add(id);
35
- }
36
- let next = 401;
37
- while (ids.has(next)) next++;
38
- return next;
39
- }
40
- function getVoluteGroupGid() {
41
- if (process.platform === "darwin") {
42
- const output2 = execFileSync("dscl", [".", "-read", "/Groups/volute", "PrimaryGroupID"], {
43
- encoding: "utf-8"
44
- });
45
- const match = output2.match(/PrimaryGroupID:\s*(\d+)/);
46
- if (!match) throw new Error("Could not read volute group GID");
47
- return parseInt(match[1], 10);
48
- }
49
- const output = execFileSync("getent", ["group", "volute"], { encoding: "utf-8" });
50
- const gid = parseInt(output.split(":")[2], 10);
51
- if (Number.isNaN(gid)) throw new Error("Could not read volute group GID");
52
- return gid;
53
- }
54
- function ensureVoluteGroup(opts) {
55
- if (!opts?.force && !isIsolationEnabled()) return;
56
- if (process.platform === "darwin") {
57
- try {
58
- execFileSync("dscl", [".", "-read", "/Groups/volute"], { stdio: "ignore" });
59
- return;
60
- } catch {
61
- }
62
- const gid = findNextMacId("Groups");
63
- try {
64
- execFileSync("dscl", [".", "-create", "/Groups/volute"]);
65
- execFileSync("dscl", [".", "-create", "/Groups/volute", "PrimaryGroupID", String(gid)]);
66
- execFileSync("dscl", [".", "-create", "/Groups/volute", "Password", "*"]);
67
- } catch (err) {
68
- const msg = err instanceof Error ? err.message : String(err);
69
- throw new Error(`Failed to create volute group on macOS: ${msg}`);
70
- }
71
- return;
72
- }
73
- try {
74
- execFileSync("getent", ["group", "volute"], { stdio: "ignore" });
75
- } catch {
76
- try {
77
- execFileSync("groupadd", ["volute"], { stdio: ["ignore", "ignore", "pipe"] });
78
- } catch (err) {
79
- const stderr = err?.stderr?.toString().trim();
80
- throw new Error(`Failed to create volute group${stderr ? `: ${stderr}` : ""}`);
81
- }
82
- }
83
- }
84
- function createMindUser(name, homeDir) {
85
- if (!isIsolationEnabled()) return;
86
- const user = mindUserName(name);
87
- try {
88
- execFileSync("id", [user], { stdio: "ignore" });
89
- return;
90
- } catch {
91
- }
92
- if (process.platform === "darwin") {
93
- const uid = findNextMacId("Users");
94
- const gid = getVoluteGroupGid();
95
- const home = homeDir ?? "/var/empty";
96
- try {
97
- execFileSync("dscl", [".", "-create", `/Users/${user}`]);
98
- execFileSync("dscl", [".", "-create", `/Users/${user}`, "UniqueID", String(uid)]);
99
- execFileSync("dscl", [".", "-create", `/Users/${user}`, "PrimaryGroupID", String(gid)]);
100
- execFileSync("dscl", [".", "-create", `/Users/${user}`, "UserShell", "/usr/bin/false"]);
101
- execFileSync("dscl", [".", "-create", `/Users/${user}`, "NFSHomeDirectory", home]);
102
- execFileSync("dscl", [".", "-create", `/Users/${user}`, "RealName", `Volute Mind: ${name}`]);
103
- execFileSync("dscl", [".", "-create", `/Users/${user}`, "IsHidden", "1"]);
104
- execFileSync("dscl", [".", "-append", "/Groups/volute", "GroupMembership", user]);
105
- } catch (err) {
106
- const msg = err instanceof Error ? err.message : String(err);
107
- throw new Error(`Failed to create user ${user} on macOS: ${msg}`);
108
- }
109
- return;
110
- }
111
- try {
112
- const args = ["-r", "-M", "-G", "volute", "-s", "/usr/sbin/nologin"];
113
- if (homeDir) args.push("-d", homeDir);
114
- args.push(user);
115
- execFileSync("useradd", args, {
116
- stdio: ["ignore", "ignore", "pipe"]
117
- });
118
- } catch (err) {
119
- const stderr = err?.stderr?.toString().trim();
120
- throw new Error(`Failed to create user ${user}${stderr ? `: ${stderr}` : ""}`);
121
- }
122
- }
123
- function deleteMindUser(name) {
124
- if (!isIsolationEnabled()) return;
125
- const user = mindUserName(name);
126
- if (process.platform === "darwin") {
127
- try {
128
- execFileSync("dscl", [".", "-delete", `/Users/${user}`], { stdio: "ignore" });
129
- } catch {
130
- }
131
- try {
132
- execFileSync("dscl", [".", "-delete", "/Groups/volute", "GroupMembership", user], {
133
- stdio: "ignore"
134
- });
135
- } catch {
136
- }
137
- return;
138
- }
139
- try {
140
- execFileSync("userdel", [user], { stdio: "ignore" });
141
- } catch {
142
- }
143
- }
144
- async function wrapForIsolation(cmd, args, mindName) {
145
- if (!isIsolationEnabled()) return [cmd, args];
146
- const baseName = await getBaseName(mindName);
147
- const user = mindUserName(baseName);
148
- if (process.platform === "darwin") {
149
- return ["sudo", ["-u", user, "--", cmd, ...args]];
150
- }
151
- return ["runuser", ["-u", user, "--", cmd, ...args]];
152
- }
153
- function chownMindDir(dir, name) {
154
- if (!isIsolationEnabled()) return;
155
- const user = mindUserName(name);
156
- const group = process.platform === "darwin" ? "volute" : user;
157
- try {
158
- execFileSync("chown", ["-R", `${user}:${group}`, dir], { stdio: ["ignore", "ignore", "pipe"] });
159
- } catch (err) {
160
- const stderr = err?.stderr?.toString().trim();
161
- throw new Error(`Failed to chown ${dir} to ${user}:${group}${stderr ? `: ${stderr}` : ""}`);
162
- }
163
- try {
164
- execFileSync("chmod", ["700", dir], { stdio: ["ignore", "ignore", "pipe"] });
165
- } catch (err) {
166
- const stderr = err?.stderr?.toString().trim();
167
- throw new Error(`Failed to chmod ${dir}${stderr ? `: ${stderr}` : ""}`);
168
- }
169
- }
170
-
171
- export {
172
- isIsolationEnabled,
173
- mindUserName,
174
- ensureVoluteGroup,
175
- createMindUser,
176
- deleteMindUser,
177
- wrapForIsolation,
178
- chownMindDir
179
- };
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- DeliveryManager,
4
- getDeliveryManager,
5
- initDeliveryManager,
6
- tryGetDeliveryManager
7
- } from "./chunk-52NMCDBS.js";
8
- import "./chunk-BLOAJLGI.js";
9
- import "./chunk-VSUZE2PD.js";
10
- import "./chunk-QLWG3C2Z.js";
11
- import "./chunk-JLX3GC7T.js";
12
- import "./chunk-YLTIEEVL.js";
13
- import "./chunk-CU6OFXMM.js";
14
- import "./chunk-WR7CSHQ4.js";
15
- import "./chunk-VBKRZCR7.js";
16
- import "./chunk-62ICA2FF.js";
17
- import "./chunk-TKOWXAHG.js";
18
- import "./chunk-GN52E2DP.js";
19
- import "./chunk-TFBQESH7.js";
20
- import "./chunk-4ZSUUBG5.js";
21
- import "./chunk-KZAL7HEQ.js";
22
- import "./chunk-5QG36RV7.js";
23
- import "./chunk-K547QOCM.js";
24
- import "./chunk-T2TP6ZC6.js";
25
- import "./chunk-IUZ3EV2D.js";
26
- import "./chunk-MHFAWJCC.js";
27
- import "./chunk-K3NQKI34.js";
28
- export {
29
- DeliveryManager,
30
- getDeliveryManager,
31
- initDeliveryManager,
32
- tryGetDeliveryManager
33
- };
@@ -1,17 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- run,
4
- stopDaemon
5
- } from "./chunk-G777ME4L.js";
6
- import "./chunk-TXSA4Q3V.js";
7
- import "./chunk-O7IGP7ZW.js";
8
- import "./chunk-CGPESELY.js";
9
- import "./chunk-GN52E2DP.js";
10
- import "./chunk-TFBQESH7.js";
11
- import "./chunk-IUZ3EV2D.js";
12
- import "./chunk-MHFAWJCC.js";
13
- import "./chunk-K3NQKI34.js";
14
- export {
15
- run,
16
- stopDaemon
17
- };
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- clearEchoTextCache,
4
- echoTextToChannel
5
- } from "./chunk-2YRTSK5K.js";
6
- import "./chunk-QPTQKGGF.js";
7
- import "./chunk-52NMCDBS.js";
8
- import "./chunk-BLOAJLGI.js";
9
- import "./chunk-VSUZE2PD.js";
10
- import "./chunk-QLWG3C2Z.js";
11
- import "./chunk-JLX3GC7T.js";
12
- import "./chunk-YLTIEEVL.js";
13
- import "./chunk-CU6OFXMM.js";
14
- import "./chunk-WR7CSHQ4.js";
15
- import "./chunk-VBKRZCR7.js";
16
- import "./chunk-62ICA2FF.js";
17
- import "./chunk-TKOWXAHG.js";
18
- import "./chunk-GN52E2DP.js";
19
- import "./chunk-TFBQESH7.js";
20
- import "./chunk-4ZSUUBG5.js";
21
- import "./chunk-KZAL7HEQ.js";
22
- import "./chunk-5QG36RV7.js";
23
- import "./chunk-K547QOCM.js";
24
- import "./chunk-T2TP6ZC6.js";
25
- import "./chunk-LGNUFVMR.js";
26
- import "./chunk-IUZ3EV2D.js";
27
- import "./chunk-MHFAWJCC.js";
28
- import "./chunk-K3NQKI34.js";
29
- export {
30
- clearEchoTextCache,
31
- echoTextToChannel
32
- };
@@ -1,41 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- deliverMessage,
4
- linkToolResultToTurn,
5
- recordInbound,
6
- recordOutbound,
7
- resolveSleepAction,
8
- tagRecentInbound,
9
- tagUntaggedInbound,
10
- tagUntaggedOutbound
11
- } from "./chunk-52NMCDBS.js";
12
- import "./chunk-BLOAJLGI.js";
13
- import "./chunk-VSUZE2PD.js";
14
- import "./chunk-QLWG3C2Z.js";
15
- import "./chunk-JLX3GC7T.js";
16
- import "./chunk-YLTIEEVL.js";
17
- import "./chunk-CU6OFXMM.js";
18
- import "./chunk-WR7CSHQ4.js";
19
- import "./chunk-VBKRZCR7.js";
20
- import "./chunk-62ICA2FF.js";
21
- import "./chunk-TKOWXAHG.js";
22
- import "./chunk-GN52E2DP.js";
23
- import "./chunk-TFBQESH7.js";
24
- import "./chunk-4ZSUUBG5.js";
25
- import "./chunk-KZAL7HEQ.js";
26
- import "./chunk-5QG36RV7.js";
27
- import "./chunk-K547QOCM.js";
28
- import "./chunk-T2TP6ZC6.js";
29
- import "./chunk-IUZ3EV2D.js";
30
- import "./chunk-MHFAWJCC.js";
31
- import "./chunk-K3NQKI34.js";
32
- export {
33
- deliverMessage,
34
- linkToolResultToTurn,
35
- recordInbound,
36
- recordOutbound,
37
- resolveSleepAction,
38
- tagRecentInbound,
39
- tagUntaggedInbound,
40
- tagUntaggedOutbound
41
- };
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- MindManager,
4
- buildMindBaseEnv,
5
- getMindManager,
6
- initMindManager
7
- } from "./chunk-52NMCDBS.js";
8
- import "./chunk-BLOAJLGI.js";
9
- import "./chunk-VSUZE2PD.js";
10
- import "./chunk-QLWG3C2Z.js";
11
- import "./chunk-JLX3GC7T.js";
12
- import "./chunk-YLTIEEVL.js";
13
- import "./chunk-CU6OFXMM.js";
14
- import "./chunk-WR7CSHQ4.js";
15
- import "./chunk-VBKRZCR7.js";
16
- import "./chunk-62ICA2FF.js";
17
- import "./chunk-TKOWXAHG.js";
18
- import "./chunk-GN52E2DP.js";
19
- import "./chunk-TFBQESH7.js";
20
- import "./chunk-4ZSUUBG5.js";
21
- import "./chunk-KZAL7HEQ.js";
22
- import "./chunk-5QG36RV7.js";
23
- import "./chunk-K547QOCM.js";
24
- import "./chunk-T2TP6ZC6.js";
25
- import "./chunk-IUZ3EV2D.js";
26
- import "./chunk-MHFAWJCC.js";
27
- import "./chunk-K3NQKI34.js";
28
- export {
29
- MindManager,
30
- buildMindBaseEnv,
31
- getMindManager,
32
- initMindManager
33
- };
@@ -1,37 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- sleepMind,
4
- startMindFull,
5
- startSpiritFull,
6
- stopMindFull,
7
- stopSpiritFull,
8
- wakeMind
9
- } from "./chunk-52NMCDBS.js";
10
- import "./chunk-BLOAJLGI.js";
11
- import "./chunk-VSUZE2PD.js";
12
- import "./chunk-QLWG3C2Z.js";
13
- import "./chunk-JLX3GC7T.js";
14
- import "./chunk-YLTIEEVL.js";
15
- import "./chunk-CU6OFXMM.js";
16
- import "./chunk-WR7CSHQ4.js";
17
- import "./chunk-VBKRZCR7.js";
18
- import "./chunk-62ICA2FF.js";
19
- import "./chunk-TKOWXAHG.js";
20
- import "./chunk-GN52E2DP.js";
21
- import "./chunk-TFBQESH7.js";
22
- import "./chunk-4ZSUUBG5.js";
23
- import "./chunk-KZAL7HEQ.js";
24
- import "./chunk-5QG36RV7.js";
25
- import "./chunk-K547QOCM.js";
26
- import "./chunk-T2TP6ZC6.js";
27
- import "./chunk-IUZ3EV2D.js";
28
- import "./chunk-MHFAWJCC.js";
29
- import "./chunk-K3NQKI34.js";
30
- export {
31
- sleepMind,
32
- startMindFull,
33
- startSpiritFull,
34
- stopMindFull,
35
- stopSpiritFull,
36
- wakeMind
37
- };
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- Scheduler,
4
- getScheduler,
5
- initScheduler
6
- } from "./chunk-52NMCDBS.js";
7
- import "./chunk-BLOAJLGI.js";
8
- import "./chunk-VSUZE2PD.js";
9
- import "./chunk-QLWG3C2Z.js";
10
- import "./chunk-JLX3GC7T.js";
11
- import "./chunk-YLTIEEVL.js";
12
- import "./chunk-CU6OFXMM.js";
13
- import "./chunk-WR7CSHQ4.js";
14
- import "./chunk-VBKRZCR7.js";
15
- import "./chunk-62ICA2FF.js";
16
- import "./chunk-TKOWXAHG.js";
17
- import "./chunk-GN52E2DP.js";
18
- import "./chunk-TFBQESH7.js";
19
- import "./chunk-4ZSUUBG5.js";
20
- import "./chunk-KZAL7HEQ.js";
21
- import "./chunk-5QG36RV7.js";
22
- import "./chunk-K547QOCM.js";
23
- import "./chunk-T2TP6ZC6.js";
24
- import "./chunk-IUZ3EV2D.js";
25
- import "./chunk-MHFAWJCC.js";
26
- import "./chunk-K3NQKI34.js";
27
- export {
28
- Scheduler,
29
- getScheduler,
30
- initScheduler
31
- };
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- SleepManager,
4
- getSleepManager,
5
- getSleepManagerIfReady,
6
- initSleepManager,
7
- matchesGlob
8
- } from "./chunk-52NMCDBS.js";
9
- import "./chunk-BLOAJLGI.js";
10
- import "./chunk-VSUZE2PD.js";
11
- import "./chunk-QLWG3C2Z.js";
12
- import "./chunk-JLX3GC7T.js";
13
- import "./chunk-YLTIEEVL.js";
14
- import "./chunk-CU6OFXMM.js";
15
- import "./chunk-WR7CSHQ4.js";
16
- import "./chunk-VBKRZCR7.js";
17
- import "./chunk-62ICA2FF.js";
18
- import "./chunk-TKOWXAHG.js";
19
- import "./chunk-GN52E2DP.js";
20
- import "./chunk-TFBQESH7.js";
21
- import "./chunk-4ZSUUBG5.js";
22
- import "./chunk-KZAL7HEQ.js";
23
- import "./chunk-5QG36RV7.js";
24
- import "./chunk-K547QOCM.js";
25
- import "./chunk-T2TP6ZC6.js";
26
- import "./chunk-IUZ3EV2D.js";
27
- import "./chunk-MHFAWJCC.js";
28
- import "./chunk-K3NQKI34.js";
29
- export {
30
- SleepManager,
31
- getSleepManager,
32
- getSleepManagerIfReady,
33
- initSleepManager,
34
- matchesGlob
35
- };
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- ensureSystemDM,
4
- generateSystemReply,
5
- resetSystemDMCache,
6
- sendSystemMessage,
7
- sendSystemMessageDirect
8
- } from "./chunk-52NMCDBS.js";
9
- import "./chunk-BLOAJLGI.js";
10
- import "./chunk-VSUZE2PD.js";
11
- import "./chunk-QLWG3C2Z.js";
12
- import "./chunk-JLX3GC7T.js";
13
- import "./chunk-YLTIEEVL.js";
14
- import "./chunk-CU6OFXMM.js";
15
- import "./chunk-WR7CSHQ4.js";
16
- import "./chunk-VBKRZCR7.js";
17
- import "./chunk-62ICA2FF.js";
18
- import "./chunk-TKOWXAHG.js";
19
- import "./chunk-GN52E2DP.js";
20
- import "./chunk-TFBQESH7.js";
21
- import "./chunk-4ZSUUBG5.js";
22
- import "./chunk-KZAL7HEQ.js";
23
- import "./chunk-5QG36RV7.js";
24
- import "./chunk-K547QOCM.js";
25
- import "./chunk-T2TP6ZC6.js";
26
- import "./chunk-IUZ3EV2D.js";
27
- import "./chunk-MHFAWJCC.js";
28
- import "./chunk-K3NQKI34.js";
29
- export {
30
- ensureSystemDM,
31
- generateSystemReply,
32
- resetSystemDMCache,
33
- sendSystemMessage,
34
- sendSystemMessageDirect
35
- };
@@ -1,19 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- run
4
- } from "./chunk-RKBYFLOR.js";
5
- import "./chunk-TXSA4Q3V.js";
6
- import "./chunk-O7IGP7ZW.js";
7
- import "./chunk-CGPESELY.js";
8
- import "./chunk-GN52E2DP.js";
9
- import "./chunk-TFBQESH7.js";
10
- import {
11
- readGlobalConfig
12
- } from "./chunk-KZAL7HEQ.js";
13
- import "./chunk-IUZ3EV2D.js";
14
- import "./chunk-MHFAWJCC.js";
15
- import "./chunk-K3NQKI34.js";
16
- export {
17
- readGlobalConfig,
18
- run
19
- };