agent-relay 2.2.21 → 2.2.24
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/dist/index.cjs +199 -3
- package/dist/src/cli/index.js +445 -293
- package/dist/src/cli/index.js.map +1 -1
- package/package.json +18 -18
- package/packages/acp-bridge/package.json +2 -2
- package/packages/api-types/package.json +1 -1
- package/packages/benchmark/package.json +5 -5
- package/packages/bridge/package.json +7 -7
- package/packages/cli-tester/package.json +1 -1
- package/packages/config/package.json +2 -2
- package/packages/continuity/package.json +2 -2
- package/packages/daemon/dist/cloud-sync.d.ts +13 -1
- package/packages/daemon/dist/cloud-sync.d.ts.map +1 -1
- package/packages/daemon/dist/cloud-sync.js +169 -5
- package/packages/daemon/dist/cloud-sync.js.map +1 -1
- package/packages/daemon/dist/server.d.ts +5 -0
- package/packages/daemon/dist/server.d.ts.map +1 -1
- package/packages/daemon/dist/server.js +50 -0
- package/packages/daemon/dist/server.js.map +1 -1
- package/packages/daemon/package.json +12 -12
- package/packages/daemon/src/cloud-sync.ts +201 -5
- package/packages/daemon/src/server.ts +61 -0
- package/packages/hooks/package.json +4 -4
- package/packages/mcp/package.json +5 -5
- 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/dist/client.d.ts +1 -1
- package/packages/sdk/dist/client.js +2 -2
- package/packages/sdk/package.json +3 -3
- package/packages/sdk/src/client.ts +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 +3 -3
- package/packages/wrapper/dist/client.js +1 -1
- package/packages/wrapper/package.json +6 -6
- package/packages/wrapper/src/client.test.ts +1 -1
- package/packages/wrapper/src/client.ts +1 -1
|
@@ -786,6 +786,12 @@ export class Daemon {
|
|
|
786
786
|
to: msg.to,
|
|
787
787
|
});
|
|
788
788
|
|
|
789
|
+
// Handle spawn commands from cloud
|
|
790
|
+
if (msg.to === '__spawner__' && msg.metadata?.type === 'spawn_command') {
|
|
791
|
+
this.handleCloudSpawnCommand(msg);
|
|
792
|
+
return;
|
|
793
|
+
}
|
|
794
|
+
|
|
789
795
|
// Find local agent
|
|
790
796
|
const targetConnection = Array.from(this.connections).find(
|
|
791
797
|
c => c.agentName === msg.to
|
|
@@ -819,6 +825,61 @@ export class Daemon {
|
|
|
819
825
|
this.router.route(targetConnection, envelope);
|
|
820
826
|
}
|
|
821
827
|
|
|
828
|
+
/**
|
|
829
|
+
* Handle a spawn command received from the cloud (e.g., Slack orchestrator).
|
|
830
|
+
* Parses the spawn_agent command and uses SpawnManager to spawn the agent locally.
|
|
831
|
+
*/
|
|
832
|
+
private async handleCloudSpawnCommand(msg: CrossMachineMessage): Promise<void> {
|
|
833
|
+
if (!this.spawnManager) {
|
|
834
|
+
log.warn('Cannot handle cloud spawn command: SpawnManager not enabled');
|
|
835
|
+
return;
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
try {
|
|
839
|
+
const command = JSON.parse(msg.content) as {
|
|
840
|
+
type: string;
|
|
841
|
+
agentName: string;
|
|
842
|
+
cli: string;
|
|
843
|
+
task?: string;
|
|
844
|
+
metadata?: Record<string, unknown>;
|
|
845
|
+
};
|
|
846
|
+
|
|
847
|
+
if (command.type !== 'spawn_agent') {
|
|
848
|
+
log.warn('Unknown cloud spawn command type', { type: command.type });
|
|
849
|
+
return;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
log.info('Spawning agent from cloud command', {
|
|
853
|
+
name: command.agentName,
|
|
854
|
+
cli: command.cli,
|
|
855
|
+
source: msg.from.agent,
|
|
856
|
+
});
|
|
857
|
+
|
|
858
|
+
const spawner = this.spawnManager.getSpawner();
|
|
859
|
+
const result = await spawner.spawn({
|
|
860
|
+
name: command.agentName,
|
|
861
|
+
cli: command.cli,
|
|
862
|
+
task: command.task || 'You were spawned by the cloud orchestrator. Check your inbox for messages.',
|
|
863
|
+
spawnerName: msg.from.agent,
|
|
864
|
+
});
|
|
865
|
+
|
|
866
|
+
if (result.success) {
|
|
867
|
+
log.info('Cloud-spawned agent started', {
|
|
868
|
+
name: command.agentName,
|
|
869
|
+
pid: result.pid,
|
|
870
|
+
});
|
|
871
|
+
} else {
|
|
872
|
+
log.error('Cloud spawn failed', {
|
|
873
|
+
name: command.agentName,
|
|
874
|
+
error: result.error,
|
|
875
|
+
});
|
|
876
|
+
}
|
|
877
|
+
} catch (err: unknown) {
|
|
878
|
+
const error = err instanceof Error ? err.message : String(err);
|
|
879
|
+
log.error('Failed to parse cloud spawn command', { error });
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
|
|
822
883
|
/**
|
|
823
884
|
* Send message to agent on another machine via cloud.
|
|
824
885
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/hooks",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.24",
|
|
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.2.
|
|
41
|
-
"@agent-relay/config": "2.2.
|
|
42
|
-
"@agent-relay/trajectory": "2.2.
|
|
40
|
+
"@agent-relay/protocol": "2.2.24",
|
|
41
|
+
"@agent-relay/config": "2.2.24",
|
|
42
|
+
"@agent-relay/trajectory": "2.2.24"
|
|
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.2.
|
|
3
|
+
"version": "2.2.24",
|
|
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,15 +47,15 @@
|
|
|
47
47
|
"prepublishOnly": "npm run clean && npm run build && npm test"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@agent-relay/config": "2.2.
|
|
51
|
-
"@agent-relay/protocol": "2.2.
|
|
52
|
-
"@agent-relay/utils": "2.2.
|
|
50
|
+
"@agent-relay/config": "2.2.24",
|
|
51
|
+
"@agent-relay/protocol": "2.2.24",
|
|
52
|
+
"@agent-relay/utils": "2.2.24",
|
|
53
53
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
54
54
|
"smol-toml": "^1.6.0",
|
|
55
55
|
"zod": "^3.23.8"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@agent-relay/sdk": "2.2.
|
|
58
|
+
"@agent-relay/sdk": "2.2.24",
|
|
59
59
|
"@types/node": "^22.19.3",
|
|
60
60
|
"typescript": "^5.9.3",
|
|
61
61
|
"vitest": "^2.1.9"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/memory",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.24",
|
|
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.2.
|
|
25
|
+
"@agent-relay/hooks": "2.2.24"
|
|
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.2.
|
|
3
|
+
"version": "2.2.24",
|
|
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.2.
|
|
25
|
+
"@agent-relay/config": "2.2.24"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.19.3",
|
|
@@ -245,7 +245,7 @@ export declare class RelayClient {
|
|
|
245
245
|
* @param options.shadowSpeakOn - Shadow speak-on triggers
|
|
246
246
|
* @param options.waitForReady - Wait for the agent to be ready before resolving (default: false)
|
|
247
247
|
* @param options.readyTimeoutMs - Timeout for agent to become ready (default: 60000ms)
|
|
248
|
-
* @param timeoutMs - Timeout for spawn operation (default:
|
|
248
|
+
* @param timeoutMs - Timeout for spawn operation (default: 60000ms)
|
|
249
249
|
* @returns Spawn result. When waitForReady is true, includes `ready` and `readyInfo` fields.
|
|
250
250
|
*/
|
|
251
251
|
spawn(options: {
|
|
@@ -513,10 +513,10 @@ export class RelayClient {
|
|
|
513
513
|
* @param options.shadowSpeakOn - Shadow speak-on triggers
|
|
514
514
|
* @param options.waitForReady - Wait for the agent to be ready before resolving (default: false)
|
|
515
515
|
* @param options.readyTimeoutMs - Timeout for agent to become ready (default: 60000ms)
|
|
516
|
-
* @param timeoutMs - Timeout for spawn operation (default:
|
|
516
|
+
* @param timeoutMs - Timeout for spawn operation (default: 60000ms)
|
|
517
517
|
* @returns Spawn result. When waitForReady is true, includes `ready` and `readyInfo` fields.
|
|
518
518
|
*/
|
|
519
|
-
async spawn(options, timeoutMs =
|
|
519
|
+
async spawn(options, timeoutMs = 60000) {
|
|
520
520
|
if (this._state !== 'READY') {
|
|
521
521
|
throw new Error('Client not ready');
|
|
522
522
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/sdk",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.24",
|
|
4
4
|
"description": "Lightweight SDK for agent-to-agent communication via Agent Relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -77,8 +77,8 @@
|
|
|
77
77
|
"access": "public"
|
|
78
78
|
},
|
|
79
79
|
"dependencies": {
|
|
80
|
-
"@agent-relay/protocol": "2.2.
|
|
81
|
-
"@agent-relay/utils": "2.2.
|
|
80
|
+
"@agent-relay/protocol": "2.2.24",
|
|
81
|
+
"@agent-relay/utils": "2.2.24"
|
|
82
82
|
},
|
|
83
83
|
"engines": {
|
|
84
84
|
"node": ">=18.0.0"
|
|
@@ -782,7 +782,7 @@ export class RelayClient {
|
|
|
782
782
|
* @param options.shadowSpeakOn - Shadow speak-on triggers
|
|
783
783
|
* @param options.waitForReady - Wait for the agent to be ready before resolving (default: false)
|
|
784
784
|
* @param options.readyTimeoutMs - Timeout for agent to become ready (default: 60000ms)
|
|
785
|
-
* @param timeoutMs - Timeout for spawn operation (default:
|
|
785
|
+
* @param timeoutMs - Timeout for spawn operation (default: 60000ms)
|
|
786
786
|
* @returns Spawn result. When waitForReady is true, includes `ready` and `readyInfo` fields.
|
|
787
787
|
*/
|
|
788
788
|
async spawn(
|
|
@@ -811,7 +811,7 @@ export class RelayClient {
|
|
|
811
811
|
/** Timeout for agent to become ready (default: 60000ms). Only used when waitForReady is true. */
|
|
812
812
|
readyTimeoutMs?: number;
|
|
813
813
|
},
|
|
814
|
-
timeoutMs =
|
|
814
|
+
timeoutMs = 60000
|
|
815
815
|
): Promise<SpawnResult> {
|
|
816
816
|
if (this._state !== 'READY') {
|
|
817
817
|
throw new Error('Client not ready');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/storage",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.24",
|
|
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.2.
|
|
59
|
+
"@agent-relay/protocol": "2.2.24"
|
|
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.2.
|
|
3
|
+
"version": "2.2.24",
|
|
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.2.
|
|
25
|
+
"@agent-relay/config": "2.2.24"
|
|
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.2.
|
|
3
|
+
"version": "2.2.24",
|
|
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.2.
|
|
25
|
+
"@agent-relay/resiliency": "2.2.24"
|
|
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.2.
|
|
3
|
+
"version": "2.2.24",
|
|
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",
|
|
@@ -112,8 +112,8 @@
|
|
|
112
112
|
"vitest": "^3.2.4"
|
|
113
113
|
},
|
|
114
114
|
"dependencies": {
|
|
115
|
-
"@agent-relay/config": "2.2.
|
|
116
|
-
"@agent-relay/protocol": "2.2.
|
|
115
|
+
"@agent-relay/config": "2.2.24",
|
|
116
|
+
"@agent-relay/protocol": "2.2.24",
|
|
117
117
|
"compare-versions": "^6.1.1"
|
|
118
118
|
},
|
|
119
119
|
"publishConfig": {
|
|
@@ -568,7 +568,7 @@ export class RelayClient {
|
|
|
568
568
|
shadowTriggers: options.shadowTriggers,
|
|
569
569
|
shadowSpeakOn: options.shadowSpeakOn,
|
|
570
570
|
};
|
|
571
|
-
const result = await this.requestResponse('SPAWN', payload,
|
|
571
|
+
const result = await this.requestResponse('SPAWN', payload, 60000 // 60 second timeout for spawn
|
|
572
572
|
);
|
|
573
573
|
return toSpawnResult(result);
|
|
574
574
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/wrapper",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.24",
|
|
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.2.
|
|
34
|
-
"@agent-relay/protocol": "2.2.
|
|
35
|
-
"@agent-relay/config": "2.2.
|
|
36
|
-
"@agent-relay/continuity": "2.2.
|
|
37
|
-
"@agent-relay/resiliency": "2.2.
|
|
33
|
+
"@agent-relay/api-types": "2.2.24",
|
|
34
|
+
"@agent-relay/protocol": "2.2.24",
|
|
35
|
+
"@agent-relay/config": "2.2.24",
|
|
36
|
+
"@agent-relay/continuity": "2.2.24",
|
|
37
|
+
"@agent-relay/resiliency": "2.2.24",
|
|
38
38
|
"zod": "^3.23.8"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
@@ -750,7 +750,7 @@ export class RelayClient {
|
|
|
750
750
|
const result = await this.requestResponse<SpawnResultPayload>(
|
|
751
751
|
'SPAWN',
|
|
752
752
|
payload as unknown as Record<string, unknown>,
|
|
753
|
-
|
|
753
|
+
60000 // 60 second timeout for spawn
|
|
754
754
|
);
|
|
755
755
|
|
|
756
756
|
return toSpawnResult(result);
|