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 +18 -18
- package/packages/api-types/package.json +1 -1
- package/packages/benchmark/package.json +4 -4
- package/packages/bridge/package.json +8 -8
- package/packages/cli-tester/package.json +1 -1
- package/packages/config/package.json +2 -2
- package/packages/continuity/package.json +1 -1
- package/packages/daemon/package.json +12 -12
- package/packages/hooks/package.json +4 -4
- package/packages/mcp/package.json +3 -3
- package/packages/memory/package.json +2 -2
- package/packages/policy/package.json +2 -2
- package/packages/protocol/package.json +1 -1
- package/packages/resiliency/package.json +1 -1
- package/packages/sdk/package.json +2 -2
- package/packages/spawner/package.json +1 -1
- package/packages/state/package.json +1 -1
- package/packages/storage/package.json +2 -2
- package/packages/telemetry/package.json +1 -1
- package/packages/trajectory/package.json +2 -2
- package/packages/user-directory/package.json +2 -2
- package/packages/utils/package.json +2 -2
- package/packages/wrapper/package.json +6 -6
- package/scripts/postinstall.js +147 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-relay",
|
|
3
|
-
"version": "2.0.
|
|
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.
|
|
133
|
-
"@agent-relay/config": "2.0.
|
|
134
|
-
"@agent-relay/continuity": "2.0.
|
|
135
|
-
"@agent-relay/daemon": "2.0.
|
|
136
|
-
"@agent-relay/hooks": "2.0.
|
|
137
|
-
"@agent-relay/mcp": "2.0.
|
|
138
|
-
"@agent-relay/protocol": "2.0.
|
|
139
|
-
"@agent-relay/resiliency": "2.0.
|
|
140
|
-
"@agent-relay/sdk": "2.0.
|
|
141
|
-
"@agent-relay/spawner": "2.0.
|
|
142
|
-
"@agent-relay/state": "2.0.
|
|
143
|
-
"@agent-relay/storage": "2.0.
|
|
144
|
-
"@agent-relay/telemetry": "2.0.
|
|
145
|
-
"@agent-relay/trajectory": "2.0.
|
|
146
|
-
"@agent-relay/user-directory": "2.0.
|
|
147
|
-
"@agent-relay/utils": "2.0.
|
|
148
|
-
"@agent-relay/wrapper": "2.0.
|
|
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/benchmark",
|
|
3
|
-
"version": "2.0.
|
|
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.
|
|
58
|
-
"@agent-relay/protocol": "2.0.
|
|
59
|
-
"@agent-relay/spawner": "2.0.
|
|
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.
|
|
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.
|
|
26
|
-
"@agent-relay/config": "2.0.
|
|
27
|
-
"@agent-relay/utils": "2.0.
|
|
28
|
-
"@agent-relay/policy": "2.0.
|
|
29
|
-
"@agent-relay/user-directory": "2.0.
|
|
30
|
-
"@agent-relay/wrapper": "2.0.
|
|
31
|
-
"@agent-relay/mcp": "2.0.
|
|
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/config",
|
|
3
|
-
"version": "2.0.
|
|
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.
|
|
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/daemon",
|
|
3
|
-
"version": "2.0.
|
|
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.
|
|
26
|
-
"@agent-relay/config": "2.0.
|
|
27
|
-
"@agent-relay/storage": "2.0.
|
|
28
|
-
"@agent-relay/bridge": "2.0.
|
|
29
|
-
"@agent-relay/utils": "2.0.
|
|
30
|
-
"@agent-relay/policy": "2.0.
|
|
31
|
-
"@agent-relay/memory": "2.0.
|
|
32
|
-
"@agent-relay/resiliency": "2.0.
|
|
33
|
-
"@agent-relay/user-directory": "2.0.
|
|
34
|
-
"@agent-relay/wrapper": "2.0.
|
|
35
|
-
"@agent-relay/telemetry": "2.0.
|
|
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.
|
|
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.
|
|
41
|
-
"@agent-relay/config": "2.0.
|
|
42
|
-
"@agent-relay/trajectory": "2.0.
|
|
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.
|
|
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.
|
|
51
|
-
"@agent-relay/protocol": "2.0.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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/sdk",
|
|
3
|
-
"version": "2.0.
|
|
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.
|
|
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/storage",
|
|
3
|
-
"version": "2.0.
|
|
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.
|
|
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/trajectory",
|
|
3
|
-
"version": "2.0.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
34
|
-
"@agent-relay/protocol": "2.0.
|
|
35
|
-
"@agent-relay/config": "2.0.
|
|
36
|
-
"@agent-relay/continuity": "2.0.
|
|
37
|
-
"@agent-relay/resiliency": "2.0.
|
|
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",
|
package/scripts/postinstall.js
CHANGED
|
@@ -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') {
|