agent-relay 2.0.32 → 2.0.33

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-relay",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Real-time agent-to-agent communication system",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -129,23 +129,23 @@
129
129
  },
130
130
  "homepage": "https://github.com/AgentWorkforce/relay#readme",
131
131
  "dependencies": {
132
- "@agent-relay/bridge": "2.0.32",
133
- "@agent-relay/config": "2.0.32",
134
- "@agent-relay/continuity": "2.0.32",
135
- "@agent-relay/daemon": "2.0.32",
136
- "@agent-relay/hooks": "2.0.32",
137
- "@agent-relay/mcp": "2.0.32",
138
- "@agent-relay/protocol": "2.0.32",
139
- "@agent-relay/resiliency": "2.0.32",
140
- "@agent-relay/sdk": "2.0.32",
141
- "@agent-relay/spawner": "2.0.32",
142
- "@agent-relay/state": "2.0.32",
143
- "@agent-relay/storage": "2.0.32",
144
- "@agent-relay/telemetry": "2.0.32",
145
- "@agent-relay/trajectory": "2.0.32",
146
- "@agent-relay/user-directory": "2.0.32",
147
- "@agent-relay/utils": "2.0.32",
148
- "@agent-relay/wrapper": "2.0.32",
132
+ "@agent-relay/bridge": "2.0.33",
133
+ "@agent-relay/config": "2.0.33",
134
+ "@agent-relay/continuity": "2.0.33",
135
+ "@agent-relay/daemon": "2.0.33",
136
+ "@agent-relay/hooks": "2.0.33",
137
+ "@agent-relay/mcp": "2.0.33",
138
+ "@agent-relay/protocol": "2.0.33",
139
+ "@agent-relay/resiliency": "2.0.33",
140
+ "@agent-relay/sdk": "2.0.33",
141
+ "@agent-relay/spawner": "2.0.33",
142
+ "@agent-relay/state": "2.0.33",
143
+ "@agent-relay/storage": "2.0.33",
144
+ "@agent-relay/telemetry": "2.0.33",
145
+ "@agent-relay/trajectory": "2.0.33",
146
+ "@agent-relay/user-directory": "2.0.33",
147
+ "@agent-relay/utils": "2.0.33",
148
+ "@agent-relay/wrapper": "2.0.33",
149
149
  "agent-trajectories": "^0.2.3",
150
150
  "better-sqlite3": "^12.6.2",
151
151
  "chokidar": "^5.0.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/api-types",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Shared API types and Zod schemas for Agent Relay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/benchmark",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Performance benchmarking for agent swarms, sub-agents, and single agents using Harbor",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -54,9 +54,9 @@
54
54
  "directory": "packages/benchmark"
55
55
  },
56
56
  "dependencies": {
57
- "@agent-relay/sdk": "2.0.32",
58
- "@agent-relay/protocol": "2.0.32",
59
- "@agent-relay/spawner": "2.0.32",
57
+ "@agent-relay/sdk": "2.0.33",
58
+ "@agent-relay/protocol": "2.0.33",
59
+ "@agent-relay/spawner": "2.0.33",
60
60
  "commander": "^12.1.0",
61
61
  "yaml": "^2.3.4"
62
62
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/bridge",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Multi-project bridge client utilities for Relay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -22,13 +22,13 @@
22
22
  "test:watch": "vitest"
23
23
  },
24
24
  "dependencies": {
25
- "@agent-relay/protocol": "2.0.32",
26
- "@agent-relay/config": "2.0.32",
27
- "@agent-relay/utils": "2.0.32",
28
- "@agent-relay/policy": "2.0.32",
29
- "@agent-relay/user-directory": "2.0.32",
30
- "@agent-relay/wrapper": "2.0.32",
31
- "@agent-relay/mcp": "2.0.32"
25
+ "@agent-relay/protocol": "2.0.33",
26
+ "@agent-relay/config": "2.0.33",
27
+ "@agent-relay/utils": "2.0.33",
28
+ "@agent-relay/policy": "2.0.33",
29
+ "@agent-relay/user-directory": "2.0.33",
30
+ "@agent-relay/wrapper": "2.0.33",
31
+ "@agent-relay/mcp": "2.0.33"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/node": "^22.19.3",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/cli-tester",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Manual interactive testing for CLI authentication flows",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/config",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Shared configuration schemas and loaders for Agent Relay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -83,7 +83,7 @@
83
83
  "test:watch": "vitest"
84
84
  },
85
85
  "dependencies": {
86
- "@agent-relay/protocol": "2.0.32",
86
+ "@agent-relay/protocol": "2.0.33",
87
87
  "zod": "^3.23.8",
88
88
  "zod-to-json-schema": "^3.23.1"
89
89
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/continuity",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Session continuity manager for Relay (ledgers, handoffs, resume)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/daemon",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Relay daemon server - agent coordination and message routing",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -22,17 +22,17 @@
22
22
  "test:watch": "vitest"
23
23
  },
