volute 0.8.1 → 0.8.2
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.
package/README.md
CHANGED
|
@@ -245,7 +245,7 @@ npm install -g volute
|
|
|
245
245
|
sudo $(which volute) setup --host 0.0.0.0
|
|
246
246
|
```
|
|
247
247
|
|
|
248
|
-
> **Note:**
|
|
248
|
+
> **Note:** The initial `sudo $(which volute)` is needed because `sudo` resets PATH. After setup completes, a wrapper at `/usr/local/bin/volute` is created so `sudo volute` works normally going forward.
|
|
249
249
|
|
|
250
250
|
This installs a system-level systemd service with data at `/var/lib/volute` and user isolation enabled. Check status with `systemctl status volute`. Uninstall with `sudo volute setup uninstall --force`.
|
|
251
251
|
|
package/dist/cli.js
CHANGED
|
@@ -9,7 +9,7 @@ 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-
|
|
12
|
+
const { default: pkg } = await import("./package-TWWKVRRL.js");
|
|
13
13
|
console.log(pkg.version);
|
|
14
14
|
process.exit(0);
|
|
15
15
|
}
|
|
@@ -48,7 +48,7 @@ switch (command) {
|
|
|
48
48
|
await import("./daemon-restart-CPBLMMRI.js").then((m) => m.run(args));
|
|
49
49
|
break;
|
|
50
50
|
case "setup":
|
|
51
|
-
await import("./setup-
|
|
51
|
+
await import("./setup-2JDBGU7Y.js").then((m) => m.run(args));
|
|
52
52
|
break;
|
|
53
53
|
case "service":
|
|
54
54
|
await import("./service-XCADRKIS.js").then((m) => m.run(args));
|
|
@@ -4,7 +4,7 @@ import "./chunk-K3NQKI34.js";
|
|
|
4
4
|
// package.json
|
|
5
5
|
var package_default = {
|
|
6
6
|
name: "volute",
|
|
7
|
-
version: "0.8.
|
|
7
|
+
version: "0.8.2",
|
|
8
8
|
description: "CLI for creating and managing self-modifying AI agents powered by the Claude Agent SDK",
|
|
9
9
|
type: "module",
|
|
10
10
|
license: "MIT",
|
|
@@ -15,9 +15,11 @@ import "./chunk-K3NQKI34.js";
|
|
|
15
15
|
import { execFileSync } from "child_process";
|
|
16
16
|
import { existsSync, mkdirSync, rmSync, unlinkSync, writeFileSync } from "fs";
|
|
17
17
|
import { homedir } from "os";
|
|
18
|
-
import { dirname } from "path";
|
|
18
|
+
import { dirname, resolve } from "path";
|
|
19
19
|
var SERVICE_NAME = "volute.service";
|
|
20
20
|
var SERVICE_PATH = `/etc/systemd/system/${SERVICE_NAME}`;
|
|
21
|
+
var PROFILE_PATH = "/etc/profile.d/volute.sh";
|
|
22
|
+
var WRAPPER_PATH = "/usr/local/bin/volute";
|
|
21
23
|
var DATA_DIR = "/var/lib/volute";
|
|
22
24
|
var AGENTS_DIR = "/agents";
|
|
23
25
|
var HOST_RE = /^[a-zA-Z0-9.:_-]+$/;
|
|
@@ -93,6 +95,22 @@ function install(port, host) {
|
|
|
93
95
|
execFileSync("chmod", ["755", DATA_DIR]);
|
|
94
96
|
execFileSync("chmod", ["755", AGENTS_DIR]);
|
|
95
97
|
console.log("Set permissions on directories");
|
|
98
|
+
writeFileSync(
|
|
99
|
+
PROFILE_PATH,
|
|
100
|
+
`export VOLUTE_HOME=${DATA_DIR}
|
|
101
|
+
export VOLUTE_AGENTS_DIR=${AGENTS_DIR}
|
|
102
|
+
`
|
|
103
|
+
);
|
|
104
|
+
console.log(`Wrote ${PROFILE_PATH}`);
|
|
105
|
+
const binDir = dirname(voluteBin);
|
|
106
|
+
if (voluteBin !== WRAPPER_PATH && !voluteBin.startsWith("/usr/bin")) {
|
|
107
|
+
const nodeBin = resolve(binDir, "node");
|
|
108
|
+
const wrapper = `#!/bin/sh
|
|
109
|
+
exec "${nodeBin}" "${voluteBin}" "$@"
|
|
110
|
+
`;
|
|
111
|
+
writeFileSync(WRAPPER_PATH, wrapper, { mode: 493 });
|
|
112
|
+
console.log(`Wrote ${WRAPPER_PATH} (wrapper for ${voluteBin})`);
|
|
113
|
+
}
|
|
96
114
|
writeFileSync(SERVICE_PATH, generateUnit(voluteBin, port, host ?? "0.0.0.0"));
|
|
97
115
|
console.log(`Wrote ${SERVICE_PATH}`);
|
|
98
116
|
try {
|
|
@@ -135,6 +153,8 @@ function uninstall(force) {
|
|
|
135
153
|
console.warn("Warning: failed to disable service (may already be stopped)");
|
|
136
154
|
}
|
|
137
155
|
unlinkSync(SERVICE_PATH);
|
|
156
|
+
if (existsSync(PROFILE_PATH)) unlinkSync(PROFILE_PATH);
|
|
157
|
+
if (existsSync(WRAPPER_PATH)) unlinkSync(WRAPPER_PATH);
|
|
138
158
|
try {
|
|
139
159
|
execFileSync("systemctl", ["daemon-reload"]);
|
|
140
160
|
} catch {
|