volute 0.11.2 → 0.11.4

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.
@@ -21,14 +21,14 @@ async function run(args) {
21
21
  await import("./delete-BOTVU4YO.js").then((m) => m.run(args.slice(1)));
22
22
  break;
23
23
  case "list":
24
- await import("./status-QN5G4RRK.js").then((m) => m.run(args.slice(1)));
24
+ await import("./status-DFWM342I.js").then((m) => m.run(args.slice(1)));
25
25
  break;
26
26
  case "status": {
27
27
  const rest = args.slice(1);
28
28
  if (!rest[0] && process.env.VOLUTE_AGENT) {
29
29
  rest.unshift(process.env.VOLUTE_AGENT);
30
30
  }
31
- await import("./status-QN5G4RRK.js").then((m) => m.run(rest));
31
+ await import("./status-DFWM342I.js").then((m) => m.run(rest));
32
32
  break;
33
33
  }
34
34
  case "logs": {
@@ -3,7 +3,7 @@ import {
3
3
  AgentManager,
4
4
  getAgentManager,
5
5
  initAgentManager
6
- } from "./chunk-SJFWB3Q3.js";
6
+ } from "./chunk-YTOPX4PB.js";
7
7
  import "./chunk-46S7YHUB.js";
8
8
  import "./chunk-QF22MYDJ.js";
9
9
  import "./chunk-DP2DX4WV.js";
@@ -19,7 +19,7 @@ import {
19
19
 
20
20
  // src/lib/agent-manager.ts
21
21
  import { execFile, spawn } from "child_process";
22
- import { copyFileSync, existsSync as existsSync3, mkdirSync, readFileSync as readFileSync2, rmSync as rmSync2, writeFileSync as writeFileSync2 } from "fs";
22
+ import { existsSync as existsSync3, mkdirSync, readFileSync as readFileSync2, rmSync as rmSync2, writeFileSync as writeFileSync2 } from "fs";
23
23
  import { resolve } from "path";
24
24
  import { promisify } from "util";
25
25
 
@@ -184,8 +184,12 @@ var AgentManager = class {
184
184
  }
185
185
  } catch {
186
186
  }
187
- const logsDir = resolve(stateDir(name), "logs");
187
+ const agentStateDir = stateDir(name);
188
+ const logsDir = resolve(agentStateDir, "logs");
188
189
  mkdirSync(logsDir, { recursive: true });
190
+ if (isIsolationEnabled()) {
191
+ chownAgentDir(agentStateDir, baseName);
192
+ }
189
193
  const logStream = new RotatingLog(resolve(logsDir, "agent.log"));
190
194
  const agentEnv = loadMergedEnv(name);
191
195
  const env = {
@@ -209,7 +213,7 @@ var AgentManager = class {
209
213
  const agentCreds = resolve(agentClaudeDir, ".credentials.json");
210
214
  if (existsSync3(sharedCreds)) {
211
215
  try {
212
- copyFileSync(sharedCreds, agentCreds);
216
+ writeFileSync2(agentCreds, readFileSync2(sharedCreds));
213
217
  } catch (err) {
214
218
  throw new Error(
215
219
  `Cannot start agent ${name}: failed to copy credentials to ${agentClaudeDir}: ${err instanceof Error ? err.message : err}`
@@ -70,15 +70,17 @@ function isNewer(current, latest) {
70
70
  if (hasPrerelease(current) && !hasPrerelease(latest)) return true;
71
71
  return false;
72
72
  }
73
- async function checkForUpdate() {
73
+ async function checkForUpdate(force = false) {
74
74
  const current = getCurrentVersion();
75
- const cache = readCache();
76
- if (cache && Date.now() - cache.checkedAt < CACHE_TTL) {
77
- return {
78
- current,
79
- latest: cache.latest,
80
- updateAvailable: isNewer(current, cache.latest)
81
- };
75
+ if (!force) {
76
+ const cache = readCache();
77
+ if (cache && Date.now() - cache.checkedAt < CACHE_TTL) {
78
+ return {
79
+ current,
80
+ latest: cache.latest,
81
+ updateAvailable: isNewer(current, cache.latest)
82
+ };
83
+ }
82
84
  }
83
85
  try {
84
86
  const latest = await fetchLatestVersion();
package/dist/cli.js CHANGED
@@ -9,13 +9,13 @@ 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-6P4FEQHC.js");
12
+ const { default: pkg } = await import("./package-KVUXPTEW.js");
13
13
  console.log(pkg.version);
14
14
  process.exit(0);
15
15
  }
16
16
  switch (command) {
17
17
  case "agent":
18
- await import("./agent-ER2OFKWQ.js").then((m) => m.run(args));
18
+ await import("./agent-2AQPI3QV.js").then((m) => m.run(args));
19
19
  break;
20
20
  case "send":
21
21
  await import("./send-X6OQGSD6.js").then((m) => m.run(args));
@@ -39,13 +39,13 @@ switch (command) {
39
39
  await import("./env-CGORIKVF.js").then((m) => m.run(args));
40
40
  break;
41
41
  case "up":
42
- await import("./up-AZ5TUREI.js").then((m) => m.run(args));
42
+ await import("./up-365HL7UT.js").then((m) => m.run(args));
43
43
  break;
44
44
  case "down":
45
45
  await import("./down-O2EQJ5DO.js").then((m) => m.run(args));
46
46
  break;
47
47
  case "restart":
48
- await import("./daemon-restart-YITZ6Y2E.js").then((m) => m.run(args));
48
+ await import("./daemon-restart-5W5AGBZ2.js").then((m) => m.run(args));
49
49
  break;
50
50
  case "setup":
51
51
  await import("./setup-7N4KYOYN.js").then((m) => m.run(args));
@@ -54,10 +54,10 @@ switch (command) {
54
54
  await import("./service-UL3OCODG.js").then((m) => m.run(args));
55
55
  break;
56
56
  case "update":
57
- await import("./update-EZNCCKXS.js").then((m) => m.run(args));
57
+ await import("./update-PV3XM6DX.js").then((m) => m.run(args));
58
58
  break;
59
59
  case "status":
60
- await import("./status-QN5G4RRK.js").then((m) => m.run(args));
60
+ await import("./status-DFWM342I.js").then((m) => m.run(args));
61
61
  break;
62
62
  case "--help":
63
63
  case "-h":
@@ -124,7 +124,7 @@ Run 'volute --help' for usage.`);
124
124
  process.exit(1);
125
125
  }
126
126
  if (command !== "update") {
127
- import("./update-check-SM4244SU.js").then((m) => m.checkForUpdate()).then((result) => {
127
+ import("./update-check-YPGH5X4E.js").then((m) => m.checkForUpdate()).then((result) => {
128
128
  if (result.updateAvailable) {
129
129
  console.error(`
130
130
  Update available: ${result.current} \u2192 ${result.latest}`);
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  run
4
- } from "./chunk-COY6TMEK.js";
4
+ } from "./chunk-D5EVQTGJ.js";
5
5
  import {
6
6
  stopDaemon
7
7
  } from "./chunk-RGWADNLT.js";
package/dist/daemon.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  initAgentManager,
7
7
  loadJsonMap,
8
8
  saveJsonMap
9
- } from "./chunk-SJFWB3Q3.js";
9
+ } from "./chunk-YTOPX4PB.js";
10
10
  import {
11
11
  applyIsolation,
12
12
  chownAgentDir,
@@ -44,7 +44,7 @@ import {
44
44
  checkForUpdate,
45
45
  checkForUpdateCached,
46
46
  getCurrentVersion
47
- } from "./chunk-RT6Y7AR3.js";
47
+ } from "./chunk-YY2QX2J6.js";
48
48
  import "./chunk-D424ZQGI.js";
49
49
  import {
50
50
  slugify,
@@ -244,8 +244,13 @@ var ConnectorManager = class {
244
244
  } else {
245
245
  throw new Error(`No connector code found for type: ${type}`);
246
246
  }
247
- const logsDir = resolve2(stateDir(agentName), "logs");
247
+ const agentStateDir = stateDir(agentName);
248
+ const logsDir = resolve2(agentStateDir, "logs");
248
249
  mkdirSync(logsDir, { recursive: true });
250
+ if (isIsolationEnabled()) {
251
+ const [base] = agentName.split("@", 2);
252
+ chownAgentDir(agentStateDir, base);
253
+ }
249
254
  const logStream = new RotatingLog(resolve2(logsDir, `${type}.log`));
250
255
  const agentEnv = loadMergedEnv(agentName);
251
256
  const prefix = `${type.toUpperCase()}_`;
@@ -3522,7 +3527,7 @@ var app13 = new Hono13().post("/:name/chat", zValidator3("json", chatSchema), as
3522
3527
  const participants = await getParticipants(conversationId);
3523
3528
  const agentParticipants = participants.filter((p) => p.userType === "agent");
3524
3529
  const participantNames = participants.map((p) => p.username);
3525
- const { getAgentManager: getAgentManager2 } = await import("./agent-manager-RXNMLNUQ.js");
3530
+ const { getAgentManager: getAgentManager2 } = await import("./agent-manager-AZUDAKCP.js");
3526
3531
  const manager = getAgentManager2();
3527
3532
  const runningAgents = agentParticipants.map((ap) => {
3528
3533
  const agentKey = ap.username === baseName ? name : ap.username;
@@ -4,7 +4,7 @@ import "./chunk-K3NQKI34.js";
4
4
  // package.json
5
5
  var package_default = {
6
6
  name: "volute",
7
- version: "0.11.2",
7
+ version: "0.11.4",
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",
@@ -8,7 +8,7 @@ import {
8
8
  import "./chunk-WTJI3JVR.js";
9
9
  import {
10
10
  checkForUpdate
11
- } from "./chunk-RT6Y7AR3.js";
11
+ } from "./chunk-YY2QX2J6.js";
12
12
  import "./chunk-DP2DX4WV.js";
13
13
  import "./chunk-K3NQKI34.js";
14
14
 
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  readGlobalConfig,
4
4
  run
5
- } from "./chunk-COY6TMEK.js";
5
+ } from "./chunk-D5EVQTGJ.js";
6
6
  import "./chunk-ZKNBD5P3.js";
7
7
  import "./chunk-WTJI3JVR.js";
8
8
  import "./chunk-D424ZQGI.js";
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-WTJI3JVR.js";
14
14
  import {
15
15
  checkForUpdate
16
- } from "./chunk-RT6Y7AR3.js";
16
+ } from "./chunk-YY2QX2J6.js";
17
17
  import {
18
18
  voluteHome
19
19
  } from "./chunk-DP2DX4WV.js";
@@ -23,7 +23,7 @@ import "./chunk-K3NQKI34.js";
23
23
  import { existsSync, readFileSync, unlinkSync } from "fs";
24
24
  import { resolve } from "path";
25
25
  async function run(_args) {
26
- const result = await checkForUpdate();
26
+ const result = await checkForUpdate(true);
27
27
  if (result.checkFailed) {
28
28
  console.error("Could not reach npm registry. Check your network connection and try again.");
29
29
  process.exit(1);
@@ -5,7 +5,7 @@ import {
5
5
  fetchLatestVersion,
6
6
  getCurrentVersion,
7
7
  isNewer
8
- } from "./chunk-RT6Y7AR3.js";
8
+ } from "./chunk-YY2QX2J6.js";
9
9
  import "./chunk-DP2DX4WV.js";
10
10
  import "./chunk-K3NQKI34.js";
11
11
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "volute",
3
- "version": "0.11.2",
3
+ "version": "0.11.4",
4
4
  "description": "CLI for creating and managing self-modifying AI agents powered by the Claude Agent SDK",
5
5
  "type": "module",
6
6
  "license": "MIT",
File without changes