24
24
  "dependencies": {
25
- "@agent-relay/protocol": "2.0.32",
26
- "@agent-relay/config": "2.0.32",
27
- "@agent-relay/storage": "2.0.32",
28
- "@agent-relay/bridge": "2.0.32",
29
- "@agent-relay/utils": "2.0.32",
30
- "@agent-relay/policy": "2.0.32",
31
- "@agent-relay/memory": "2.0.32",
32
- "@agent-relay/resiliency": "2.0.32",
33
- "@agent-relay/user-directory": "2.0.32",
34
- "@agent-relay/wrapper": "2.0.32",
35
- "@agent-relay/telemetry": "2.0.32",
25
+ "@agent-relay/protocol": "2.0.33",
26
+ "@agent-relay/config": "2.0.33",
27
+ "@agent-relay/storage": "2.0.33",
28
+ "@agent-relay/bridge": "2.0.33",
29
+ "@agent-relay/utils": "2.0.33",
30
+ "@agent-relay/policy": "2.0.33",
31
+ "@agent-relay/memory": "2.0.33",
32
+ "@agent-relay/resiliency": "2.0.33",
33
+ "@agent-relay/user-directory": "2.0.33",
34
+ "@agent-relay/wrapper": "2.0.33",
35
+ "@agent-relay/telemetry": "2.0.33",
36
36
  "ws": "^8.18.3",
37
37
  "better-sqlite3": "^12.6.2",
38
38
  "pg": "^8.16.3",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/hooks",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Hook emitter, registry, and trajectory hooks for Agent Relay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -37,9 +37,9 @@
37
37
  "test:watch": "vitest"
38
38
  },
39
39
  "dependencies": {
40
- "@agent-relay/protocol": "2.0.32",
41
- "@agent-relay/config": "2.0.32",
42
- "@agent-relay/trajectory": "2.0.32"
40
+ "@agent-relay/protocol": "2.0.33",
41
+ "@agent-relay/config": "2.0.33",
42
+ "@agent-relay/trajectory": "2.0.33"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/node": "^22.19.3",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/mcp",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "MCP server for Agent Relay - native messaging tools for AI agents in Claude, Cursor, and VS Code",
5
5
  "author": "Agent Workforce Inc.",
6
6
  "license": "Apache-2.0",
@@ -47,8 +47,8 @@
47
47
  "prepublishOnly": "npm run clean && npm run build && npm test"
48
48
  },
49
49
  "dependencies": {
50
- "@agent-relay/config": "2.0.32",
51
- "@agent-relay/protocol": "2.0.32",
50
+ "@agent-relay/config": "2.0.33",
51
+ "@agent-relay/protocol": "2.0.33",
52
52
  "@modelcontextprotocol/sdk": "^1.0.0",
53
53
  "smol-toml": "^1.6.0",
54
54
  "zod": "^3.23.8"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/memory",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Semantic memory storage and retrieval system for agent-relay with multiple backend support",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -22,7 +22,7 @@
22
22
  "test:watch": "vitest"
23
23
  },
24
24
  "dependencies": {
25
- "@agent-relay/hooks": "2.0.32"
25
+ "@agent-relay/hooks": "2.0.33"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/node": "^22.19.3",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/policy",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Agent policy management with multi-level fallback (repo, local PRPM, cloud workspace)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -22,7 +22,7 @@
22
22
  "test:watch": "vitest"
23
23
  },
24
24
  "dependencies": {
25
- "@agent-relay/config": "2.0.32"
25
+ "@agent-relay/config": "2.0.33"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/node": "^22.19.3",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/protocol",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Wire protocol types and framing for Agent Relay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/resiliency",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Health monitoring, logging, metrics, and crash resilience utilities for Agent Relay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/sdk",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Lightweight SDK for agent-to-agent communication via Agent Relay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -55,7 +55,7 @@
55
55
  "access": "public"
56
56
  },
57
57
  "dependencies": {
58
- "@agent-relay/protocol": "2.0.32"
58
+ "@agent-relay/protocol": "2.0.33"
59
59
  },
60
60
  "engines": {
61
61
  "node": ">=18.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/spawner",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Agent spawning types and utilities for Agent Relay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/state",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Agent state persistence for non-hook CLIs (Codex, Gemini, etc.)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/storage",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Storage adapters and interfaces for Relay message/session persistence",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -56,7 +56,7 @@
56
56
  }
57
57
  },
58
58
  "dependencies": {
59
- "@agent-relay/protocol": "2.0.32"
59
+ "@agent-relay/protocol": "2.0.33"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@types/node": "^22.19.3",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/telemetry",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Anonymous telemetry for Agent Relay usage analytics",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/trajectory",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Trajectory integration utilities (trail/PDERO) for Relay",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -22,7 +22,7 @@
22
22
  "test:watch": "vitest"
23
23
  },
