axexec 2.1.0 → 2.1.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"install-credentials.d.ts","sourceRoot":"","sources":["../../src/credentials/install-credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,WAAW,EACjB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQhD,KAAK,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAuC/C,oDAAoD;AACpD,UAAU,cAAc;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA6CD;;;;;;;;;GASG;AACH,iBAAe,kBAAkB,CAC/B,OAAO,EAAE,QAAQ,EACjB,WAAW,CAAC,EAAE,WAAW,EACzB,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,aAAa,EACpB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,aAAa,CAAC,CAqCxB;AAED;;GAEG;AACH,iBAAe,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtE;AAED,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"install-credentials.d.ts","sourceRoot":"","sources":["../../src/credentials/install-credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,WAAW,EACjB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQhD,KAAK,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AA0F/C,oDAAoD;AACpD,UAAU,cAAc;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA6CD;;;;;;;;;GASG;AACH,iBAAe,kBAAkB,CAC/B,OAAO,EAAE,QAAQ,EACjB,WAAW,CAAC,EAAE,WAAW,EACzB,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,aAAa,EACpB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,aAAa,CAAC,CAqCxB;AAED;;GAEG;AACH,iBAAe,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtE;AAED,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC"}
@@ -6,18 +6,70 @@
6
6
  * directory. This ensures credential isolation: agents don't discover or use
7
7
  * locally installed credentials/config.
8
8
  */
9
- import { mkdirSync } from "node:fs";
9
+ import { mkdirSync, readdirSync, statSync } from "node:fs";
10
10
  import { mkdtemp, rm } from "node:fs/promises";
11
11
  import { tmpdir } from "node:os";
12
12
  import path from "node:path";
13
+ import envPaths from "env-paths";
13
14
  import { buildAgentRuntimeEnvironment, getAgentConfigSubdirectory, } from "axshared";
14
15
  import { getCredentialEnvironment } from "./get-credential-environment.js";
15
16
  import { installClaudeCredentials, installCodexCredentials, installGeminiCredentials, installOpenCodeCredentials, } from "./write-agent-credentials.js";
17
+ /** Stale directory threshold: 24 hours */
18
+ const STALE_THRESHOLD_MS = 24 * 60 * 60 * 1000;
19
+ /**
20
+ * Remove subdirectories older than 24 hours from the cache directory.
21
+ *
22
+ * Unlike /tmp (which the OS periodically cleans), ~/.cache/axexec/
23
+ * persists indefinitely. Directories left behind by killed CI jobs,
24
+ * OOM kills, or cancelled workflows would accumulate without this sweep.
25
+ */
26
+ function sweepStaleDirectories(cacheDirectory) {
27
+ try {
28
+ const now = Date.now();
29
+ for (const entry of readdirSync(cacheDirectory)) {
30
+ const entryPath = path.join(cacheDirectory, entry);
31
+ try {
32
+ const stats = statSync(entryPath);
33
+ if (stats.isDirectory() && now - stats.mtimeMs > STALE_THRESHOLD_MS) {
34
+ void rm(entryPath, { recursive: true, force: true }).catch(() => { });
35
+ }
36
+ }
37
+ catch {
38
+ // Skip entries we can't stat (race with concurrent cleanup)
39
+ }
40
+ }
41
+ }
42
+ catch {
43
+ // Cache directory may not exist yet or be unreadable
44
+ }
45
+ }
46
+ /**
47
+ * Returns the base path for temporary agent directories.
48
+ *
49
+ * Uses env-paths to resolve the platform-appropriate cache directory
50
+ * (respects XDG_CACHE_HOME on Linux, ~/Library/Caches on macOS, etc.)
51
+ * instead of the system temp directory. This avoids agent security
52
+ * guards that block operations under /tmp (e.g., Codex refuses to
53
+ * create helper binaries when CODEX_HOME is under /tmp).
54
+ *
55
+ * Sweeps stale directories (>24h) on each call to prevent unbounded growth.
56
+ */
57
+ function getTemporaryBasePath() {
58
+ try {
59
+ const { cache } = envPaths("axexec", { suffix: "" });
60
+ mkdirSync(cache, { recursive: true, mode: 0o700 });
61
+ sweepStaleDirectories(cache);
62
+ return cache;
63
+ }
64
+ catch {
65
+ return tmpdir();
66
+ }
67
+ }
16
68
  /**
17
69
  * Creates a temporary directory structure for an agent.
18
70
  */
19
71
  async function createTemporaryDirectories(agentId) {
20
- const baseDirectory = await mkdtemp(path.join(tmpdir(), `axexec-${agentId}-`));
72
+ const baseDirectory = await mkdtemp(path.join(getTemporaryBasePath(), `${agentId}-`));
21
73
  const subdirectory = getAgentConfigSubdirectory(agentId);
22
74
  let configDirectory;
23
75
  let dataDirectory;
@@ -1 +1 @@
1
- {"version":3,"file":"install-credentials.js","sourceRoot":"","sources":["../../src/credentials/install-credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-credentials.js","sourceRoot":"","sources":["../../src/credentials/install-credentials.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "axexec",
3
3
  "author": "Łukasz Jerciński",
4
4
  "license": "MIT",
5
- "version": "2.1.0",
5
+ "version": "2.1.1",
6
6
  "description": "Unified CLI runner for AI coding agents with normalized event streaming",
7
7
  "repository": {
8
8
  "type": "git",
@@ -68,6 +68,7 @@
68
68
  "axconfig": "^3.6.6",
69
69
  "axshared": "^5.1.1",
70
70
  "commander": "^14.0.3",
71
+ "env-paths": "^4.0.0",
71
72
  "zod": "^4.3.6"
72
73
  },
73
74
  "devDependencies": {