24
24
  "dependencies": {
25
- "@agent-relay/config": "2.0.32"
25
+ "@agent-relay/config": "2.0.33"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/node": "^22.19.3",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/user-directory",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "User directory service for agent-relay (per-user credential storage)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -22,7 +22,7 @@
22
22
  "test:watch": "vitest"
23
23
  },
24
24
  "dependencies": {
25
- "@agent-relay/resiliency": "2.0.32"
25
+ "@agent-relay/resiliency": "2.0.33"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/node": "^22.19.3",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/utils",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "Shared utilities for agent-relay: logging, name generation, command resolution, update checking",
5
5
  "type": "module",
6
6
  "main": "dist/cjs/index.js",
@@ -94,7 +94,7 @@
94
94
  "vitest": "^3.2.4"
95
95
  },
96
96
  "dependencies": {
97
- "@agent-relay/protocol": "2.0.32",
97
+ "@agent-relay/protocol": "2.0.33",
98
98
  "compare-versions": "^6.1.1"
99
99
  },
100
100
  "publishConfig": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-relay/wrapper",
3
- "version": "2.0.32",
3
+ "version": "2.0.33",
4
4
  "description": "CLI agent wrappers for Agent Relay - tmux, pty integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -30,11 +30,11 @@
30
30
  "clean": "rm -rf dist"
31
31
  },
32
32
  "dependencies": {
33
- "@agent-relay/api-types": "2.0.32",
34
- "@agent-relay/protocol": "2.0.32",
35
- "@agent-relay/config": "2.0.32",
36
- "@agent-relay/continuity": "2.0.32",
37
- "@agent-relay/resiliency": "2.0.32"
33
+ "@agent-relay/api-types": "2.0.33",
34
+ "@agent-relay/protocol": "2.0.33",
35
+ "@agent-relay/config": "2.0.33",
36
+ "@agent-relay/continuity": "2.0.33",
37
+ "@agent-relay/resiliency": "2.0.33"
38
38
  },
39
39
  "devDependencies": {
40
40
  "typescript": "^5.9.3",
@@ -279,6 +279,132 @@ function hasSystemTmux() {
279
279
  }
280
280
  }
281
281
 
282
+ /**
283
+ * Setup workspace package symlinks for global/bundled installs.
284
+ *
285
+ * When agent-relay is installed globally (npm install -g), the workspace packages
286
+ * are included in the tarball at packages/* but Node.js module resolution expects
287
+ * them at node_modules/@agent-relay/*. This function creates symlinks to bridge
288
+ * the gap.
289
+ *
290
+ * This is needed because npm's bundledDependencies doesn't properly handle
291
+ * workspace packages (which are symlinks during development).
292
+ */
293
+ function setupWorkspacePackageLinks() {
294
+ const pkgRoot = getPackageRoot();
295
+ const packagesDir = path.join(pkgRoot, 'packages');
296
+ const nodeModulesDir = path.join(pkgRoot, 'node_modules');
297
+ const scopeDir = path.join(nodeModulesDir, '@agent-relay');
298
+
299
+ // Check if packages/ exists (we're in a bundled/global install)
300
+ if (!fs.existsSync(packagesDir)) {
301
+ // Not a bundled install, workspace packages should be in node_modules already
302
+ return { needed: false };
303
+ }
304
+
305
+ // Check if node_modules/@agent-relay/daemon exists
306
+ const testPackage = path.join(scopeDir, 'daemon');
307
+ if (fs.existsSync(testPackage)) {
308
+ // Already set up (either normal npm install or previously linked)
309
+ info('Workspace packages already available in node_modules');
310
+ return { needed: false, alreadySetup: true };
311
+ }
312
+
313
+ // We need to create symlinks
314
+ info('Setting up workspace package links for global install...');
315
+
316
+ // Create node_modules/@agent-relay/ directory
317
+ try {
318
+ fs.mkdirSync(scopeDir, { recursive: true });
319
+ } catch (err) {
320
+ warn(`Failed to create @agent-relay scope directory: ${err.message}`);
321
+ return { needed: true, success: false, error: err.message };
322
+ }
323
+
324
+ // Map from package directory name to npm package name
325
+ const packageDirs = fs.readdirSync(packagesDir).filter(dir => {
326
+ const pkgJsonPath = path.join(packagesDir, dir, 'package.json');
327
+ return fs.existsSync(pkgJsonPath);
328
+ });
329
+
330
+ let linked = 0;
331
+ let failed = 0;
332
+ const errors = [];
333
+
334
+ for (const dir of packageDirs) {
335
+ const sourcePath = path.join(packagesDir, dir);
336
+ const targetPath = path.join(scopeDir, dir);
337
+
338
+ // Skip if already exists
339
+ if (fs.existsSync(targetPath)) {
340
+ continue;
341
+ }
342
+
343
+ try {
344
+ // Use relative symlink for portability
345
+ const relativeSource = path.relative(scopeDir, sourcePath);
346
+ fs.symlinkSync(relativeSource, targetPath, 'dir');
347
+ linked++;
348
+ } catch (err) {
349
+ // If symlink fails (e.g., on Windows without admin), try copying
350
+ try {
351
+ // Copy the package directory
352
+ copyDirSync(sourcePath, targetPath);
353
+ linked++;
354
+ } catch (copyErr) {
355
+ failed++;
356
+ errors.push(`${dir}: ${copyErr.message}`);
357
+ }
358
+ }
359
+ }
360
+
361
+ if (linked > 0) {
362
+ success(`Linked ${linked} workspace packages to node_modules/@agent-relay/`);
363
+ }
364
+
365
+ if (failed > 0) {
366
+ warn(`Failed to link ${failed} packages: ${errors.join(', ')}`);
367
+ return { needed: true, success: false, linked, failed, errors };
368
+ }
369
+
370
+ return { needed: true, success: true, linked };
371
+ }
372
+
373
+ /**
374
+ * Recursively copy a directory
375
+ */
376
+ function copyDirSync(src, dest) {
377
+ fs.mkdirSync(dest, { recursive: true });
378
+ const entries = fs.readdirSync(src, { withFileTypes: true });
379
+
380
+ for (const entry of entries) {
381
+ const srcPath = path.join(src, entry.name);
382
+ const destPath = path.join(dest, entry.name);
383
+
384
+ // Skip node_modules in package copies
385
+ if (entry.name === 'node_modules') {
386
+ continue;
387
+ }
388
+
389
+ if (entry.isDirectory()) {
390
+ copyDirSync(srcPath, destPath);
391
+ } else if (entry.isSymbolicLink()) {
392
+ // Resolve symlink and copy the target
393
+ const linkTarget = fs.readlinkSync(srcPath);
394
+ const resolvedTarget = path.resolve(path.dirname(srcPath), linkTarget);
395
+ if (fs.existsSync(resolvedTarget)) {
396
+ if (fs.statSync(resolvedTarget).isDirectory()) {
397
+ copyDirSync(resolvedTarget, destPath);
398
+ } else {
399
+ fs.copyFileSync(resolvedTarget, destPath);
400
+ }
401
+ }
402
+ } else {
403
+ fs.copyFileSync(srcPath, destPath);
404
+ }
405
+ }
406
+ }
407
+
282
408
  /**
283
409
  * Install dashboard dependencies
284
410
  */
@@ -362,7 +488,16 @@ function patchAgentTrajectories() {
362
488
  success('Patched agent-trajectories to record agent on trail start');
363
489
  }
364
490
 
365
- function logPostinstallDiagnostics(hasRelayPty, sqliteStatus) {
491
+ function logPostinstallDiagnostics(hasRelayPty, sqliteStatus, linkResult) {
492
+ // Workspace packages status (for global installs)
493
+ if (linkResult && linkResult.needed) {
494
+ if (linkResult.success) {
495
+ console.log(`✓ Workspace packages linked (${linkResult.linked} packages)`);
496
+ } else {
497
+ console.log('⚠ Workspace package linking failed - CLI may not work');
498
+ }
499
+ }
500
+
366
501
  if (hasRelayPty) {
367
502
  console.log('✓ relay-pty binary installed');
368
503
  } else {
@@ -388,6 +523,16 @@ function logPostinstallDiagnostics(hasRelayPty, sqliteStatus) {
388
523
  * Main postinstall routine
389
524
  */
390
525
  async function main() {
526
+ // Setup workspace package links for global installs
527
+ // This MUST run first so that other postinstall steps can find the packages
528
+ const linkResult = setupWorkspacePackageLinks();
529
+ if (linkResult.needed && !linkResult.success) {
530
+ warn('Workspace package linking failed - CLI may not work correctly');
531
+ if (linkResult.errors) {
532
+ linkResult.errors.forEach(e => warn(` ${e}`));
533
+ }
534
+ }
535
+
391
536
  // Install relay-pty binary for current platform (primary mode)
392
537
  const hasRelayPty = installRelayPtyBinary();
393
538
 
@@ -401,7 +546,7 @@ async function main() {
401
546
  installDashboardDeps();
402
547
 
403
548
  // Always print diagnostics (even in CI)
404
- logPostinstallDiagnostics(hasRelayPty, sqliteStatus);
549
+ logPostinstallDiagnostics(hasRelayPty, sqliteStatus, linkResult);
405
550
 
406
551
  // Skip tmux check in CI environments
407
552
  if (process.env.CI === 'true') {